add manual refresh

This commit is contained in:
Tomislav Kopić 2024-11-28 19:16:45 +01:00
parent 816ae120a2
commit f39713d97e
2 changed files with 22 additions and 11 deletions

View File

@ -1,5 +1,8 @@
extern Adafruit_SSD1306 display; // Reference to the OLED display object extern Adafruit_SSD1306 display; // Reference to the OLED display object
extern unsigned long lastRefresh;
extern const unsigned long refreshInterval;
bool is_display_off = false; // State variable to track display on/off status bool is_display_off = false; // State variable to track display on/off status
bool is_sound_off = false; // State variable to track display on/off status
int buttonDebounceDelay = 50; // Debounce delay in milliseconds int buttonDebounceDelay = 50; // Debounce delay in milliseconds
int buttonLongPressDelay = 2000; // Long press threshold in milliseconds int buttonLongPressDelay = 2000; // Long press threshold in milliseconds
@ -29,7 +32,10 @@ void cubeButtonHandler() {
if (!leftBeeped) { if (!leftBeeped) {
beep(1000); // Play beep for a short press beep(1000); // Play beep for a short press
leftBeeped = true; // Mark as beeped to avoid repeat beeps leftBeeped = true; // Mark as beeped to avoid repeat beeps
// Handle left short press action here if (is_sound_off) {
is_sound_off = false; // Update display state
beep(1600); // Additional beep to confirm display is on
}
} }
} }
} else { } else {
@ -43,7 +49,7 @@ void cubeButtonHandler() {
if (!middleBeeped) { if (!middleBeeped) {
beep(1000); // Play beep for a short press beep(1000); // Play beep for a short press
middleBeeped = true; // Mark as beeped to avoid repeat beeps middleBeeped = true; // Mark as beeped to avoid repeat beeps
// Handle middle short press action here lastRefresh = millis() + refreshInterval + 1;
} }
} }
} else { } else {
@ -71,10 +77,10 @@ void cubeButtonHandler() {
// Long press detection for left button // Long press detection for left button
if (leftPressed && (currentMillis - leftPressStart > buttonLongPressDelay)) { if (leftPressed && (currentMillis - leftPressStart > buttonLongPressDelay)) {
if (!leftBeeped) { if (!is_sound_off) { // Turn off the display if it's on
beep(1000); // Play beep for a long press beep(1400); // Beep to indicate display turn-off
leftBeeped = true; // Mark as beeped to avoid repeat beeps is_sound_off = true; // Update display state
// Handle left long press action here beep(1000); // Additional beep to confirm display is off
} }
} }

View File

@ -22,7 +22,7 @@ bool newProblemsDetected = false;
int totalProblems = 0; // Variable to store the total number of active problems int totalProblems = 0; // Variable to store the total number of active problems
// History buffer for the graph // History buffer for the graph
const int maxHistorySize = 30; const int maxHistorySize = 60;
int problemHistory[maxHistorySize] = {0}; // Array to store history int problemHistory[maxHistorySize] = {0}; // Array to store history
int historyIndex = 0; // Current index for the latest value int historyIndex = 0; // Current index for the latest value
@ -163,12 +163,16 @@ void displayProblems() {
display.clearDisplay(); display.clearDisplay();
display.setTextSize(1); display.setTextSize(1);
display.setCursor(0, 0); display.setCursor(0, 0);
display.printf(" I:%d W:%d A:%d H:%d D:%d", display.printf("I:%d W:%d A:%d H:%d D:%d",
severityCounts[1], severityCounts[1],
severityCounts[2], severityCounts[2],
severityCounts[3], severityCounts[3],
severityCounts[4], severityCounts[4],
severityCounts[5]); severityCounts[5]);
if (is_sound_off) {
display.setCursor(122, 0);
display.print("X");
}
display.drawLine(0, 45, 127, 45, 1); // Line under the graph display.drawLine(0, 45, 127, 45, 1); // Line under the graph
display.drawLine(0, 10, 127, 10, 1); // Line under the graph display.drawLine(0, 10, 127, 10, 1); // Line under the graph
@ -208,8 +212,9 @@ void displayProblems() {
display.setCursor(scrollPos, 48); display.setCursor(scrollPos, 48);
display.print(problemDescriptions); display.print(problemDescriptions);
display.setTextSize(1); display.setTextSize(1);
display.fillRect(112,35,10,10,0); display.fillRect(112,35,16,11,0);
display.setCursor(113,36); display.drawRect(112,35,16,11,1);
display.setCursor(113,37);
display.print(totalProblems); display.print(totalProblems);
display.display(); display.display();
} }
@ -231,7 +236,7 @@ void loop() {
displayProblems(); displayProblems();
if (newProblemsDetected) { if (newProblemsDetected && !is_sound_off) {
playAlertMelody(); playAlertMelody();
newProblemsDetected = false; newProblemsDetected = false;
} }