好声音抢答器,按下按键灯亮且长时间不灭,有蜂鸣器提示音
代码
int redled = 12; //红色LED 输出
int yellowled = 11; //黄色LED输出
int greenled = 10; //绿色LED输出
int redpin = 5; //红色按键引脚
int yellowpin = 4; //黄色按键引脚
int greenpin = 3; //绿色按键引脚
int Buzzer=7;
int restpin = 2; //复位按键引脚定义
int red;
int yellow;
int green;
int redpin_MUN=0;
int greenpin_MUN=0;
int yellowpin_MUN=0;
void setup() {
pinMode(redled, OUTPUT);
pinMode(yellowled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(Buzzer,OUTPUT);
pinMode(redpin, INPUT);
pinMode(yellowpin, INPUT);
pinMode(greenpin, INPUT);
digitalWrite(Buzzer,LOW);
}
void loop() //按键循环扫描。
{
red = digitalRead(redpin);
if (red == LOW)
{
digitalWrite(redled,LOW);
}
else
{
digitalWrite(redled,HIGH);
ScanKey2();
}
yellow = digitalRead(yellowpin);
if(yellow == LOW)
{
digitalWrite(yellowled ,LOW);
}
else
{
digitalWrite(yellowled ,HIGH);
ScanKey1();
}
green = digitalRead(greenpin);
if(green == LOW)
{
digitalWrite(greenled,LOW);
}
else
{
digitalWrite( greenled ,HIGH);
ScanKey3();
}
}
void ScanKey1()
{
greenpin_MUN = 0;
if(digitalRead(greenpin) == LOW)
{
//延时去抖动
if(digitalRead(greenpin) == LOW)
{
BuzzerDi(); //滴一声
greenpin_MUN = 1; //设置键值
while(digitalRead(greenpin) == LOW); //松手检测
}
}
}
void ScanKey2()
{
yellowpin_MUN = 0;
if(digitalRead(yellowpin) == LOW)
{
//延时去抖动
if(digitalRead(yellowpin) == LOW)
{
BuzzerDi(); //滴一声
yellowpin_MUN= 1; //设置键值
while(digitalRead(yellowpin) == LOW); //松手检测
}
}
}
void ScanKey3()
{
redpin_MUN = 0;
if(digitalRead(redpin) == LOW)
{
//延时去抖动
if(digitalRead(redpin) == LOW)
{
BuzzerDi(); //滴一声
redpin_MUN = 1;
while(digitalRead(redpin) == LOW); //松手检测
}
}
}
void BuzzerDi()
{unsigned char i;
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
}