上一篇介绍了数码管的使用,一位数码管可显示数字0到9。本篇使用random()函数产生随机数并在数码管上进行显示,制作一个随机骰子。
在Arduino中,random()函数用来产生伪随机数,可以传入一个区间,产生此区间内的随机数。通常情况下,在使用random()函数之前,需要使用randomSeed()来初始化随机数生成器,指定一个随机数种子。
1. 实验材料
Uno R3开发板
配套USB数据线
面包板及配套连接线
共阴极数码管
1个220Ω限流电阻
2. 实验步骤
1. 根据原理图搭建电路。
数码管的A,B,C,D,E,F,G,DP引脚分别接入开发板的数字管脚7,6,5,10,11,8,9,4。数码管公共端接限流电阻,电阻另一端接GND。
实验原理图如下图所示:
实验原理图
实物连接图如下图所示:
实物连接图
2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
/* Random 通过Random随机显示0到9的数字 *///设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。int pin_a = 7;int pin_b = 6;int pin_c = 5;int pin_d = 10;int pin_e = 11;int pin_f = 8;int pin_g = 9;int pin_p = 4;int num;//根据共阴极数码管段码表定义0~9显示的各段开关状态int numTable[10][8] = { //1为点亮,0为关闭 //a b c d e f g dp {1, 1, 1, 1, 1, 1, 0, 0}, //0 {0, 1, 1, 0, 0, 0, 0, 0}, //1 {1, 1, 0, 1, 1, 0, 1, 0}, //2 {1, 1, 1, 1, 0, 0, 1, 0}, //3 {0, 1, 1, 0, 0, 1, 1, 0}, //4 {1, 0, 1, 1, 0, 1, 1, 0}, //5 {1, 0, 1, 1, 1, 1, 1, 0}, //6 {1, 1, 1, 0, 0, 0, 0, 0}, //7 {1, 1, 1, 1, 1, 1, 1, 0}, //8 {1, 1, 1, 1, 0, 1, 1, 0}, //9};void setup(){ for (int i = 4; i <= 11; i++) { pinMode(i, OUTPUT); //设置4~11引脚为输出模式 } randomSeed(analogRead(0)); }//根据索引显示数字void showNum(int index){ digitalWrite(pin_a, numTable[index][0]); //设置a 引脚的电平 digitalWrite(pin_b, numTable[index][1]); //设置b 引脚的电平 digitalWrite(pin_c, numTable[index][2]); //设置c 引脚的电平 digitalWrite(pin_d, numTable[index][3]); //设置d 引脚的电平 digitalWrite(pin_e, numTable[index][4]); //设置e 引脚的电平 digitalWrite(pin_f, numTable[index][5]); //设置f 引脚的电平 digitalWrite(pin_g, numTable[index][6]); //设置g 引脚的电平 digitalWrite(pin_p, numTable[index][7]); //设置dp引脚的电平}void loop(){ num = random(10); //产生随机数 showNum(num); //显示随机数 delay(500); }
3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载
3. 实验现象
随机显示0到9之间的数字。
实验现象
4. 函数介绍
random()
描述:生成伪随机数。
函数原型:
random(max)
random(min,max)
参数:
min: 随机数区间下限值,且包括在内。此参数可选,省略则从0开始。
max: 随机数区间上限值,且不包括在内。
返回值:min和max-1之间的随机数。
randomSeed()
描述:初始化随机数生成器。
函数原型:randomSeed(seed)
参数:用于初始化伪随机序列的数字,随机数种子。
返回值:没有。
作者:TonyCode
链接:https://www.jianshu.com/p/83e5885c2bb3
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦