按键问题。
void setup()......
(LED)....
void loop()
....
(LED)....
void ScanKey()
{
KEY_NUM == 0;
if(digitalRead(KEY)==LOW)
{
delay(10);
if(digitalRead(KEY)==LOW)
{
KEY_NUM == 1;
while(digitalRead(KEY)==LOW);
}
}
}
上面是一种按键程序,这种按键是按一下灯亮再按一下灯灭,根据按下之后是否松开来判断,现在我想改成以按下来判断,而不是等待松开。把LOW换成HIGH是可以实现,但是当多个按键都是这样的时候就不行了,求大神帮忙!! 这样的按键程序,貌似应该每一个KEY要有一个KEY_NUM变量对应 wwwusr 发表于 2016-4-14 10:42 static/image/common/back.gif
这样的按键程序,貌似应该每一个KEY要有一个KEY_NUM变量对应
#define LED 13
#define KEY 2
int KEY_NUM = 0;
void setup()
{
pinMode(LED,OUTPUT);
pinMode(KEY,INPUT_PULLUP);
}
void loop()
{
ScanKey();
if(KEY_NUM == 1)
{
digitalWrite(LED,!digitalRead(LED));
}
}
void ScanKey()
{
KEY_NUM = 0;
if(digitalRead(KEY) == LOW)
{
delay(20);
if(digitalRead(KEY) == LOW)
{
KEY_NUM = 1;
while(digitalRead(KEY) == LOW);
}
}
} qwer1111 发表于 2016-4-14 12:48 static/image/common/back.gif
#define LED 13
#define KEY 2
?这不还是一个按键的么 wwwusr 发表于 2016-4-14 17:17 static/image/common/back.gif
?这不还是一个按键的么
#define LED1 13
#define LED2 14
#define KEY1 2
#define KEY2 3
int KEY1_NUM = 0;
int KEY2_NUM = 0;
void setup()
{
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(KEY1,INPUT_PULLUP);
pinMode(KEY2,INPUT_PULLUP);
}
void loop()
{
ScanKey1();
if(KEY1_NUM == 1)
{
digitalWrite(LED1,!digitalRead(LED1));
}
ScanKey2();
if(KEY2_NUM == 1)
{
digitalWrite(LED2,!digitalRead(LED2));
}
}
void ScanKey1()
{
KEY1_NUM = 0;
if(digitalRead(KEY1) == LOW)
{
delay(20);
if(digitalRead(KEY1) == LOW)
{
KEY1_NUM = 1;
while(digitalRead(KEY1) == LOW);
}
}
}
void ScanKey2()
{
KEY2_NUM = 0;
if(digitalRead(KEY2) == LOW)
{
delay(20);
if(digitalRead(KEY2) == LOW)
{
KEY2_NUM = 1;
while(digitalRead(KEY2) == LOW);
}
}
}
以此类推 想加几个就几个 但这不是问题的重点啊。 求破。。。。。。。。
页:
[1]