#include #include #include #include #include "DHT.h" #include "RTClib.h" //file system #include "FS.h" #include "SD.h" #include "SPI.h" #define Version "menu : 0.2" #define WIRE Wire #define DHTTYPE DHT22 #define DHTPIN 4 #define SD_CS 5 #define BTN_UP 33 #define BTN_ENTER 34 #define BTN_DOWN 35 Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &WIRE); DHT dht(DHTPIN, DHTTYPE); RTC_DS3231 rtc; // Obiekt dla DS3231 int menu =10; float hum; float temp; float heat_idx; int mins; int secs; int hourss; int dayss; int months; int years; char dateString[21]; void setup() { Serial.begin(115200); Wire.begin(21, 22); if (!rtc.begin()) { Serial.println("Nie znaleziono DS3231 RTC!"); while (1); // Zatrzymaj program, jeśli RTC nie jest dostępny } //Ustawianie daty i godziny: // rtc.adjust(DateTime(2025, 2, 10, 20, 35, 30)); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32 display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.clearDisplay(); display.println("Version:"); display.setCursor(0, 8); display.println(Version); display.setCursor(0, 16); display.println("DHT22"); display.setCursor(0, 24); display.println("RTC: DS3231"); display.display(); delay(500); dht.begin(); pinMode(BTN_UP, INPUT_PULLDOWN ); pinMode(BTN_ENTER, INPUT_PULLDOWN ); pinMode(BTN_DOWN, INPUT_PULLDOWN ); display.clearDisplay(); display.setCursor(0,8); if (!SD.begin(SD_CS)) { display.println("Błąd inicjalizacji karty SD!"); return; } Serial.println("Karta SD wykryta!"); // Tworzenie pliku File file = SD.open("/dane.txt", FILE_WRITE); if (file) { file.println("Dane zapisane z ESP32!"); file.close(); display.println("Plik utworzony!"); } else { display.println("Błąd zapisu pliku!"); } display.display(); delay(1500); //setup END } void loop() { display.clearDisplay(); hum = dht.readHumidity(); temp = dht.readTemperature(); // Compute heat index in Celsius (isFahreheit = false) heat_idx = dht.computeHeatIndex(temp, hum, false); //DATE DateTime now = rtc.now(); years = now.year(); months = now.month(); dayss = now.day(); hourss = now.hour(); mins = now.minute(); secs = now.second(); if (menu == 10 ){ // ############# MENU TEMP sprintf(dateString, "%02d/%02d/%4d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second()); display.setCursor(0,0); display.println(dateString); //HUM&TEMP //######################################### display.setCursor(0,8); display.println("Wilgotnosc:"); display.setCursor(85,8); display.println(hum); display.setCursor(120,8); display.println("%"); display.setCursor(0,16); display.println("Temperatura:"); display.setCursor(85,16); display.println(temp); display.setCursor(120,16); display.println("C"); display.setCursor(0,24); display.println("Odczuwalna:"); display.setCursor(85,24); display.println(heat_idx); display.setCursor(120,24); display.println("C"); } //dla indexu: Caution: > 27*C // Extreme Caution: > 32 *C // Danger: > 40 *C // Extreme Danger: > 52 *C //######################################### if (menu == 9 ){ display.setCursor(0,0); display.print("MENU2"); if (digitalRead(BTN_UP) == HIGH) { display.setCursor(0,8); display.print("UP"); } if (digitalRead(BTN_ENTER) == HIGH) { display.setCursor(30,8); display.print("ENTER"); } if (digitalRead(BTN_DOWN) == HIGH) { display.setCursor(60,8); display.print("DOWN"); } } if (menu == 8 ){ display.setCursor(0,0); display.print("MENU testowe"); } display.display(); delay(500); if (digitalRead(BTN_UP) == HIGH and menu <10 ) { menu = menu +1; } if (digitalRead(BTN_DOWN) == HIGH and menu > 8) { menu = menu -1; } yield(); }