想做一个按键控制小灯,8个按键8个小灯,按一下一个亮,在按一下下一个亮,一一对应,我感觉逻辑对 但是为什么 不会按逻辑走
int LED=13;
int led2=6;
int led3=5;
int led1=7;
int BUTTON=12;
int k1=9;
int k2=10;
int k3=11;
int val = 0;
int old_val = 0;
int state = 0;
int val1=0;
int old_val1=0;
int state1=0;
int val2=0;
int old_val2=0;
int state2=0;
int val3=0;
int old_val3=0;
int state3=0;
void setup()
{
pinMode(LED, OUTPUT);
pinMode (BUTTON,INPUT_PULLUP);
pinMode(led1,OUTPUT);
pinMode(k1,INPUT_PULLUP);
pinMode(led2,OUTPUT);
pinMode(k2,INPUT_PULLUP);
pinMode(led3,OUTPUT);
pinMode(k3,INPUT_PULLUP);
}
void loop(){
val = digitalRead(BUTTON);
val1=digitalRead(k1);
val2=digitalRead(k2);
val3=digitalRead(k3);
if((val == HIGH)&&(old_val == LOW)){
state =1-state;
delay(40);
}
old_val = val;
if((val1 == HIGH)&&(old_val1 == LOW)){
state1 =1-state1;
delay(40);
}
old_val1 = val1;
if((val2 == HIGH)&&(old_val2 == LOW)){
state2 =1-state2;
delay(40);
}
old_val2 = val2;
if((val3 == HIGH)&&(old_val3 == LOW)){
state3 =1-state3;
delay(40);
}
old_val3 = val3;
if (state==0)
{
delay(200);
digitalWrite(LED,HIGH);
if(state1==0)
{
delay(200);
digitalWrite(led1,HIGH);
if(state2==0)
{
delay(200);
digitalWrite(led2,HIGH);
if(state3==0)
{
delay(200);
digitalWrite(led3,HIGH);
}
}
}
}
} |