2246|2

85

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

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

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

一、工具原料
电脑,windows系统
零知ESP8266开发板
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();
   
// 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);
           
        //初始状态都关闭
        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); //保留两位小数
//       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、按照之前的方式先【验证】,然后【上传】到开发板中。
四、成果展示
上面步骤成功完成后,我们就可以看到预期的结果了,如下:

主持人,请出题吧!

此帖出自stm32/stm8论坛

最新回复

每天都来学习一下   详情 回复 发表于 2019-10-12 12:17
点赞 关注
 

回复
举报

46

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

每天都来学习一下

此帖出自stm32/stm8论坛

点评

每天都需要你支持一下  详情 回复 发表于 2019-10-14 10:50
 
 

回复

85

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
rgbgirl 发表于 2019-10-12 12:17 每天都来学习一下

每天都需要你支持一下

此帖出自stm32/stm8论坛
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表