fixed some things

This commit is contained in:
thatscringebro 2023-10-08 15:50:17 -04:00
parent 1f70dede43
commit 51865df64f

View File

@ -1,4 +1,4 @@
#include <Arduino.h> //#include <Arduino.h>
#include <LiquidCrystal.h> #include <LiquidCrystal.h>
#include <EEPROM.h> #include <EEPROM.h>
@ -25,9 +25,6 @@ LiquidCrystal lcd(LCD_D12, LCD_D11, LCD_D5, LCD_D4, LCD_D3, LCD_D2);
// Global Variables // Global Variables
bool alarmEnabled = true; bool alarmEnabled = true;
bool editMode = false; bool editMode = false;
bool editingHour = false;
bool editingMinute = false;
bool editingSecond = false;
bool isAlarmSet = false; bool isAlarmSet = false;
bool menuButtonPressed = false; bool menuButtonPressed = false;
bool setButtonPressed = false; bool setButtonPressed = false;
@ -42,7 +39,15 @@ byte setSecond = 0;
byte alarmHour = 0; byte alarmHour = 0;
byte alarmMinute = 0; byte alarmMinute = 0;
float temperature = 0.0; float temperature = 0.0;
int ledTimer = 0; unsigned int ledTimer;
enum EditModeState{
EDIT_HOUR,
EDIT_MINUTE,
EDIT_SECOND
};
EditModeState editModeState = EDIT_HOUR;
enum MenuState { enum MenuState {
MENU_OFF, MENU_OFF,
@ -81,9 +86,9 @@ void updateTemperature() {
void updateTime() { void updateTime() {
// Update the time variables based on the elapsed time // Update the time variables based on the elapsed time
second = millis() / 1000; second = (millis() / 1000) + setSecond;
minute = second / 60; minute = (second / 60) + setMinute;
hour = second / 3600; hour = (second / 3600) + setHour;
minute %= 60; minute %= 60;
second %= 60; second %= 60;
hour %= 24; hour %= 24;
@ -94,7 +99,7 @@ void displayTime() {
// Display current time on the LCD // Display current time on the LCD
lcd.setCursor(0, 0); // Set cursor to top-left corner lcd.setCursor(0, 0); // Set cursor to top-left corner
char str[16]; char str[16];
snprintf(str, sizeof(str), "%02d:%02d:%02d", hour + setHour, minute + setMinute, second + setSecond); snprintf(str, sizeof(str), "%02d:%02d:%02d", hour, minute, second);
lcd.print(str); lcd.print(str);
} }
@ -140,7 +145,7 @@ void displayMenuInfo(){
char str[16]; char str[16];
switch (menuState) { switch (menuState) {
case MENU_TIME: case MENU_TIME:
snprintf(str, sizeof(str), "%02d:%02d:%02d", hour + setHour, minute + setMinute, second); snprintf(str, sizeof(str), "%02d:%02d:%02d", hour, minute, second);
lcd.print(str); lcd.print(str);
break; break;
case MENU_ALARM_TIME: case MENU_ALARM_TIME:
@ -171,18 +176,26 @@ void handleMenuButton() {
case MENU_OFF: case MENU_OFF:
lcd.clear(); lcd.clear();
menuState = MENU_TIME; menuState = MENU_TIME;
editModeState = EDIT_HOUR;
editMode = false;
break; break;
case MENU_TIME: case MENU_TIME:
lcd.clear(); lcd.clear();
menuState = MENU_ALARM_TIME; menuState = MENU_ALARM_TIME;
editModeState = EDIT_HOUR;
editMode = false;
break; break;
case MENU_ALARM_TIME: case MENU_ALARM_TIME:
lcd.clear(); lcd.clear();
menuState = MENU_ALARM_STATUS; menuState = MENU_ALARM_STATUS;
editModeState = EDIT_HOUR;
editMode = false;
break; break;
case MENU_ALARM_STATUS: case MENU_ALARM_STATUS:
lcd.clear(); lcd.clear();
menuState = MENU_OFF; menuState = MENU_OFF;
editModeState = EDIT_HOUR;
editMode = false;
break; break;
} }
@ -204,25 +217,18 @@ void handleSetButton() {
editMode = true; editMode = true;
} }
else{ else{
if(!editingHour){ switch (editModeState){
editingHour = true; case EDIT_HOUR:
} editModeState = EDIT_MINUTE;
else{ break;
editingHour = false; case EDIT_MINUTE:
if(!editingMinute){ editModeState = EDIT_SECOND;
editingMinute = true; break;
case EDIT_SECOND:
editMode = false;
editModeState = EDIT_HOUR;
break;
} }
else{
editingMinute = false;
if(!editingSecond){
editingSecond = true;
}
else{
editingSecond = false;
editMode = false;
}
}
}
} }
break; break;
case MENU_ALARM_TIME: case MENU_ALARM_TIME:
@ -230,19 +236,14 @@ void handleSetButton() {
editMode = true; editMode = true;
} }
else{ else{
if(!editingHour){ switch (editModeState){
editingHour = true; case EDIT_HOUR:
} editModeState = EDIT_MINUTE;
else{ break;
editingHour = false; case EDIT_MINUTE:
if(!editingMinute){ editModeState = EDIT_HOUR;
editingMinute = true;
}
else{
editingMinute = false;
editMode = false; editMode = false;
setAlarm(); break;
}
} }
} }
break; break;
@ -277,24 +278,28 @@ void handleGaucheButton() {
break; break;
case MENU_TIME: case MENU_TIME:
if(editMode){ if(editMode){
if(editingHour){ switch (editModeState){
setHour++; case EDIT_HOUR:
} setHour++;
if(editingMinute){ break;
setMinute++; case EDIT_MINUTE:
} setMinute++;
if(editingSecond){ break;
setSecond++; case EDIT_SECOND:
setSecond++;
break;
} }
} }
break; break;
case MENU_ALARM_TIME: case MENU_ALARM_TIME:
if(editMode){ if(editMode){
if(editingHour){ switch (editModeState){
alarmHour++; case EDIT_HOUR:
} alarmHour++;
if(editingMinute){ break;
alarmMinute++; case EDIT_MINUTE:
alarmMinute++;
break;
} }
} }
break; break;
@ -325,24 +330,28 @@ void handleDroiteButton() {
break; break;
case MENU_TIME: case MENU_TIME:
if(editMode){ if(editMode){
if(editingHour){ switch (editModeState){
setHour--; case EDIT_HOUR:
} setHour--;
if(editingMinute){ break;
setMinute--; case EDIT_MINUTE:
} setMinute--;
if(editingSecond){ break;
setSecond--; case EDIT_SECOND:
setSecond--;
break;
} }
} }
break; break;
case MENU_ALARM_TIME: case MENU_ALARM_TIME:
if(editMode){ if(editMode){
if(editingHour){ switch (editModeState){
alarmHour--; case EDIT_HOUR:
} alarmHour--;
if(editingMinute){ break;
alarmMinute--; case EDIT_MINUTE:
alarmMinute--;
break;
} }
} }
break; break;
@ -356,10 +365,11 @@ void handleDroiteButton() {
} }
void checkAlarm() { void checkAlarm() {
if (alarmEnabled && (hour + setHour == alarmHour) && (minute + setMinute == alarmMinute) && alarmState == ALARM_OFF) { if (alarmEnabled && (hour == alarmHour) && (minute == alarmMinute) && alarmState == ALARM_OFF) {
// Set alarm state to sound // Set alarm state to sound
alarmState = ALARM_ON; alarmState = ALARM_ON;
alarmStartTime = millis(); alarmStartTime = millis();
ledTimer = 0;
} }
} }
@ -434,15 +444,13 @@ void setup() {
} }
void loop() { void loop() {
// Update time
updateTime();
if(menuState == MENU_OFF){ if(menuState == MENU_OFF){
// Update temperature // Update temperature
updateTemperature(); updateTemperature();
// Update time
updateTime();
// Display information on LCD // Display information on LCD
displayTime(); displayTime();
displayTemperature(); displayTemperature();
@ -457,7 +465,18 @@ void loop() {
stopAlarm(); stopAlarm();
break; break;
case ALARM_ON: case ALARM_ON:
if (ledTimer <= 250){
digitalWrite(ALARM_LED_PIN, HIGH);
ledTimer += millis();
}
else if (ledTimer <= 750){
digitalWrite(ALARM_LED_PIN, LOW);
ledTimer += millis();
}
else{
ledTimer = 0;
}
tone(BUZZER_PIN, 300); tone(BUZZER_PIN, 300);
break; break;
case ALARM_SNOOZE: case ALARM_SNOOZE:
@ -465,6 +484,7 @@ void loop() {
if (millis() - alarmStartTime >= snoozeDuration) { if (millis() - alarmStartTime >= snoozeDuration) {
alarmState = ALARM_ON; alarmState = ALARM_ON;
alarmStartTime = millis(); alarmStartTime = millis();
ledTimer = 0;
} }
break; break;
} }