//三个按键控制一个LED灯;
int key_slock = 5; //按键1输入端;
int key_led = 6; //按键2输入端;
int key_reset = 7; //按键3输入端;
int led = 8; //接led灯输入;
boolean rst_n = false; //上电复位;
boolean led_state = false; //led灯的状态控制,初始化为灭;
void setup()
{
pinMode(key_slock,INPUT); //初始化,定义各端口属性;
pinMode(key_led,INPUT);
pinMode(key_reset,INPUT);
pinMode(led,OUTPUT);
}
boolean key_rst_n()
{
if(digitalRead(key_reset) == LOW) //检测按键3是否有按下,有则使按键1复位,此时按键2失去作用;
{
delay(20);
if(digitalRead(key_reset) == LOW)
{
rst_n = false; //复位;
}
while(digitalRead(key_reset) == LOW);
}
if(digitalRead(key_slock) == LOW) //按键1按下,此时按键2功能有效;
{
delay(20);
if(digitalRead(key_slock) == LOW)
{
rst_n = true; //重新启动;
}
while(digitalRead(key_slock) == LOW);
}
return rst_n;
}
boolean key_ledon()
{
if(digitalRead(key_led) == LOW) //按键2控制灯的亮灭;
{
delay(20);
if(digitalRead(key_led) == LOW)
{
led_state = true; //按键有按下,点亮led;
return led_state;
}
while(digitalRead(key_led) == LOW); //等待按键松开;
delay(20); //后延消抖;
led_state = false; //按键松开后,熄灭led灯;
}
return led_state;
}
void loop()
{
if(key_rst_n()) //调用key_scan1(),判断系统状态;
{
digitalWrite(led,key_ledon()); //输出led的状态;
}
}
不知道是不是你要的结果 |