我想用按键控制流水灯,期望效果是,按下开关按键,流水灯循环工作,再次按下,流水灯熄灭。但是现在是按下按键以后,流水灯只亮一次不能循环,求大神改错,越详细越好
int ledpin[]={6,7,8,};
int buttonpin=4;
int ledstate=LOW;
int buttonstate;
int lastbuttonstate=LOW;
long lastdebounceTime=0;
long debounceDelay=50;
void setup()
{
pinMode(buttonpin,INPUT);
for (int ledpin = 6; ledpin <= 8; ledpin++)
{
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
//digitalWrite(ledpin,ledstate);
}
}
void loop()
{
int ledpin;
if(lastbuttonstate != LOW)
{
for (ledpin = 6; ledpin <= 8; ledpin++)
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
}
for (ledpin = 8; ledpin <= 6; ledpin--)
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
}
}
int reading = digitalRead(buttonpin);
if(reading != lastbuttonstate)
{
lastdebounceTime = millis();
}
if((millis()-lastdebounceTime)>debounceDelay)
{
if(reading != buttonstate)
{
buttonstate = reading;
if(buttonstate==HIGH)
{
ledstate = !ledstate;
}
}
}
digitalWrite(ledpin,ledstate);
lastbuttonstate = reading;
}
int ledpin[]={6,7,8,};
int buttonpin=4;
int ledstate=LOW;
int buttonstate;
int lastbuttonstate=LOW;
long lastdebounceTime=0;
long debounceDelay=50;
void setup()
{
pinMode(buttonpin,INPUT);
for (int ledpin = 6; ledpin <= 8; ledpin++)
{
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
//digitalWrite(ledpin,ledstate);
}
}
void loop()
{
int ledpin;
if(lastbuttonstate != LOW)
{
for (ledpin = 6; ledpin <= 8; ledpin++)
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
}
for (ledpin = 8; ledpin <= 6; ledpin--)
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
}
}
int reading = digitalRead(buttonpin);
if(reading != lastbuttonstate)
{
lastdebounceTime = millis();
}
if((millis()-lastdebounceTime)>debounceDelay)
{
if(reading != buttonstate)
{
buttonstate = reading;
if(buttonstate==HIGH)
{
ledstate = !ledstate;
}
}
}
digitalWrite(ledpin,ledstate);
lastbuttonstate = reading;
}