From 7480904c07d83f7176b5d2846cba143f63464598 Mon Sep 17 00:00:00 2001 From: egorguslyan <egorguslyan@gmail.com> Date: Sat, 1 Jan 2022 12:43:18 +0300 Subject: [PATCH] millis() reset, no animations --- Dashboard/Dashboard.ino | 28 ++++++++++++++++++++++++---- Dashboard/screens.h | 10 ++++++---- Dashboard/textbox.h | 13 +++++++++++-- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/Dashboard/Dashboard.ino b/Dashboard/Dashboard.ino index fa96141..4dd20f2 100644 --- a/Dashboard/Dashboard.ino +++ b/Dashboard/Dashboard.ino @@ -82,14 +82,21 @@ struct uint8_t currentState; uint8_t animation : 4; uint8_t prepare : 2; - uint64_t timer; + uint32_t timer; uint8_t tapLeft : 1; uint8_t tapRight : 1; uint8_t swipeLeft : 1; uint8_t swipeRight : 1; uint8_t holdLeft : 1; uint8_t holdRight : 1; - mData leds[0 /*NUMLEDS*/]; // Sorry, but this buffer drains a lot of memory + // mData leds[NUMLEDS]; + void leds; // Sorry, but this buffer drains a lot of memory + + // Measured data + uint16_t ppm : 13; // CO2 ppm (surely cant be more than 8192) + uint8_t hours : 5; + uint8_t minutes : 6; + uint8_t seconds : 6; } globalVars; microLED<NUMLEDS, LEDsPin, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_AVER, SAVE_MILLIS> matrix(WIDTH, HEIGHT, ZIGZAG, RIGHT_TOP, DIR_LEFT); @@ -98,6 +105,8 @@ textbox tb; #include "configScreens.h" MHZ19_uart co2; +extern volatile unsigned long timer0_millis; + void setup() { // Hardware init @@ -108,7 +117,7 @@ void setup() co2.setAutoCalibration(false); Serial.begin(9600); // For safe debugging - while (!Serial.available()) {} + //while (!Serial.available()) {} Serial.println("Hello"); // Reading settings from nonvolatile memory @@ -130,7 +139,7 @@ void setup() void loop() { // Terminate if buttuns are holded - static uint64_t timer_debug0 = 0; + static uint32_t timer_debug0 = 0; static bool button = 0; static bool last_button = 0; last_button = button; @@ -156,4 +165,15 @@ void loop() } matrix.show(); + + // Monthly preventative safe reset of the millis() timer + TIMER(0, 3456000000) + { + noInterrupts(); + timer0_millis = 0; + interrupts(); + globalVars.timer = 0; + tb.resetTimers(); + timer_debug0 = 0; + } } \ No newline at end of file diff --git a/Dashboard/screens.h b/Dashboard/screens.h index 85afdce..76eea57 100644 --- a/Dashboard/screens.h +++ b/Dashboard/screens.h @@ -26,11 +26,11 @@ void changeScreen(uint8_t current, uint8_t next) void animate(uint16_t reciprocal_speed) { - static uint8_t counter = 0; - TIMER(globalVars.timer, reciprocal_speed) + //if(globalVars.animation == NO_ANIMATION) + if(true) { - globalVars.timer = millis(); - + globalVars.prepare = 0; + return; } } @@ -74,12 +74,14 @@ void welcome(Arg *arg) globalVars.currentState++; globalVars.timer = millis(); break; + // Setup textbox case 2: char S[20]; strcpy_P(S, pgm_read_word(strings[0])); tb.setup(S, LANGMASK(0), COLOR2, TB_REPEAT, 1, 1, 14, 100); globalVars.currentState++; break; + // Render until it disappears case 3: if(tb.render()) globalVars.timer = millis(); if(globalVars.swipeLeft) diff --git a/Dashboard/textbox.h b/Dashboard/textbox.h index c76bcea..042a006 100644 --- a/Dashboard/textbox.h +++ b/Dashboard/textbox.h @@ -33,7 +33,7 @@ private: uint64_t langMask; bool native; void getLetter(uint8_t i, bool skipBitmap = 0); - uint64_t timer0; + uint32_t timer0; public: textbox(void); @@ -45,6 +45,7 @@ public: uint8_t render(void); void disable(void); void changeCords(uint8_t newx, uint8_t newy); + void resetTimers(void); }; textbox::textbox(void) @@ -115,6 +116,7 @@ void textbox::setup(char _text[], uint64_t _langMask, uint8_t textbox::render(void) { + uint8_t r = 1; // Return 1 if rendered, 2 if rendered with new cycle if (mode != TB_DISABLED) { // If static or kickstart @@ -134,6 +136,7 @@ uint8_t textbox::render(void) { if ((!direction && offset == -textwidth + w) || (direction && offset == 0)) { + r = direction + 1; direction = !direction; state = 0; } @@ -147,6 +150,7 @@ uint8_t textbox::render(void) { offset = 0 + (mode == TB_REPEAT) * w; state = 0; + r = 2; } } } @@ -206,7 +210,7 @@ uint8_t textbox::render(void) index = 0; } } - return 1; + return r; } void textbox::disable(void) @@ -244,4 +248,9 @@ void textbox::changeCords(uint8_t newx, uint8_t newy) { cord_x = newx; cord_y = newy; +} + +void textbox::resetTimers(void) +{ + timer0 = 0; } \ No newline at end of file -- GitLab