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 <EEPROM.h>
@ -25,9 +25,6 @@ LiquidCrystal lcd(LCD_D12, LCD_D11, LCD_D5, LCD_D4, LCD_D3, LCD_D2);
// Global Variables
bool alarmEnabled = true;
bool editMode = false;
bool editingHour = false;
bool editingMinute = false;
bool editingSecond = false;
bool isAlarmSet = false;
bool menuButtonPressed = false;
bool setButtonPressed = false;
@ -42,7 +39,15 @@ byte setSecond = 0;
byte alarmHour = 0;
byte alarmMinute = 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 {
MENU_OFF,
@ -81,9 +86,9 @@ void updateTemperature() {
void updateTime() {
// Update the time variables based on the elapsed time
second = millis() / 1000;
minute = second / 60;
hour = second / 3600;
second = (millis() / 1000) + setSecond;
minute = (second / 60) + setMinute;
hour = (second / 3600) + setHour;
minute %= 60;
second %= 60;
hour %= 24;
@ -94,7 +99,7 @@ void displayTime() {
// Display current time on the LCD
lcd.setCursor(0, 0); // Set cursor to top-left corner
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);
}
@ -140,7 +145,7 @@ void displayMenuInfo(){
char str[16];
switch (menuState) {
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);
break;
case MENU_ALARM_TIME:
@ -171,18 +176,26 @@ void handleMenuButton() {
case MENU_OFF:
lcd.clear();
menuState = MENU_TIME;
editModeState = EDIT_HOUR;
editMode = false;
break;
case MENU_TIME:
lcd.clear();
menuState = MENU_ALARM_TIME;
editModeState = EDIT_HOUR;
editMode = false;
break;
case MENU_ALARM_TIME:
lcd.clear();
menuState = MENU_ALARM_STATUS;
editModeState = EDIT_HOUR;
editMode = false;
break;
case MENU_ALARM_STATUS:
lcd.clear();
menuState = MENU_OFF;
editModeState = EDIT_HOUR;
editMode = false;
break;
}
@ -204,25 +217,18 @@ void handleSetButton() {
editMode = true;
}
else{
if(!editingHour){
editingHour = true;
}
else{
editingHour = false;
if(!editingMinute){
editingMinute = true;
switch (editModeState){
case EDIT_HOUR:
editModeState = EDIT_MINUTE;
break;
case EDIT_MINUTE:
editModeState = EDIT_SECOND;
break;
case EDIT_SECOND:
editMode = false;
editModeState = EDIT_HOUR;
break;
}
else{
editingMinute = false;
if(!editingSecond){
editingSecond = true;
}
else{
editingSecond = false;
editMode = false;
}
}
}
}
break;
case MENU_ALARM_TIME:
@ -230,19 +236,14 @@ void handleSetButton() {
editMode = true;
}
else{
if(!editingHour){
editingHour = true;
}
else{
editingHour = false;
if(!editingMinute){
editingMinute = true;
}
else{
editingMinute = false;
switch (editModeState){
case EDIT_HOUR:
editModeState = EDIT_MINUTE;
break;
case EDIT_MINUTE:
editModeState = EDIT_HOUR;
editMode = false;
setAlarm();
}
break;
}
}
break;
@ -277,24 +278,28 @@ void handleGaucheButton() {
break;
case MENU_TIME:
if(editMode){
if(editingHour){
setHour++;
}
if(editingMinute){
setMinute++;
}
if(editingSecond){
setSecond++;
switch (editModeState){
case EDIT_HOUR:
setHour++;
break;
case EDIT_MINUTE:
setMinute++;
break;
case EDIT_SECOND:
setSecond++;
break;
}
}
break;
case MENU_ALARM_TIME:
if(editMode){
if(editingHour){
alarmHour++;
}
if(editingMinute){
alarmMinute++;
switch (editModeState){
case EDIT_HOUR:
alarmHour++;
break;
case EDIT_MINUTE:
alarmMinute++;
break;
}
}
break;
@ -325,24 +330,28 @@ void handleDroiteButton() {
break;
case MENU_TIME:
if(editMode){
if(editingHour){
setHour--;
}
if(editingMinute){
setMinute--;
}
if(editingSecond){
setSecond--;
switch (editModeState){
case EDIT_HOUR:
setHour--;
break;
case EDIT_MINUTE:
setMinute--;
break;
case EDIT_SECOND:
setSecond--;
break;
}
}
break;
case MENU_ALARM_TIME:
if(editMode){
if(editingHour){
alarmHour--;
}
if(editingMinute){
alarmMinute--;
switch (editModeState){
case EDIT_HOUR:
alarmHour--;
break;
case EDIT_MINUTE:
alarmMinute--;
break;
}
}
break;
@ -356,10 +365,11 @@ void handleDroiteButton() {
}
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
alarmState = ALARM_ON;
alarmStartTime = millis();
ledTimer = 0;
}
}
@ -434,15 +444,13 @@ void setup() {
}
void loop() {
// Update time
updateTime();
if(menuState == MENU_OFF){
// Update temperature
updateTemperature();
// Update time
updateTime();
// Display information on LCD
displayTime();
displayTemperature();
@ -457,6 +465,17 @@ void loop() {
stopAlarm();
break;
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);
break;
@ -465,6 +484,7 @@ void loop() {
if (millis() - alarmStartTime >= snoozeDuration) {
alarmState = ALARM_ON;
alarmStartTime = millis();
ledTimer = 0;
}
break;
}