找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1277|回复: 0
打印 上一主题 下一主题
收起左侧

【零知ESP8266教程】快速入门7-制作一个抢答器

[复制链接]
跳转到指定楼层
楼主

根据我之前的分享,我们已经学会使用按键控制LED灯的亮与暗,这次我们运用学到的知识,把它投射到现实生活中!相信你们都看过综艺节目,节目中的抢答器就是运用这一点实现的。那么今天,我们一起建立一个抢答器运作的model。

设计功能如下:当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。

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

二、硬件连接





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

  1. /**
  2. *    文件: LED-qiangda.ino
  3. *    作者: 零知
  4. *    时间: 2019/05/29 16:22
  5. *    说明: 当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,
  6. *                  最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。
  7. **/
  8.    
  9. int LED_Y =        D1;//三个颜色LED引脚连接
  10. int LED_G =        D2;
  11. int LED_R =        D4;
  12.    
  13. int KEY_START = D0;        //开始按键
  14. int KEY_Y        = D5;        //控制黄色按键
  15. int KEY_G        = D6;
  16. int KEY_R        = D7;
  17.    
  18. int red = 0;    //读取按键的值
  19. int green = 0;
  20. int yellow = 0;
  21.    
  22. void clear_led();
  23. void RED_YES();
  24. void YELLOW_YES();
  25. void GREEN_YES();
  26.    
  27. // the setup routine runs once when you press reset:
  28. void setup() {
  29.     // put your setup code here, to run once:
  30.         pinMode(LED_Y, OUTPUT);
  31.         pinMode(LED_G, OUTPUT);
  32.         pinMode(LED_R, OUTPUT);
  33.            
  34.         //初始状态都关闭
  35.         digitalWrite(LED_R, HIGH);
  36.         digitalWrite(LED_G, HIGH);
  37.         digitalWrite(LED_Y, HIGH);
  38.            
  39.         pinMode(KEY_Y, INPUT);
  40.         pinMode(KEY_G, INPUT);
  41.         pinMode(KEY_R, INPUT);
  42.         pinMode(KEY_START, INPUT);
  43.     Serial.begin(9600);
  44. }
  45.    
  46. // the loop routine runs over and over again forever:
  47. void loop() {
  48.     // put your main code here, to run repeatedly:
  49.    
  50.         red=digitalRead(KEY_R);
  51.         yellow=digitalRead(KEY_Y);
  52.         green=digitalRead(KEY_G);
  53.             Serial.println(red); //保留两位小数
  54. //       delay(500);
  55.         if(red==HIGH)
  56.                 RED_YES();   
  57.         if(yellow==HIGH)
  58.                 YELLOW_YES();
  59.         if(green==HIGH)
  60.                 GREEN_YES();
  61. }
  62.    
  63. void RED_YES()//一直执行红灯亮,直到复位键按下,结束循环
  64. {
  65.   while(digitalRead(KEY_START)==0)
  66.   {
  67.       
  68.   
  69.                 digitalWrite(LED_R,LOW);
  70.                 digitalWrite(LED_G,HIGH);
  71.                 digitalWrite(LED_Y,HIGH);
  72.       delay(200);
  73.   }
  74.   clear_led();
  75. }
  76. void YELLOW_YES()//一直执行黄灯亮,直到复位键按下,结束循环
  77. {
  78.   while(digitalRead(KEY_START)==0)
  79.   {
  80.   digitalWrite(LED_R,HIGH);
  81.   digitalWrite(LED_G,HIGH);
  82.   digitalWrite(LED_Y,LOW);
  83.       delay(200);
  84.   }
  85.   clear_led();
  86. }
  87. void GREEN_YES()//一直执行绿灯亮,直到复位键按下,结束循环
  88. {
  89.   while(digitalRead(KEY_START)==0)
  90.   {
  91.   digitalWrite(LED_R,HIGH);
  92.   digitalWrite(LED_G,LOW);
  93.   digitalWrite(LED_Y,HIGH);
  94.       delay(200);
  95.   }
  96.   clear_led();
  97. }
  98. void clear_led()//清除LED
  99. {
  100.   digitalWrite(LED_R,HIGH);
  101.   digitalWrite(LED_G,HIGH);
  102.   digitalWrite(LED_Y,HIGH);
  103.       
  104. }
复制代码

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


四、成果展示
上面步骤成功完成后,我们就可以看到预期的结果了,如下:



主持人,请出题吧!


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表