0.部分需要掌握的知識點和注意事項
(1)面包板的結構
(2)按鍵的結構:按鍵按下時,左右兩側連通;按鍵松開后,左右兩側斷開,但1號與2號相連,3號與4號相連,即按鍵松開時,同側不相連,相連不同側。
注:在將按鍵插入面包板的時候,需要用力,以免按鍵不能正常接入電路。
(3)函數
①pinMode():
功能:指定特定端口是作為輸入還是輸出;
形式:pinMode(pin,mode)
參數:pin:想要設定的端口號;mode:模式,有INPUT,OUTPUT和INPUT_PULLUP三種模式。(INPUT_PULLUP參數設定內置的上拉電阻是否被使能)。
返回值:none;
②digitalWrite():
功能:控制引腳輸出高低電平;如果引腳被pinMode()設為OUTPUT,5V (或者 3.3V 在使用 3.3V的板子上) 就是HIGH, 0V (ground) 就是 LOW。如果引腳被設為INPUT,digitalWrite()將對輸入引腳的上拉電阻使能HIGH(或者禁止LOW)。建議digitalwrite和digitalread使用之前都要用piMode指定輸出輸入,否則引腳上拉電阻會像限流電阻一樣(此時應該是高阻態)。
形式:digitalWrite(pin,value)
參數:pin:要操作的引腳;value:有HIGH和LOW兩個取值。
③digitalRead():
功能:讀取引腳電平狀態;
形式:digitalRead(pin)
參數:pin:要讀取的引腳
返回值:HIGH或者LOW;
1.原理圖:
2.實物圖(注意有些面包板的上下部分的中間會有一段斷開的部分,如下圖紅框所示):
3.代碼:
1 int redled = 8; //紅色LED 輸出 2 int yellowled = 7; //黃色LED輸出 3 int greenled = 6; //綠色LED輸出 4 int redpin = 5; //紅色按鍵引腳 5 int yellowpin = 4; //黃色按鍵引腳 6 int greenpin = 3; //綠色按鍵引腳 7 int restpin = 2; //復位按鍵引腳定義 8 int red; 9 int yellow; 10 int green; 11 void setup() { 12 pinMode(redled, OUTPUT); 13 pinMode(yellowled, OUTPUT); 14 pinMode(greenled, OUTPUT); 15 pinMode(redpin, INPUT); 16 pinMode(yellowpin, INPUT); 17 pinMode(greenpin, INPUT); 18 } 19 void loop() //按鍵循環掃描。 20 { 21 red = digitalRead(redpin); 22 yellow = digitalRead(yellowpin); 23 green = digitalRead(greenpin); 24 if (red == LOW) RED_YES(); 25 if (yellow == LOW) YELLOW_YES(); 26 if (green == LOW) GREEN_YES(); 27 } 28 29 void RED_YES() //一直執行紅燈亮,直到復位鍵按下,結束循環 30 { 31 while (digitalRead(restpin) == 1) { 32 digitalWrite(redled, HIGH); 33 digitalWrite(greenled, LOW); 34 digitalWrite(yellowled, LOW); 35 } 36 clear_led(); 37 } 38 void YELLOW_YES() //一直執行黃燈亮,直到復位鍵按下,結束循環 39 { 40 while (digitalRead(restpin) == 1) { 41 digitalWrite(redled, LOW); 42 digitalWrite(greenled, LOW); 43 digitalWrite(yellowled, HIGH); 44 } 45 clear_led(); 46 } 47 void GREEN_YES() //一直執行綠燈亮,直到復位鍵按下,結束循環 48 { 49 while (digitalRead(restpin) == 1) { 50 digitalWrite(redled, LOW); 51 digitalWrite(greenled, HIGH); 52 digitalWrite(yellowled, LOW); 53 } 54 clear_led(); 55 } 56 void clear_led() //清除LED 57 { 58 digitalWrite(redled, LOW); 59 digitalWrite(greenled, LOW); 60 digitalWrite(yellowled, LOW); 61 }
4.結果
略