Arduino基础入门篇15—随机骰子

|

    阅读本文大概需要5分钟。

|

上一篇介绍了数码管的使用,一位数码管可显示数字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。

    实验原理图如下图所示:

    Arduino基础入门篇15—随机骰子
    实验原理图g

    实物连接图如下图所示:

    Arduino基础入门篇15—随机骰子
    实物连接图
  2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     1/*
    2      Random
    3      通过Random随机显示0到9的数字
    4*/

    5
    6//设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
    7int  pin_a  =  7;
    8int  pin_b  =  6;
    9int  pin_c  =  5;
    10int  pin_d  =  10;
    11int  pin_e  =  11;
    12int  pin_f  =  8;
    13int  pin_g  =  9;
    14int  pin_p  =  4;
    15
    16int  num;
    17
    18//根据共阴极数码管段码表定义0~9显示的各段开关状态
    19int  numTable[10][8]  =  {
    20    //1为点亮,0为关闭
    21    //a    b    c    d    e    f    g    dp
    22    {11111100 },          //0
    23    {01100000 },          //1
    24    {11011010 },          //2
    25    {11110010 },          //3
    26    {01100110 },          //4
    27    {10110110 },          //5
    28    {10111110 },          //6
    29    {11100000 },          //7
    30    {11111110 },          //8
    31    {11110110 },          //9
    32 };
    33
    34
    35void  setup()
    36
    {
    37    for  (int  i  =  4;   i  <=  11;   i++)
    38    {
    39        pinMode(i,  OUTPUT);   //设置4~11引脚为输出模式
    40    }
    41
    42    randomSeed(analogRead(0));
    43 }
    44
    45//根据索引显示数字
    46void  showNum(int  index)
    47
    {
    48    digitalWrite(pin_a,  numTable[index][0]);   //设置a  引脚的电平
    49    digitalWrite(pin_b,  numTable[index][1]);   //设置b  引脚的电平
    50    digitalWrite(pin_c,  numTable[index][2]);   //设置c  引脚的电平
    51    digitalWrite(pin_d,  numTable[index][3]);   //设置d  引脚的电平
    52    digitalWrite(pin_e,  numTable[index][4]);   //设置e  引脚的电平
    53    digitalWrite(pin_f,  numTable[index][5]);   //设置f  引脚的电平
    54    digitalWrite(pin_g,  numTable[index][6]);   //设置g  引脚的电平
    55    digitalWrite(pin_p,  numTable[index][7]);   //设置dp引脚的电平
    56
    57 }
    58
    59void  loop()
    60
    {
    61    num  =  random(10);   //产生随机数
    62    showNum(num);   //显示随机数
    63    delay(500);
    64 }
  3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    Arduino基础入门篇15—随机骰子
    程序下载

3. 实验现象

随机显示0到9之间的数字。

Arduino基础入门篇15—随机骰子
实验现象

4. 函数介绍

random()

  • 描述:生成伪随机数。

  • 函数原型:

    • random(max)

    • random(min,max)

  • 参数:

    • min: 随机数区间下限值,且包括在内。此参数可选,省略则从0开始。

    • max: 随机数区间上限值,且不包括在内。

  • 返回值:min和max-1之间的随机数。

randomSeed()

  • 描述:初始化随机数生成器。

  • 函数原型:randomSeed(seed)

  • 参数:用于初始化伪随机序列的数字,随机数种子。

  • 返回值:没有。

5. 实验分析

程序中通过randomSeed()函数来初始化随机数生成器。当模拟管脚0悬空时,使用analogRead(0)读取到的是不确定的模拟噪声,用它来做随机种子,可获取到更加理想的随机数。在使用random()函数时,参数中区间上限是不包括在内的。比如想生成[10,20]之间的随机数,则应该这样写:random(10,21)。


Arduino基础入门篇15—随机骰子

扫码加入微信公众号:TonyCode


原文始发于微信公众号(

TonyCode

):Arduino基础入门篇15—随机骰子

|

发表评论