【转载】零知开源快速入门7-制作一个抢答器-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2297|回复: 0

【转载】零知开源快速入门7-制作一个抢答器

[复制链接]
发表于 2018-6-25 16:57 | 显示全部楼层 |阅读模式
本帖最后由 零知实验室-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、按照之前的方式先【编译】,然后【上传】到开发板中。
四、成果展示
上面步骤成功完成后,我们就可以看到预期的结果了,如下:



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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:51 , Processed in 0.072938 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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