快速入门7-制作一个抢答器

基于上一节的知识,我们现在制作一个在现实中经常见到的抢答器。设计功能如下:当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。

一、工具原料

电脑,windows系统
ES8266开发板
micro-usb线
LED灯红色、绿色、黄色各一个
按键4个
220Ω 电阻3个
10kΩ 电阻4个
面包板一个+若干跳线

二、连接

三、代码

1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:


							
	/**
	*    文件: LED-qiangda.ino
	*    作者: 零知
	*    时间: 2019/05/29 16:22
	*    说明: 当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,
	*                  最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。
	**/
	   
	int LED_Y        = D1;//三个颜色LED引脚连接
	int LED_G        = D2;
	int LED_R        = D4;
	   
	int KEY_START    = D0; //开始按键
	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();

	void setup() {

	        pinMode(LED_Y, OUTPUT);
	        pinMode(LED_G, OUTPUT);
	        pinMode(LED_R, OUTPUT);
	           
	        //初始状态都关闭
	        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);
	}
	void loop() {

	   
	        red=digitalRead(KEY_R);
	        yellow=digitalRead(KEY_Y);
	        green=digitalRead(KEY_G);
	        Serial.println(red); //保留两位小数
	//      delay(500);
	        if(red==HIGH)
	                RED_YES();    
	        if(yellow==HIGH)
	                YELLOW_YES();
	        if(green==HIGH)
	                GREEN_YES();
	}
	   
	void RED_YES()//一直执行红灯亮,直到复位键按下,结束循环
	{
	  while(digitalRead(KEY_START)==0)
	  {
	      
	  
	                digitalWrite(LED_R,LOW);
	                digitalWrite(LED_G,HIGH);
	                digitalWrite(LED_Y,HIGH);
	      delay(200);
	  }
	  clear_led();
	}
	void YELLOW_YES()//一直执行黄灯亮,直到复位键按下,结束循环
	{
	  while(digitalRead(KEY_START)==0)
	  {
	  digitalWrite(LED_R,HIGH);
	  digitalWrite(LED_G,HIGH);
	  digitalWrite(LED_Y,LOW);
	      delay(200);
	  }
	  clear_led();
	}
	void GREEN_YES()//一直执行绿灯亮,直到复位键按下,结束循环
	{
	  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);
	      
	}

							
						

2、按照之前的方式先【验证】,然后【上传】到开发板中。

四、成果展示

上面步骤成功完成后,我们就可以看到预期的结果了