猜数字案例

有一位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 案例:按下按钮生成一位随机数字,在数码管中显示相关推荐

  1. Arduino学习笔记(1):太极创客 第一部分

    Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...

  2. Arduino学习笔记2

    一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...

  3. arduino 学习笔记及课件01基础入门

    arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...

  4. Pyqt学习笔记(1) ----- 创建按钮,并添加单击事件

    Pyqt学习笔记(1) ----- 创建按钮,并添加单击事件 from PyQt5 import QtCore, QtGui, QtWidgets import sys from PyQt5.QtGu ...

  5. oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...

    天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...

  6. HTML入门学习笔记+详细案例

    ✨HTML入门学习笔记+详细案例 作者介绍:

  7. 传智博客学习笔记8--面向对象下

    传智博客学习笔记8--面向对象下 2009-3-12 15:41:42 继承 extends 接口 interface 如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也 ...

  8. git学习笔记——Linux和Windows下git的基本操作

    git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...

  9. 13、《Libevent中文帮助文档》学习笔记13:Linux下集成、运行libevent

    Linux下编译libevent的指导可以参考<4.<Libevent中文帮助文档>学习笔记4:Linux下编译libevent>,完成编译.安装,生成so库后,其他程序即可依 ...

最新文章

  1. 2018牛客暑期ACM多校训练营第二场 - A题
  2. 10道海量数据处理的面试题
  3. adf4351_在ADF实体PK属性中使用MySQL自动增量PK列
  4. 中国人寿保险研发中心2021校招开始啦!
  5. 实现UILabel渐变色效果
  6. python3网络爬虫开发实战下载_【Python3网络爬虫开发实战】 1.1-Python3的安装
  7. 2019-03-18-算法-进化(字符串中的第一个唯一字符)
  8. docker版mysql的使用和配置(2)——docker版mysql的dockerfile
  9. kali rolling source 16.1~~18.2
  10. hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
  11. 观音菩萨是企业家和领导者的好榜样
  12. 多拨软件测试,虚拟机下多拨与OP下多拨测试
  13. pikachu SQL 注入(皮卡丘漏洞平台通关系列)
  14. 服务名无效。 请键入 NET HELPMSG 2185 以获得更多的帮助。
  15. 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...
  16. mac pdf去水印_PDF水印工具for Mac-PDF水印工具Mac版下载 V1.7-PC6苹果网
  17. 多目视觉三维重建研究综述
  18. SMBus与I2C的区别
  19. Core Audio I/O File Recording
  20. 公众号怎么赚钱新思路,这么运营你也可以轻松获得睡后收入!

热门文章

  1. 关于mapv点击事件无法点中问题
  2. thinkphp5.1中间件是什么,有什么用
  3. Unity_粒子特效_序列帧
  4. 中软国际实训全记录——第七天
  5. mc启动器没有找到java运行_我的世界无法启动游戏解决办法
  6. 单片机该不该用C++?
  7. Inside Java Newscast #1 深度解读
  8. Nginx安装rtmp模块及配置
  9. CTF-APK经典题目-移动安全
  10. python分支判断语句_python 分支语句 等值判断 逻辑运算符