設備與材料
個人電腦 × 1
arduino Uno × 1
麵包板 × 1
LED × 8
4×4按鍵 × 1
9pin A型 331排阻 × 1
連接線 若干
電路圖
Arduino 實體接線圖
LED 陣列
上圖是將10個LED包裝成IC形式的LED陣列,接腳正負如何判斷呢?有文字印刷那面接腳為+,對面接腳為-
功能
本實習用四個按鈕來選擇10燈LED不同跑法,
按 S1 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 100ms
按 S2 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 50ms
按 S3 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 25ms
按 S4 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 10ms
PS:按一次按鈕跑一次來回
程式
//全域變數
const int PB[4] = {10, 11, 12, 13}; //輸入接腳
const int LED[8] = {2, 3, 4, 5, 6, 7, 8, 9}; //輸出接腳
boolean s1; //按鈕狀態變數
void setup() {
//設定 Arduino 輸出接腳
for (int i = 0; i < 8; i++) {
pinMode(LED[i], OUTPUT);
}
//設定 Arduino 輸入接腳
for (int i = 0; i < 4; i++) {
pinMode(PB[i], INPUT);
}
}
void loop() {
s1 = digitalRead(PB[0]); // 讀取S1按鈕的狀態
if(s1){
led1(100); //呼叫自訂函數 led1
}
}
//1燈走馬燈程式
void led1(int delayTime){
for (int i = 0; i < 7; i++) {
digitalWrite(LED[i], HIGH);
delay(delayTime);
digitalWrite(LED[i], LOW);
}
for (int i = 7; i >= 0; i--) {
digitalWrite(LED[i], HIGH);
delay(delayTime);
digitalWrite(LED[i], LOW);
}
}
上述示範程式僅有按 S1 按鈕時,8燈LED單燈來回跑,每次移動一個燈 延遲時間 100ms,請你自行修改程式改成10燈加上 S2、S3、S4 按鍵功能
進階
你可以更改程式功能,不同按鍵有不同的LED燈變化
相關知識
自定函數
if 判斷式
if else 判斷式
digitalRead 函數
boolean
陣列
for 迴圈
Arduino 複合運算子
const
Arduino Uno 硬體
int
void
setup 函數
loop 函數
pinMode 函數
digitalWrite 函數
delay 函數
學習目標
1.了解輸入接腳設定
2.了解 if 判斷式
3.了解自定函式
Arduino 輸出實習(單燈閃爍)
Arduino 輸出實習(跑馬燈-愚公移山)
Arduino 輸出實習(跑馬燈-for迴圈)
Arduino 數位輸入實習
Arduino 數位輸入實習(INPUT_PULLUP)
Arduino 類比輸入實習
Arduino PWM 實習 (呼吸燈)
Arduino PWM 實習 (光感應調光燈)
Arduino 8×8 LED Matrix MAX7219 實習
Arduino 紅綠燈小綠人 實習
Arduino 計時器 實習
Arduino 音樂盒
Arduino 電子琴(鍵盤掃描)
Arduino DHT11 溫濕度感應器
Arduino OLED 顯示
Arduino 超音波測距模組 HC-SR04
Arduino 執行時間實習
Arduino 電容測試器
Arduino 紅外線接收實習
Arduino 紅外線發射實習 EPSON 投影機控制
ESP-12F 網路智慧開關(MQTT)
ESP-12F 雲端記錄型 K-Type 溫度計(MQTT ThingSpeak)
ESP-12F 手機雲端紅外線控制
ESP-12F 網路電台收音機
ESP-12F 電子鼓