Arduino 數位輸入實習

學習如何學習!

設備與材料

個人電腦 × 1
arduino Uno × 1
麵包板 × 1
LED × 8
4×4按鍵 × 1
9pin A型 331排阻 × 1
連接線 若干

電路圖

LED 電路圖
4×4按鍵電路圖

Arduino 實體接線圖

LED 陣列

LED 陣列

上圖是將10個LED包裝成IC形式的LED陣列,接腳正負如何判斷呢?有文字印刷那面接腳為,對面接腳為

功能

本實習用四個按鈕來選擇10燈LED不同跑法,
按 S1 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 100ms
按 S2 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 50ms
按 S3 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 25ms
按 S4 按鈕時,10燈LED單燈來回跑,每次移動一個燈 延遲時間 10ms

PS:按一次按鈕跑一次來回

單燈跑馬燈來回共8燈

程式

//全域變數

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.了解自定函式


入門
知識
語法
流程
函式
實習

發佈留言