fixed some things
This commit is contained in:
parent
1f70dede43
commit
51865df64f
164
src/main.cpp
164
src/main.cpp
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user