Whandall:
Have a look at this approach to solve your problem
const byte Led_1 = 2;
const byte Led_2 = 3;
const byte Led_3 = 4;
enum {
allOn,
moveOne,
moveTwo,
moveThree,
allOff
};
byte cState = allOff;
unsigned long loopTop;
unsigned long lastEvent;
void setup() {
Serial.begin(9600);
pinMode(Led_1, OUTPUT);
pinMode(Led_2, OUTPUT);
pinMode(Led_3, OUTPUT);
setState(allOff);
}
void loop() {
loopTop = millis();
if (loopTop - lastEvent > 1000) { // do something 1 second after last action
tickState();
}
if (Serial.available()) {
byte leer = Serial.read();
if (leer == 'a') {
setState(allOn);
} else if (leer == 'b') {
setState(moveOne);
} else if (leer == 'c') {
setState(allOff);
}
}
}
void setState(byte setTo) {
Serial.print(loopTop);
Serial.print(": in ");
Serial.print(cState);
Serial.print(" enter ");
Serial.print(setTo);
Serial.println("");
switch (setTo) {
case allOn:
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_3, HIGH);
break;
case moveOne:
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, LOW);
digitalWrite(Led_3, LOW);
break;
case moveTwo:
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_3, LOW);
break;
case moveThree:
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_3, HIGH);
break;
case allOff:
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_3, LOW);
break;
default:
return;
}
cState = setTo;
lastEvent = loopTop;
}
void tickState() {
switch (cState) {
case moveOne: setState(moveTwo);
break;
case moveTwo: setState(moveThree);
break;
case moveThree: setState(moveOne);
break;
default:
return;
}
lastEvent = loopTop;
}
thanks for your help THIS was what I wanted without my knowledge but still get back there and I really would like you to tell me what You did understand paragraph .