Hi All.
Some help with my code would be greatly appreciated.
I'm sequencing 3 led's to turn on one at a time e.g 1,2,3 at a long button press (start) and stay on.
Then turn off in turn e.g 3,2,1 at a second button (stop), long press too and stay off.
There are also 3 additional led's,
2 to indicate either the start or stop states and 1 to confirm that a button has been pressed.
The part of the code above the ************ works exactly how I've described above, but can't get it to reverse. I think the trouble is below the **********.
a little help please
int start = 3;
int stopp = 2;
int led1 = 9;
int led8 = 8;
int led7 = 7;
int led12 = 12;
int led11 = 11;
int led10 = 10;
unsigned long resetTheClock;
int interval = 2000;
int buttonSt = 0;
int buttonStp = 0;
bool flagWithNoFancyName = false;
void setup()
{ pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode (2, INPUT);
pinMode (3, INPUT);
}
void loop() {
buttonSt = digitalRead(start);
buttonStp = digitalRead (stopp);
if (buttonSt == HIGH) // start button not pressed
{ resetTheClock = millis();
flagWithNoFancyName = true;
}
if (buttonSt == LOW && flagWithNoFancyName) // start pressed for interval
{
digitalWrite(led1, HIGH); // button pressed led on
}
else
{
digitalWrite(led1, LOW); // button released led off
}
if (millis() - resetTheClock >= interval)
{ digitalWrite(led1, HIGH);
flagWithNoFancyName = false;
resetTheClock = millis();
delay (500);
digitalWrite (led7, LOW); //stop status led
digitalWrite (led8, HIGH); //start status led
digitalWrite(led12, HIGH); // sequence 1 led
delay (2000);
digitalWrite(led11, HIGH); // sequence 2 led
delay (2000);
digitalWrite(led10, HIGH); // sequence 3 led
delay (2000);
}
****************************************************************
// When I add this part in it all stops working
if (buttonStp == HIGH)
{ resetTheClock = millis();
flagWithNoFancyName = true;
}
if (buttonStp == LOW && flagWithNoFancyName)
{
digitalWrite(led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
if (millis() - resetTheClock >= interval)
{ digitalWrite(led1, HIGH);
flagWithNoFancyName = false;
resetTheClock = millis();
delay (500);
digitalWrite (led8, LOW);
delay (250);
digitalWrite (led7, HIGH);
digitalWrite(led10, LOW);
delay (2000);
digitalWrite(led11, LOW);
delay (2000);
digitalWrite(led12, LOW);
delay (2000);
}
}