网上找到了这个示例程序,是一个按键控制一个LED,按一下开,再按一下关
代码如下
int buttonPin = 2;
int ledPin = 13;
boolean ledState=false; // 记录LED状态
boolean buttonState=true; // 记录按键状态
void setup()
{
// 初始化I/O口
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
}
void loop()
{
// 等待按键按下
while(digitalRead(buttonPin)==HIGH){}
// 当按键按下时,点亮或熄灭LED
if(ledState==true)
{
digitalWrite(ledPin,LOW);
ledState=!ledState;
}
else
{
digitalWrite(ledPin,HIGH);
ledState=!ledState;
}
delay(500);
}
我想把他扩展成多个按键分别控制多个LED,就是按一下对应的按键然后对应的LED亮,再按一下灭,各路独立控制互不干扰,我就用土办法扩展了一下,但是扩展后发现按一下按键1后1号LED点亮无法关闭,要把2号LED也点亮以后才能关闭1号,然后才能关闭2号,2号LED在1号点亮前无法先开启。达不到既定目的。求助各位大佬要如何做才能实现
扩展后的代码
int buttonPin1 = 2;
int ledPin = 13;
int buttonPin2 =3 ;
int ledPin = 14;
boolean ledState1=false; // 记录LED1状态
boolean buttonState1=true; // 记录按键1状态
boolean ledState2=false; // 记录LED2状态
boolean buttonState2=true; // 记录按键2状态
void setup()
{
// 初始化I/O口
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(ledPin1,OUTPUT);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(ledPin2,OUTPUT);
}
void loop()
{
Key1();
Key2();
}
void Key1()
{
// 等待按键1按下
while(digitalRead(buttonPin1)==HIGH){}
// 当按键1按下时,点亮或熄灭LED 1
if(ledState1==true)
{
digitalWrite(ledPin1,LOW);
ledState1=!ledState1;
}
else
{
digitalWrite(ledPin1,HIGH);
ledState1=!ledState1;
}
delay(500);
}
void Key2()
{
// 等待按键2按下
while(digitalRead(buttonPin2)==HIGH){}
// 当按键2按下时,点亮或熄灭LED 2
if(ledState2==true)
{
digitalWrite(ledPin2,LOW);
ledState2=!ledState2;
}
else
{
digitalWrite(ledPin2,HIGH);
ledState2=!ledState2;
}
delay(500);
}
代码如下
int buttonPin = 2;
int ledPin = 13;
boolean ledState=false; // 记录LED状态
boolean buttonState=true; // 记录按键状态
void setup()
{
// 初始化I/O口
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
}
void loop()
{
// 等待按键按下
while(digitalRead(buttonPin)==HIGH){}
// 当按键按下时,点亮或熄灭LED
if(ledState==true)
{
digitalWrite(ledPin,LOW);
ledState=!ledState;
}
else
{
digitalWrite(ledPin,HIGH);
ledState=!ledState;
}
delay(500);
}
我想把他扩展成多个按键分别控制多个LED,就是按一下对应的按键然后对应的LED亮,再按一下灭,各路独立控制互不干扰,我就用土办法扩展了一下,但是扩展后发现按一下按键1后1号LED点亮无法关闭,要把2号LED也点亮以后才能关闭1号,然后才能关闭2号,2号LED在1号点亮前无法先开启。达不到既定目的。求助各位大佬要如何做才能实现
扩展后的代码
int buttonPin1 = 2;
int ledPin = 13;
int buttonPin2 =3 ;
int ledPin = 14;
boolean ledState1=false; // 记录LED1状态
boolean buttonState1=true; // 记录按键1状态
boolean ledState2=false; // 记录LED2状态
boolean buttonState2=true; // 记录按键2状态
void setup()
{
// 初始化I/O口
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(ledPin1,OUTPUT);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(ledPin2,OUTPUT);
}
void loop()
{
Key1();
Key2();
}
void Key1()
{
// 等待按键1按下
while(digitalRead(buttonPin1)==HIGH){}
// 当按键1按下时,点亮或熄灭LED 1
if(ledState1==true)
{
digitalWrite(ledPin1,LOW);
ledState1=!ledState1;
}
else
{
digitalWrite(ledPin1,HIGH);
ledState1=!ledState1;
}
delay(500);
}
void Key2()
{
// 等待按键2按下
while(digitalRead(buttonPin2)==HIGH){}
// 当按键2按下时,点亮或熄灭LED 2
if(ledState2==true)
{
digitalWrite(ledPin2,LOW);
ledState2=!ledState2;
}
else
{
digitalWrite(ledPin2,HIGH);
ledState2=!ledState2;
}
delay(500);
}