From 0ccaf2f4244fce105ae4f0423f3838d4a7d1183d Mon Sep 17 00:00:00 2001 From: sieja Date: Mon, 23 Jun 2025 11:31:26 +0200 Subject: [PATCH] =?UTF-8?q?Poprawa=20interwa=C5=82=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TempHumLoggerHomeKit.ino | 98 ++++++++----------- 1 file changed, 43 insertions(+), 55 deletions(-) diff --git a/ESP32/TempHumLoggerHomeKit/TempHumLoggerHomeKit.ino b/ESP32/TempHumLoggerHomeKit/TempHumLoggerHomeKit.ino index 6ad932b..524fda3 100644 --- a/ESP32/TempHumLoggerHomeKit/TempHumLoggerHomeKit.ino +++ b/ESP32/TempHumLoggerHomeKit/TempHumLoggerHomeKit.ino @@ -10,7 +10,7 @@ #include "SD.h" #include "SPI.h" -#define Version "0.48" +#define Version "0.5" #define WIRE Wire #define DHTTYPE DHT22 #define DHTPIN 4 //GPIO04 D4 @@ -50,6 +50,8 @@ int menuL0 = 10; int menuL1 = 10; int menuL2 = 10; +int sd_error = 0; + float temp = 0.0; float tempH = 0.0; float tempHCalc = 0.0; @@ -82,7 +84,7 @@ int months; int years; //########################################################################################################################## -int intervalTempIdx = 3; +int intervalTempIdx = 4; int intervalTempWrite = 0; int intervalTempWriteMins = 0; int intervalTempWriteHours = 0; @@ -215,7 +217,7 @@ float chargeVoltageToPercentage(float voltage) { } void setup() { - Serial.begin(115200); + Serial.begin(9600); Wire.begin(21, 22); analogSetAttenuation(ADC_11db); @@ -282,6 +284,7 @@ void setup() { display.setCursor(0, 0); if (!SD.begin(SD_CS)) { display.println("Blad inicjaliz SD!"); + sd_error = 1; display.display(); delay(1000); } else { @@ -314,7 +317,6 @@ void setup() { file.close(); - display.display(); delay(500); @@ -371,13 +373,6 @@ void setup() { void loop() { currentMillis = millis(); display.clearDisplay(); - ////DIAGNOSTIC menu nr diag - // display.setCursor(75, 16); - // display.println(menuL0); - // display.setCursor(90, 16); - // display.println(menuL1); - // display.setCursor(105, 16); - // display.println(menuL2); temp = dht.readTemperature(); tempH = (dhtH.readTemperature() - 0.16); //kalibracja @@ -419,8 +414,6 @@ void loop() { sprintf(dateString, "%02d/%02d/%4d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second()); - - if (menuL0 == 10) { // ############# MENU TEMP @@ -474,21 +467,17 @@ void loop() { display.setCursor(0, 18); display.print("Inwerwal: "); - - //########################################################################################################################## - - - if (intervalTempIdx == 1) { - intervalTempWrite = 1; - } else if (intervalTempIdx == 2) { - intervalTempWrite = 5; - } else if (intervalTempIdx == 3) { - intervalTempWrite = 15; - } else if (intervalTempIdx == 4) { - intervalTempWrite = 60; - } else { - intervalTempWrite = 360; - } + if (intervalTempIdx == 1) { + intervalTempWrite = 1; + } else if (intervalTempIdx == 2) { + intervalTempWrite = 5; + } else if (intervalTempIdx == 3) { + intervalTempWrite = 15; + } else if (intervalTempIdx == 4) { + intervalTempWrite = 60; + } else { + intervalTempWrite = 360; + } if (intervalTempWrite >= 60) { display.setCursor(60, 18); display.print((intervalTempWrite / 60)); @@ -504,7 +493,7 @@ void loop() { if (menuL1 == 9) { display.setCursor(0, 8); delay(100); - display.print("Ustaw Interwal"); + display.print("Ustaw Interwal"); delay(100); if (digitalRead(BTN_ENTER) == HIGH and menuL2 == 10) { @@ -528,17 +517,17 @@ void loop() { } else { intervalTempWrite = 360; } - if (intervalTempWrite >= 60) { - display.setCursor(60, 16); - display.print((intervalTempWrite / 60)); - display.setCursor(80, 16); - display.print("godz"); - } else { - display.setCursor(60, 16); - display.print((intervalTempWrite)); - display.setCursor(80, 16); - display.print("min"); - } + if (intervalTempWrite >= 60) { + display.setCursor(60, 16); + display.print((intervalTempWrite / 60)); + display.setCursor(80, 16); + display.print("godz"); + } else { + display.setCursor(60, 16); + display.print((intervalTempWrite)); + display.setCursor(80, 16); + display.print("min"); + } delay(250); if (digitalRead(BTN_ENTER) == HIGH) { @@ -547,7 +536,6 @@ void loop() { intervalToSet = -1; } } - } if (menuL1 == 8) { display.setCursor(0, 8); @@ -829,7 +817,7 @@ void loop() { if (mins % 1 == 0 && secs == 7) { File file = SD.open("/GeneralLog.txt", FILE_APPEND); if (file) { - display.fillRect(0, 0, 128, 64, SSD1306_WHITE); + display.fillRect(0, 32, 128, 32, SSD1306_WHITE); file.print(dateString); file.print(" Battery %: "); file.print(batteryPercent); @@ -837,23 +825,21 @@ void loop() { file.println(formatNumber(currentBatteryVoltage, 2)); file.close(); } - } - Serial.println("intervalTempWrite"); - Serial.println(intervalTempWrite); - Serial.println("dzielenie"); - Serial.println(mins % intervalTempWrite); + } + + //zapis na SD temp i hum - if (intervalTempWrite >=360){ - intervalTempWriteHours = (intervalTempWrite/60); + if (intervalTempWrite >= 60) { + intervalTempWriteHours = (intervalTempWrite / 60); } else { intervalTempWriteHours = -1; } - if (((intervalTempWriteHours == -1 && mins == 0) or (intervalTempWriteHours == hourss && mins == 0)) && secs == 0){ - // mins % intervalTempWrite == 0 && secs == 0) { + if (((intervalTempWriteHours == -1 && mins % intervalTempWrite == 0) or (hourss % intervalTempWriteHours == 0 && mins == 0)) && secs == 0) { + // mins % intervalTempWrite == 0 && secs == 0) { File file = SD.open("/TempHumLog.txt", FILE_APPEND); if (file) { - display.fillRect(0, 0, 124, 64, SSD1306_WHITE); + display.fillRect(0, 0, 64, 32, SSD1306_WHITE); tempHCalc = (tempH + lastTempH) / 2; tempMCalc = (tempM + lastTempM) / 2; tempLCalc = (tempL + lastTempL) / 2; @@ -897,14 +883,16 @@ void loop() { delay(1000); } } + if (sd_error == 1){ + display.drawLine(0, 0,128, 32, SSD1306_WHITE); + } display.display(); delay(150); yield(); } //Main feature: -// RTC z możliwością ustawienia godziny +// RTC z możliwością ustawienia godziny, zmiany interwału zapisu // odczyt wilgotności, temperatury i temperatury odcuwalnej // zasilanie bateryjne wraz z obsługą poziomu baterii i estymowanym czasem pracy na baterii -// menu -//2DO zapis na karcie SD +// menu \ No newline at end of file