根據(jù)我之前的分享,我們已經(jīng)學(xué)會(huì)使用按鍵控制LED燈的亮與暗,這次我們運(yùn)用學(xué)到的知識(shí),把它投射到現(xiàn)實(shí)生活中!相信你們都看過(guò)綜藝節(jié)目,節(jié)目中的搶答器就是運(yùn)用這一點(diǎn)實(shí)現(xiàn)的。那么今天,我們一起建立一個(gè)搶答器運(yùn)作的model。 設(shè)計(jì)功能如下:當(dāng)主持人按下開(kāi)始按鍵后,三個(gè)人搶答開(kāi)始,看誰(shuí)先按下按鍵,最先按下按鍵的人相應(yīng)的LED燈亮,主持人就可以根據(jù)燈的狀態(tài)選擇誰(shuí)先回答問(wèn)題。 一、工具原料
電腦,windows系統(tǒng)
零知ESP8266開(kāi)發(fā)板
micro-usb線
LED燈紅色、綠色、黃色各一個(gè)
按鍵4個(gè)
220Ω 電阻3個(gè)
10kΩ 電阻4個(gè)
面包板一個(gè)+若干跳線 二、硬件連接
1.jpg (153.08 KB, 下載次數(shù): 27)
下載附件
2019-10-12 10:24 上傳
2.png (718.29 KB, 下載次數(shù): 24)
下載附件
2019-10-12 10:24 上傳
三、方法步驟
1、打開(kāi)零知實(shí)驗(yàn)室軟件開(kāi)發(fā)工具,然后新建項(xiàng)目,輸入以下代碼: - /**
- * 文件: LED-qiangda.ino
- * 作者: 零知
- * 時(shí)間: 2019/05/29 16:22
- * 說(shuō)明: 當(dāng)主持人按下開(kāi)始按鍵后,三個(gè)人搶答開(kāi)始,看誰(shuí)先按下按鍵,
- * 最先按下按鍵的人相應(yīng)的LED燈亮,主持人就可以根據(jù)燈的狀態(tài)選擇誰(shuí)先回答問(wèn)題。
- **/
-
- int LED_Y = D1;//三個(gè)顏色LED引腳連接
- int LED_G = D2;
- int LED_R = D4;
-
- int KEY_START = D0; //開(kāi)始按鍵
- int KEY_Y = D5; //控制黃色按鍵
- int KEY_G = D6;
- int KEY_R = D7;
-
- int red = 0; //讀取按鍵的值
- int green = 0;
- int yellow = 0;
-
- void clear_led();
- void RED_YES();
- void YELLOW_YES();
- void GREEN_YES();
-
- // the setup routine runs once when you press reset:
- void setup() {
- // put your setup code here, to run once:
- pinMode(LED_Y, OUTPUT);
- pinMode(LED_G, OUTPUT);
- pinMode(LED_R, OUTPUT);
-
- //初始狀態(tài)都關(guān)閉
- digitalWrite(LED_R, HIGH);
- digitalWrite(LED_G, HIGH);
- digitalWrite(LED_Y, HIGH);
-
- pinMode(KEY_Y, INPUT);
- pinMode(KEY_G, INPUT);
- pinMode(KEY_R, INPUT);
- pinMode(KEY_START, INPUT);
- Serial.begin(9600);
- }
-
- // the loop routine runs over and over again forever:
- void loop() {
- // put your main code here, to run repeatedly:
-
- red=digitalRead(KEY_R);
- yellow=digitalRead(KEY_Y);
- green=digitalRead(KEY_G);
- Serial.println(red); //保留兩位小數(shù)
- // delay(500);
- if(red==HIGH)
- RED_YES();
- if(yellow==HIGH)
- YELLOW_YES();
- if(green==HIGH)
- GREEN_YES();
- }
-
- void RED_YES()//一直執(zhí)行紅燈亮,直到復(fù)位鍵按下,結(jié)束循環(huán)
- {
- while(digitalRead(KEY_START)==0)
- {
-
-
- digitalWrite(LED_R,LOW);
- digitalWrite(LED_G,HIGH);
- digitalWrite(LED_Y,HIGH);
- delay(200);
- }
- clear_led();
- }
- void YELLOW_YES()//一直執(zhí)行黃燈亮,直到復(fù)位鍵按下,結(jié)束循環(huán)
- {
- while(digitalRead(KEY_START)==0)
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,HIGH);
- digitalWrite(LED_Y,LOW);
- delay(200);
- }
- clear_led();
- }
- void GREEN_YES()//一直執(zhí)行綠燈亮,直到復(fù)位鍵按下,結(jié)束循環(huán)
- {
- while(digitalRead(KEY_START)==0)
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,LOW);
- digitalWrite(LED_Y,HIGH);
- delay(200);
- }
- clear_led();
- }
- void clear_led()//清除LED
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,HIGH);
- digitalWrite(LED_Y,HIGH);
-
- }
復(fù)制代碼
2、按照之前的方式先【驗(yàn)證】,然后【上傳】到開(kāi)發(fā)板中。
四、成果展示
上面步驟成功完成后,我們就可以看到預(yù)期的結(jié)果了,如下:
3.gif (2.97 MB, 下載次數(shù): 31)
下載附件
2019-10-12 10:25 上傳
主持人,請(qǐng)出題吧!
|