Poprawa interwałów

This commit is contained in:
sieja
2025-06-23 11:31:26 +02:00
parent da3d5dbf0b
commit 0ccaf2f424

View File

@@ -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