【arduino數碼管實驗】疫情期間宅着沒事做?這個東西可以瞭解一下......

目錄


1.材料清單

2.實驗原理

3.代碼分析

4.總結



1.實驗材料
  
材料清單 型號&數量
arduino開發板 UNO*1
數碼管 5161BS(共陽極)*1
電阻 330Ω*1
導線 若干


2.實驗原理
  共陽極數碼管原理圖如下:  

引腳分佈圖:
在這裏插入圖片描述在這裏插入圖片描述  有了上面兩張圖,就可以動手連線了,A-G分別接在了板子上2-8引腳,搭建完成的板子是這樣的:

在這裏插入圖片描述
廢話不說,直接寫代碼。


3.代碼分析

(完整代碼)


unsigned char num[10][8]={{2,3,4,5,6,7},{3,4},{2,3,5,6,8},{2,3,4,5,8},{3,4,7,8},{2,4,5,7,8},{2,4,5,6,7,8},{2,3,4},{2,3,4,5,6,7,8},{2,3,4,7,8}};

void setup()
{
    for(int i=2;i<9;i++)
    {
      pinMode(i,OUTPUT);
      digitalWrite(i,HIGH);  
    }
}

void Display(char a)
{
    unsigned char index=0;
    while(num[a][index])
    {
        digitalWrite(num[a][index],LOW);
        index++;  
    }  
}

void loop() 
{
      Display(random(0,10));
      delay(1000); 
      setup();
}

  
分析:
  我的思路是這樣的,瞭解數碼管的都知道無非是讓它對應的腳輸出低電平即可(共陽極),那麼我就把要變化的腳寫入數組中。
  
  至此這個程序已經完成一半了,setup()函數定義數碼管連接的幾個引腳爲OUTPUT(輸出),並把電平拉高,然後進入到主函數(loop()函數)中,產生一個0-9的隨機數作爲實參傳給Display()函數,在顯示隨機數之後,延時1s並重置各個引腳爲高電平(調用setup()函數)。
  
下面分析Display()函數:
  通過while循環來判斷是否顯示這個數所對應的引腳已全部被拉低,如果未完全,則繼續,完全則退出。

  
  

4.總結

  沒想到arduino的數碼管這麼繁瑣,本來是想Display()函數中用switch來判斷傳進來的參數併產生對應動作,但是每個數字對應的段選引腳確實太多,會導致代碼很多,囉嗦,因此決定用二維數組+while判斷來實現。目前數組裏只加了數字0-9的段選數據,有興趣的讀者可以自行豐富。

期待更多精彩…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章