In this code down below, I want the modes to return to the beginning as an endless loop when I press the button.
There's a gap between mode 1 and 5.
LED's turns off at the end of mode 5 and if I press again it's beginning from start which is mode 1 so I have write a #return code. How I could I do this?
const byte buttonPin = 2;
byte mode = 0;
const byte maxMode = 10;
byte currentState = LOW;
byte prevState = LOW;
void setup()
{
Serial.begin(115200);
pinMode(buttonPin, INPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void myDelay(unsigned long d) {
while (d > 0 && digitalRead(buttonPin) == currentState) {
delay(1);
d--;
}
}
void loop()
{
currentState = digitalRead(buttonPin);
if (currentState == LOW && prevState == HIGH)
{
mode++;
if (mode > maxMode)
{
mode = 0;
}
Serial.println(mode);
}
prevState = currentState;
switch (mode)
{
case 0:
Serial.println();
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(7, LOW);
digitalWrite(9, LOW);
digitalWrite(11, LOW);
myDelay(50);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(7, LOW);
digitalWrite(9, LOW);
digitalWrite(11, LOW);
myDelay(50);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(7, LOW);
digitalWrite(9, LOW);
digitalWrite(11, LOW);
myDelay(50);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
digitalWrite(10, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
myDelay(50);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
digitalWrite(10, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
myDelay(50);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
digitalWrite(10, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
myDelay(50);
break;
case 1:
Serial.println();
digitalWrite(5, HIGH);
myDelay(20);
digitalWrite(5, LOW);
myDelay(20);
digitalWrite(6, HIGH);
myDelay(20);
digitalWrite(6, LOW);
myDelay(20);
digitalWrite(7, HIGH);
myDelay(20);
digitalWrite(7, LOW);
myDelay(20);
digitalWrite(8, HIGH);
myDelay(20);
digitalWrite(8, LOW);
myDelay(20);
digitalWrite(9, HIGH);
myDelay(20);
digitalWrite(9, LOW);
myDelay(20);
digitalWrite(10, HIGH);
myDelay(20);
digitalWrite(10, LOW);
myDelay(20);
digitalWrite(11, HIGH);
myDelay(20);
digitalWrite(11, LOW);
myDelay(20);
digitalWrite(12, HIGH);
myDelay(20);
digitalWrite(12, LOW);
myDelay(20);
digitalWrite(11, HIGH);
myDelay(20);
digitalWrite(11, LOW);
myDelay(20);
digitalWrite(10, HIGH);
myDelay(20);
digitalWrite(10, LOW);
myDelay(20);
digitalWrite(9, HIGH);
myDelay(20);
digitalWrite(9, LOW);
myDelay(20);
digitalWrite(8, HIGH);
myDelay(20);
digitalWrite(8, LOW);
myDelay(20);
digitalWrite(7, HIGH);
myDelay(20);
digitalWrite(7, LOW);
myDelay(20);
digitalWrite(6, HIGH);
myDelay(20);
digitalWrite(6, LOW);
myDelay(20);
digitalWrite(5, HIGH);
myDelay(20);
digitalWrite(5, LOW);
myDelay(20);
break;
case 2:
Serial.println();
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
myDelay(50);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
myDelay(50);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
myDelay(50);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
myDelay(50);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(50);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(50);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(50);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(50);
break;
case 3:
Serial.println();
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(40);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(40);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(120);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(40);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(40);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
myDelay(40);
break;
case 4:
Serial.println();
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
myDelay(40);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
myDelay(40);
digitalWrite(7, HIGH);
digitalWrite(10, HIGH);
myDelay(40);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
myDelay(40);
digitalWrite(6, HIGH);
digitalWrite(11, HIGH);
myDelay(40);
digitalWrite(6, LOW);
digitalWrite(11, LOW);
myDelay(40);
digitalWrite(5, HIGH);
digitalWrite(12, HIGH);
myDelay(40);
digitalWrite(5, LOW);
digitalWrite(12, LOW);
break;
}
}