Arduino基礎入門篇15—隨機骰子

lee_lgw發表於2021-09-09

上一篇介紹了數碼管的使用,一位數碼管可顯示數字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
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2816246/,如需轉載,請註明出處,否則將追究法律責任。

相關文章