fixed some things
This commit is contained in:
parent
1f70dede43
commit
51865df64f
140
src/main.cpp
140
src/main.cpp
@ -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,24 +217,17 @@ void handleSetButton() {
|
||||
editMode = true;
|
||||
}
|
||||
else{
|
||||
if(!editingHour){
|
||||
editingHour = true;
|
||||
}
|
||||
else{
|
||||
editingHour = false;
|
||||
if(!editingMinute){
|
||||
editingMinute = true;
|
||||
}
|
||||
else{
|
||||
editingMinute = false;
|
||||
if(!editingSecond){
|
||||
editingSecond = true;
|
||||
}
|
||||
else{
|
||||
editingSecond = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -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){
|
||||
switch (editModeState){
|
||||
case EDIT_HOUR:
|
||||
setHour++;
|
||||
}
|
||||
if(editingMinute){
|
||||
break;
|
||||
case EDIT_MINUTE:
|
||||
setMinute++;
|
||||
}
|
||||
if(editingSecond){
|
||||
break;
|
||||
case EDIT_SECOND:
|
||||
setSecond++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_ALARM_TIME:
|
||||
if(editMode){
|
||||
if(editingHour){
|
||||
switch (editModeState){
|
||||
case EDIT_HOUR:
|
||||
alarmHour++;
|
||||
}
|
||||
if(editingMinute){
|
||||
break;
|
||||
case EDIT_MINUTE:
|
||||
alarmMinute++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -325,24 +330,28 @@ void handleDroiteButton() {
|
||||
break;
|
||||
case MENU_TIME:
|
||||
if(editMode){
|
||||
if(editingHour){
|
||||
switch (editModeState){
|
||||
case EDIT_HOUR:
|
||||
setHour--;
|
||||
}
|
||||
if(editingMinute){
|
||||
break;
|
||||
case EDIT_MINUTE:
|
||||
setMinute--;
|
||||
}
|
||||
if(editingSecond){
|
||||
break;
|
||||
case EDIT_SECOND:
|
||||
setSecond--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_ALARM_TIME:
|
||||
if(editMode){
|
||||
if(editingHour){
|
||||
switch (editModeState){
|
||||
case EDIT_HOUR:
|
||||
alarmHour--;
|
||||
}
|
||||
if(editingMinute){
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user