Arduino搶答器


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.結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM