抢答器功能:
1.最先按下的按钮,相应的灯会一直点亮。
2.当已经有灯正在亮时,按下别的按钮,不会再亮其他灯。
3.按下复位按钮,熄灭全部灯,并且重新开始抢答。
接线
源代码
int led_red = 12;
int led_yellow = 11;
int led_gerrn = 10;
int button_red = 5;
int button_yellow = 4;
int button_green = 3;
int button_rest = 2;
int red; //储存红灯按钮的状态
int yellow; //储存黄灯按钮的状态
int green; //储存绿灯按钮的状态
void setup() {
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_gerrn, OUTPUT);
pinMode(button_red, INPUT);
pinMode(button_yellow, INPUT);
pinMode(button_green, INPUT);
pinMode(button_rest, INPUT);
Serial.begin(9600);
}
void loop() {
red = digitalRead(button_red);
green = digitalRead(button_green);
yellow = digitalRead(button_yellow);
if (red == LOW) //按下控制红灯的按钮时,执行RED函数,点亮红灯
{
RED();
}
if (green == LOW) //按下控制绿灯的按钮时,执行GREEN函数,点亮绿灯
{
GREEN();
}
if (yellow == LOW) //按下控制黄灯的按钮时,执行YELLOW函数,点亮黄灯
{
YELLOW();
}
}
void RED()
{
while (digitalRead(button_rest) == 1) //当复位按钮button_rest的状态为1时,一直点亮红灯
{
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_gerrn, LOW);
}
clear_led(); //按下复位按钮button_rest时,执行clear_led函数,熄灭三个灯
}
void YELLOW()
{
while (digitalRead(button_rest) == 1) //当复位按钮button_rest的状态为1时,一直点亮黄灯
{
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, HIGH);
digitalWrite(led_gerrn, LOW);
}
clear_led(); //按下复位按钮button_rest时,执行clear_led函数,熄灭三个灯
}
void GREEN()
{
while (digitalRead(button_rest) == 1) //当复位按钮button_rest的状态为1时,一直点亮绿灯
{
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_gerrn, HIGH);
}
clear_led(); //按下复位按钮button_rest时,执行clear_led函数,熄灭三个灯
}
void clear_led() //熄灭三个灯的函数
{
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_gerrn, LOW);
}
实践效果
arduino抢答器