#include #include #include #include #include "RTClib.h" #include #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define DATA_PIN 2 #define CLK_PIN 1 #define CS_RTC 29 #define CS_DHT 28 #define DHTPIN 27 #define DHTTYPE DHT11 #define MAX_DEVICES 4 #define LDR_PIN A0 #define LED1_PIN 9 #define LED2_PIN 10 int threshold = 500; MD_Parola displayRTC(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_RTC, MAX_DEVICES); MD_Parola displayDHT(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_DHT, MAX_DEVICES); RTC_DS3231 rtc; DHT dht(DHTPIN, DHTTYPE); unsigned long lastDHTRead = 0; unsigned long lastDisplayChange = 0; float temperature = 0; float humidity = 0; bool showTemperature = true; void setup() { Serial.begin(115200); Wire.begin(); dht.begin(); pinMode(LED1_PIN, OUTPUT); pinMode(LED2_PIN, OUTPUT); if (!rtc.begin()) { Serial.println("RTC not found!"); while (1); } if (rtc.lostPower()) { rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } displayRTC.begin(); displayDHT.begin(); displayRTC.setIntensity(1); displayDHT.setIntensity(1); displayRTC.displayClear(); displayDHT.displayClear(); } void loop() { DateTime now = rtc.now(); char timeBuf[10]; sprintf(timeBuf, "%02d:%02d", now.hour(), now.minute()); displayRTC.displayText(timeBuf, PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); displayRTC.displayAnimate(); if (millis() - lastDHTRead >= 2000) { lastDHTRead = millis(); float t = dht.readTemperature(); float h = dht.readHumidity(); if (!isnan(t) && !isnan(h)) { temperature = t; humidity = h; } } if (millis() - lastDisplayChange >= 15000) { lastDisplayChange = millis(); showTemperature = !showTemperature; } char dhtBuf[20]; if (showTemperature) { sprintf(dhtBuf, "T %.0fC", temperature); } else { sprintf(dhtBuf, "H %d%%", (int)humidity); } displayDHT.displayText(dhtBuf, PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); displayDHT.displayAnimate(); int lightValue = analogRead(LDR_PIN); Serial.println(lightValue); if (lightValue > threshold) { digitalWrite(LED1_PIN, HIGH); digitalWrite(LED2_PIN, HIGH); } else { digitalWrite(LED1_PIN, LOW); digitalWrite(LED2_PIN, LOW); } }