long StepperAinterval = 60000; // 60 seconds break time between MINUTE movements
long StepperBinterval = 360000; // 6 minute break time between HOUR movements
These should be:
long StepperAinterval = 60000UL; // 60 seconds break time between MINUTE movements
long StepperBinterval = 360000UL; // 6 minute break time between HOUR movements
MinuteHand.attach(MinuteHandPin); //Connects servo to relevent pin
HourHand.attach(HourHandPin);
Good names. It is very easy to see what you are doing.
// SET BOTH SERVOS TO 'MIDNIGHT'
MinuteHand.writeMicroseconds(1600); /// SET to 12.00
HourHand.writeMicroseconds(1600); /// SET to 12.00
I'm not a fan of magic numbers. I'd do something like this:
// Set initial position for servos
#define MIDNITE 1600
// SET BOTH SERVOS TO 'MIDNIGHT'
MinuteHand.writeMicroseconds(MIDNITE); /// SET to 12.00
HourHand.writeMicroseconds(MIDNITE); /// SET to 12.00
That way, if you need to change the value (to 1601 or 1599, for instance), you only need to do it in one place.
if ( mode == 0 && digitalRead (setupAswitch) == LOW){ mode = 1;}
if ( mode == 0 && digitalRead (setupBswitch) == LOW){ mode = 2;}
if ( mode == 0 && digitalRead (setupCswitch) == LOW){ mode = 3;}
if ( mode == 0 && digitalRead (setupDswitch) == LOW){ mode = 4;}
if ( mode == 0 && digitalRead (setupEswitch) == LOW){ mode = 5;}
if ( mode == 0 && digitalRead (setupFswitch) == LOW){ mode = 6;}
Using a nested if test would be better:
if(mode == 0)
{
if (digitalRead (setupAswitch) == LOW){ mode = 1;}
if (digitalRead (setupBswitch) == LOW){ mode = 2;}
if (digitalRead (setupCswitch) == LOW){ mode = 3;}
if (digitalRead (setupDswitch) == LOW){ mode = 4;}
if (digitalRead (setupEswitch) == LOW){ mode = 5;}
if (digitalRead (setupFswitch) == LOW){ mode = 6;}
}
if ( mode == 0 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 1 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 2 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 3 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 4 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 5 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 6 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
if ( mode == 7 && digitalRead (ResetSwitch) == LOW){ mode = 9;} //reset all
Again, a little restructuring here leads to more readable code:
if(digitalRead (ResetSwitch) == LOW)
{
if(mode > 0 && mode <= 7)
{
mode = 9;
}
}
(and a lot less of it...)
I don't see how cases 2 through 6 differ from each other. Can you point out what I missed?