Arduino 学习笔记_3 案例:按下按钮生成一位随机数字,在数码管中显示
猜数字案例
有一位8段数码管,和一个按钮。每次按下按钮,随机生成一个0~9的数并在LED显示器上显示出来。
首先先可以参考下官网上的案例。这个案例是从0到9所有数字循环显示,里面用到了数码管对应引脚,while,switch case,自定义函数这些知识点。
/*
19 MC猜数字 - 1 电路搭建
太极创客
www.taichi-maker.com此程序用于太极创客<<零基础入门学用Arduino教程>>中,博主搬运只为学习!!!请支持原作者。
MC猜数字电路测试使用。2017-04-21
*/
void setup() {pinMode(2, INPUT_PULLUP);for (int i = 2; i <= 9; i++) {pinMode(i, OUTPUT);}}// the loop function runs over and over again forever
void loop() {int myNumber = 0;while(myNumber <= 9){displayNumber(myNumber);delay(500);displayClear();myNumber++;while(!digitalRead(2)){digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); }delay(500);}
}
void displayClear(){// 清理显示内容digitalWrite(3, LOW);digitalWrite(4, LOW);digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW);
}void displayNumber(int number){switch(number){case 1:digitalWrite(4, HIGH);digitalWrite(7, HIGH); break; case 2:digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 3:digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break; case 4:digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); break; case 5:digitalWrite(3, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break;case 6:digitalWrite(3, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 7:digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(7, HIGH); break;case 8:digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break;case 9:digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break;case 0:digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break;default:digitalWrite(5, HIGH); }
}
基本原理就是下面这张图:
a:3号引脚。
b:4号引脚。
c:7号引脚。
d:8号引脚。
e:9号引脚。
f:6号引脚。
g:5号引脚。
数码管的8段(包括小数点)都共用一个阴极,就是3或8出口。阴极通过一个200~500的电阻接GND。
while,switch case,自定义函数都和c差不多,看上面的例子就能明白。
改成按下按钮随机生成数,我们只需要改成:
int myNumber=0;
void loop() {while(!digitalRead(2)){//不按下按钮displayClear();myNumber=random(0,10);displayNumber(myNumber);}
}
第一次按下按钮,就会进入while,清空当前显示的字段,生成随机数并且显示该字段。因为不按下按钮就一直不会进入循环,清空显示,所以一直显示。
如果想查看随机数,可以在setup()中设置 Serial.begin(9600)
,loop中利用Serial.print(), Serial.println()
输出,注意Arduino中不能+号字符串拼接。
比较诡异的是random()是伪随机。每次程序重新启动,顺序都是一样的。用randomSeed()可以解决这个问题。
在setup()中加一句:
randomSeed(analogRead(A0)); //A0引脚防空,这样每次读到的都是不一样的。
Arduino 学习笔记_3 案例:按下按钮生成一位随机数字,在数码管中显示相关推荐
- Arduino学习笔记(1):太极创客 第一部分
Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...
- Arduino学习笔记2
一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...
- arduino 学习笔记及课件01基础入门
arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...
- Pyqt学习笔记(1) ----- 创建按钮,并添加单击事件
Pyqt学习笔记(1) ----- 创建按钮,并添加单击事件 from PyQt5 import QtCore, QtGui, QtWidgets import sys from PyQt5.QtGu ...
- oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...
天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...
- HTML入门学习笔记+详细案例
✨HTML入门学习笔记+详细案例 作者介绍:
- 传智博客学习笔记8--面向对象下
传智博客学习笔记8--面向对象下 2009-3-12 15:41:42 继承 extends 接口 interface 如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也 ...
- git学习笔记——Linux和Windows下git的基本操作
git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...
- 13、《Libevent中文帮助文档》学习笔记13:Linux下集成、运行libevent
Linux下编译libevent的指导可以参考<4.<Libevent中文帮助文档>学习笔记4:Linux下编译libevent>,完成编译.安装,生成so库后,其他程序即可依 ...
最新文章
- 2018牛客暑期ACM多校训练营第二场 - A题
- 10道海量数据处理的面试题
- adf4351_在ADF实体PK属性中使用MySQL自动增量PK列
- 中国人寿保险研发中心2021校招开始啦!
- 实现UILabel渐变色效果
- python3网络爬虫开发实战下载_【Python3网络爬虫开发实战】 1.1-Python3的安装
- 2019-03-18-算法-进化(字符串中的第一个唯一字符)
- docker版mysql的使用和配置(2)——docker版mysql的dockerfile
- kali rolling source 16.1~~18.2
- hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
- 观音菩萨是企业家和领导者的好榜样
- 多拨软件测试,虚拟机下多拨与OP下多拨测试
- pikachu SQL 注入(皮卡丘漏洞平台通关系列)
- 服务名无效。 请键入 NET HELPMSG 2185 以获得更多的帮助。
- 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...
- mac pdf去水印_PDF水印工具for Mac-PDF水印工具Mac版下载 V1.7-PC6苹果网
- 多目视觉三维重建研究综述
- SMBus与I2C的区别
- Core Audio I/O File Recording
- 公众号怎么赚钱新思路,这么运营你也可以轻松获得睡后收入!