我感觉按键小灯逻辑对着 为什么就是不安逻辑走
想做一个按键控制小灯,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);
}
}
}
}
} 我觉得是不是你没设置初值啊?我也是菜鸟一个,不知道对不对:lol 为什么初始值啊...闹了一天多了....快憋屈死了 1、问题描述的不清楚:“8个按键8个小灯,按一下一个亮,在按一下下一个亮,一一对应”
程序里面只有4个按键,4个灯,并不是8个。
A、“按一下一个亮”,然后呢?按下一直亮,即使松开按键,还是按下就亮,松开就灭?
B、“在按一下下一个亮”:同一个按键再按一下,下一个灯亮,还是再按下一个按键,下一个灯亮?
C 、“一一对应”:按照这个意思,就是一个按键对应一个灯,B的就理解了,是按下一个按键,亮下一个灯。
那就分析A是如何实现的
2、整个文档只有digitalWrite(LED,HIGH),这个打开(关闭)灯,怎么没有关闭(打开)灯?
3、if (state==0){……if (state1==0){……if(state2==0){……if(state3==0){……}}}};这个逻辑你确定搞清楚了?它们之间是“与”还是“或”,还是没关系?
4、按键扫描 if((val1 == HIGH)&&(old_val1 == LOW)){……}再确认下执行时机?
不要急,慢慢分析下
页:
[1]