完成上面的实验以后相信已经有很多朋友可以独立完成这个实验了,本实验就是将上面的按键控制小灯的实验扩展成3 个按键对应3 个小灯,占用6 个数字I/O 接口。
电路连接图
原理这里就不多说了同上面实验,下面附上参考原理图和实物连接图
参考源程序如下:
int redled=8; //红色LED 输出
int yellowled=7; //黄色LED输出
int greenled=6; //绿色LED输出
int redpin=5; //红色按键引脚
int yellowpin=4; //黄色按键引脚
int greenpin=3; //绿色按键引脚
int restpin=2; //复位按键引脚定义
int red;
int yellow;
int green;
void setup()
{
pinMode(redled,OUTPUT);
pinMode(yellowled,OUTPUT);
pinMode(greenled,OUTPUT);
pinMode(redpin,INPUT);
pinMode(yellowpin,INPUT);
pinMode(greenpin,INPUT);
}
void loop() //按键循环扫描。
{
red=digitalRead(redpin);
yellow=digitalRead(yellowpin);
green=digitalRead(greenpin);
if(red==LOW)RED_YES();
if(yellow==LOW)YELLOW_YES();
if(green==LOW)GREEN_YES();
}
void RED_YES()//一直执行红灯亮,直到复位键按下,结束循环
{
while(digitalRead(restpin)==1)
{
digitalWrite(redled,HIGH);
digitalWrite(greenled,LOW);
digitalWrite(yellowled,LOW);
}
clear_led();
}
void YELLOW_YES()//一直执行黄灯亮,直到复位键按下,结束循环
{
while(digitalRead(restpin)==1)
{
digitalWrite(redled,LOW);
digitalWrite(greenled,LOW);
digitalWrite(yellowled,HIGH);
}
clear_led();
}
void GREEN_YES()//一直执行绿灯亮,直到复位键按下,结束循环
{
while(digitalRead(restpin)==1)
{
digitalWrite(redled,LOW);
digitalWrite(greenled,HIGH);
digitalWrite(yellowled,LOW);
}
clear_led();
}
void clear_led()//清除LED
{
digitalWrite(redled,LOW);
digitalWrite(greenled,LOW);
digitalWrite(yellowled,LOW);
}
实验现象,都说了是抢答器,肯定是谁先按下,就亮谁的灯啦!
然后按下REST按键后,复位。
下载完程序,我们自己制作的简易抢答器就完成了。
往期回顾
01 | |
02 | |
03 | |
04 | |