mirror of
https://github.com/KevinMidboe/Arduino.git
synced 2025-10-29 09:30:12 +00:00
223 lines
5.5 KiB
C++
223 lines
5.5 KiB
C++
//*******************************************************************************************************************
|
|
// Main Loop
|
|
//*******************************************************************************************************************
|
|
void loop()
|
|
{
|
|
// Test for Sleep ------------------------------------------------*
|
|
|
|
currentMillis = millis();
|
|
OptionModeFlag = false;
|
|
|
|
if(((currentMillis - SleepTimer) > SleepLimit) && SleepEnable)
|
|
{
|
|
|
|
if(STATE= 1) // New for ST Desk Clock - goto Time vs Sleep
|
|
{
|
|
SUBSTATE = 1;
|
|
blinkON = true;
|
|
blinkFlag = false;
|
|
blinkMin = false;
|
|
blinkHour = false;
|
|
}else
|
|
{
|
|
STATE= 1; // was STATE= 99;
|
|
SUBSTATE = 0;
|
|
}
|
|
|
|
SleepTimer = millis();
|
|
|
|
}
|
|
|
|
// Test for Mode Button Press ------------------------------------*
|
|
|
|
bval = !digitalRead(MODEBUTTON);
|
|
if(bval)
|
|
{
|
|
if(ALARMON)
|
|
{
|
|
CheckAlarm();
|
|
}
|
|
|
|
if(ALARM1FLAG)
|
|
{
|
|
ALARM1FLAG = false;
|
|
ALARMON = false;
|
|
EnableAlarm1(false);
|
|
STATE = 90;
|
|
JustWokeUpFlag = false;
|
|
}
|
|
else
|
|
{
|
|
if(JustWokeUpFlag)
|
|
{
|
|
JustWokeUpFlag = false;
|
|
JustWokeUpFlag2 = true; // Used to supress "Time" text from showing when waking up.
|
|
}
|
|
else
|
|
{
|
|
NextStateRequest = true;
|
|
}
|
|
// SUBSTATE = 99;
|
|
|
|
while(bval)
|
|
{
|
|
bval = !digitalRead(SETBUTTON);
|
|
if(bval)
|
|
{
|
|
OptionModeFlag = true;
|
|
NextStateRequest = false;
|
|
NextSUBStateRequest = false;
|
|
displayString("SPEC");
|
|
delay(300);
|
|
}
|
|
bval = !digitalRead(MODEBUTTON);
|
|
}
|
|
|
|
delay(100);
|
|
SleepTimer = millis();
|
|
}
|
|
}
|
|
|
|
// Test for SET Button Press ------------------------------------*
|
|
|
|
bval = !digitalRead(SETBUTTON);
|
|
if(bval && !OptionModeFlag)
|
|
{
|
|
NextSUBStateRequest = true;
|
|
|
|
while(bval)
|
|
{
|
|
|
|
bval = !digitalRead(MODEBUTTON);
|
|
if(bval)
|
|
{
|
|
OptionModeFlag = true;
|
|
NextStateRequest = false;
|
|
NextSUBStateRequest = false;
|
|
displayString("SPEC");
|
|
delay(300);
|
|
}
|
|
|
|
|
|
bval = !digitalRead(SETBUTTON);
|
|
}
|
|
delay(100);
|
|
SleepTimer = millis();
|
|
}
|
|
|
|
// Running Blink counter ------------------------------------*
|
|
if(blinkFlag)
|
|
{
|
|
blinkCounter = blinkCounter +1;
|
|
if(blinkCounter >blinkTime) // was 150
|
|
{
|
|
blinkON = !blinkON;
|
|
blinkCounter = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
blinkON = true; // Not blinking, just leave the LEDs lit
|
|
}
|
|
|
|
//*******************************************************************************************************************
|
|
// Main Loop - State Machine
|
|
//*******************************************************************************************************************
|
|
|
|
switch (STATE)
|
|
{
|
|
case 0: // Set-Up
|
|
STATE = 1;
|
|
break;
|
|
|
|
case 1: // Display Time
|
|
DisplayTimeSub();
|
|
break;
|
|
|
|
case 2: // Set Time
|
|
setAlarmSub();
|
|
break;
|
|
|
|
case 3: // Config Alarm
|
|
setTimeSub();
|
|
break;
|
|
|
|
case 4: // Stop Watch
|
|
StopWatch();
|
|
break;
|
|
|
|
|
|
case 5: // Serial Display
|
|
DisplaySerialData();
|
|
break;
|
|
|
|
case 6: // Graphic Demo
|
|
graphican();
|
|
break;
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
case 90: // Alarm Triggered
|
|
|
|
blinkFlag = true;
|
|
displayString("Beep");
|
|
|
|
if(blinkON)
|
|
{
|
|
pinMode(SETBUTTON, OUTPUT);
|
|
tone(SETBUTTON,4000) ;
|
|
delay(100);
|
|
noTone(SETBUTTON);
|
|
digitalWrite(SETBUTTON, HIGH);
|
|
}
|
|
|
|
#if ARDUINO >= 101
|
|
pinMode(SETBUTTON, INPUT_PULLUP);
|
|
// digitalWrite(SETBUTTON, HIGH);
|
|
#else
|
|
// digitalWrite(SETBUTTON, HIGH);
|
|
pinMode(SETBUTTON, INPUT);
|
|
#endif
|
|
delay(250);
|
|
|
|
// bval = !digitalRead(SETBUTTON);
|
|
if(NextSUBStateRequest | NextStateRequest)
|
|
{
|
|
STATE = 0;
|
|
SUBSTATE = 0;
|
|
// NextStateFlag = true;
|
|
NextStateRequest = false;
|
|
NextSUBStateRequest = false;
|
|
blinkFlag = false;
|
|
}
|
|
break;
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
case 99: // Sleep
|
|
displayString("Nite");
|
|
delay(500);
|
|
clearmatrix();
|
|
GoToSleep();
|
|
SleepTimer = millis();
|
|
STATE = 0;
|
|
SUBSTATE = 0;
|
|
break;
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
}
|
|
}
|
|
|
|
|
|
//*******************************************************************************************************************
|
|
// End of Main Loop
|
|
//*******************************************************************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|