|
本帖最后由 零知实验室-roc 于 2018-6-25 16:59 编辑
转载自:零知开源快速入门7-制作一个抢答器
http://www.lingzhilab.com/forum.php?mod=viewthread&tid=178&fromuid=2
(出处: 零知实验室)
基于上一节的知识,我们现在制作一个在现实中经常见到的抢答器。设计功能如下:当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。
一、工具原料
- 电脑,windows系统
- 零知开发板
- micro-usb线
- LED灯红色、绿色、黄色各一个
- 按键4个
- 220Ω 电阻3个
- 10kΩ 电阻4个
- 面包板一个+若干跳线
二、硬件连接
1、电路原理图
2、电路连接
三、方法步骤
1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:
- /**
- * 文件: LED-qiangda.ino
- * 作者: 零知实验室
- * 时间: 2018/06/25 16:22
- * 说明: 当主持人按下开始按键后,三个人抢答开始,看谁先按下按键,
- * 最先按下按键的人相应的LED灯亮,主持人就可以根据灯的状态选择谁先回答问题。
- **/
- int LED_Y = 1;//三个颜色LED引脚连接
- int LED_G = 2;
- int LED_R = 3;
- int KEY_START = 0; //开始按键
- int KEY_Y = 4; //控制黄色按键
- int KEY_G = 5;
- int KEY_R = 6;
- 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);
- }
- // 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);
- 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);
- }
- clear_led();
- }
- void YELLOW_YES()//一直执行黄灯亮,直到复位键按下,结束循环
- {
- while(digitalRead(KEY_START)==0)
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,HIGH);
- digitalWrite(LED_Y,LOW);
- }
- clear_led();
- }
- void GREEN_YES()//一直执行绿灯亮,直到复位键按下,结束循环
- {
- while(digitalRead(KEY_START)==0)
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,LOW);
- digitalWrite(LED_Y,HIGH);
- }
- clear_led();
- }
- void clear_led()//清除LED
- {
- digitalWrite(LED_R,HIGH);
- digitalWrite(LED_G,HIGH);
- digitalWrite(LED_Y,HIGH);
- }
[color=rgb(51, 102, 153) !important]复制代码
2、按照之前的方式先【编译】,然后【上传】到开发板中。
四、成果展示
上面步骤成功完成后,我们就可以看到预期的结果了,如下:
|
|