Well, I'm sure it's pretty easy to accomplish.
First of all, ditch that Scheduler. You don't need it.
Then rename all those functions to something more sensible, and get back your loop().
Next, fix your code. I don't see any yield() in those functions, so it seems it just runs one loop, when it finished the second, etc. Not much scheduling going on, really, as I see it. Also you repeat the same action over and over again, instead of using a for() loop for this.
So, take for example, this function loop4:
void loop4() {
digitalWrite(Pennsylvania, HIGH);
delay(500);
digitalWrite(Pennsylvania, LOW);
delay(500);
digitalWrite(Pennsylvania, HIGH);
delay(500);
digitalWrite(Pennsylvania, LOW);
delay(500); digitalWrite(Pennsylvania, HIGH);
delay(500);
digitalWrite(Pennsylvania, LOW);
delay(500); digitalWrite(Pennsylvania, HIGH);
delay(500);
digitalWrite(Pennsylvania, LOW);
delay(500);
delay(5500);
}
You could make this a lot shorter and more readable:
void Pennsylvania() {
for (byte i = 0; i < 4; i++) {
digitalWrite(Pennsylvania, HIGH);
delay(500);
digitalWrite(Pennsylvania, LOW);
delay(500);
}
delay(5500);
}
Do that for all your functions, and then you get a loop like this:
void loop() {
Pennsylvania();
// the other states
}
Now I'm not too sure about this scheduler - I don't see any yield() so it seems one function has to finish before another can be started. You can have them run concurrently just as well, but then you have to switch to millis() timing, so each function returns very fast. Your Pennsylvania function then becomes this (mind the global variable declarations):
uint32_t PennsylvaniaTime;
bool PennsylvaniaState = true;
byte PennsylvaniaIteration = 0;
void Pennsylvania() {
if (PennsylvaniaIteration < 8) { // 4 on and 4 off states.
if (millis() - PennsylvaniaTime > 500) {
digitalWrite(Pennsylvania, PennsylvaniaState);
PennsylvaniaState = !PennsylvaniaState;
PennsylvaniaTime += 500;
}
}
else if (millis() - PennsylvaniaTime > 5500) {
PennsylvaniaTime += 5500;
PennsylvaniaIterations = 0;
PennsylvaniaState = HIGH;
}
}
Do the same for all your states, and call all functions from loop(), and all runs nicely concurrently.
Then to switch the whole shebang on and off just add a check for the time, and if outside opening hours just don't call those functions. Do add a separate function to switch off all the LEDs.