先講心得:
單純的 7 段顯示器,其實就是把 8 顆 LED 燈做在一塊板子上,透過排列的方式表示數字。這種板子,訓練大腦思惟,入門的玩一次就好了,真的要用這塊板子顯示數字、溫度、各種文字訊息,太可怕了、太不方便了;所以才會有 MAX7219 這種 IC 來控制 8x8 矩陣顯示器、 8 位數顯示器( 如下圖,中間那塊 IC 就是 MAX7219 )。而如果要把這種 8 顆 LED、8x8 矩陣顯示器、MAX7219 給國小學生使用,難度較高。
參考網頁: https://blog.jmaker.com.tw/4digit7seg/
參考語法:https://create.arduino.cc/editor/jasonshow/a9703023-e24f-4e3f-b0a2-5e666ff9bed4/preview
( 上面網頁的輸出與圖不同,必須修改程式的輸出腳位為 6~12 。另外,圖片的店阻色環也標示錯誤,請參考我的影片才是 220 。 )
/*
//本範例會在七段顯示LED上從9倒數到0
//傑森創工製作
//https://www.facebook.com/jasonshow
//本例預設是用共陰的顯示器
//若用的是共陽,除了要把接地改成接到5V
//另外在每個數字的表現方法,也要把0和1反過來
//1表示LED on,0則是LED off
// 七段用到的Arduino pin: 6,7,8,9,10,11,12
// 右下角的點用pin 5
//Arduino完整學習套件賣場:https://bre.is/E221Yubs7
傑森創工賣場:https://goo.gl/EWoPQ4
傑森創工粉絲團:
https://www.facebook.com/jasonshow
*/
//以下的陣列包含了0-9各數字的表現方法
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 }, // = 0
{ 0,1,1,0,0,0,0 }, // = 1
{ 1,1,0,1,1,0,1 }, // = 2
{ 1,1,1,1,0,0,1 }, // = 3
{ 0,1,1,0,0,1,1 }, // = 4
{ 1,0,1,1,0,1,1 }, // = 5
{ 1,0,1,1,1,1,1 }, // = 6
{ 1,1,1,0,0,0,0 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,0,0,1,1 } // = 9
};
void setup() {
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
writeDot(0); // 一開始右下角的點就是不顯示的
}
void writeDot(byte dot) { //顯示右下角小數點
digitalWrite(5, dot);
}
void sevenSegWrite(byte digit) { //顯示特定數字的副程式
byte pin = 6; //我們的七段顯示是從pin6開始的
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
++pin;
}
}
void loop() {
//數字從9開始倒數,每個數字間隔1秒
for (byte count = 10; count > 0; --count) {
delay(1000);
sevenSegWrite(count - 1);
}
delay(4000);
}
沒有留言:
張貼留言