#include <MD_Parola.h> // knižnica pre LED maticu
#include <MD_MAX72xx.h> // knižnica pre LED ovládače MAX72XX
#include <SPI.h> // knižnica pre SPI komunikáciu
#include <DHT.h> // knižnica pre DHT senzory
bool Teplota = true;
bool PoslednaHodnotaTlacidla = true;
#define TLACIDLO_PIN 7 // pin pre tlačidlo
#define DHT_PIN 2 // pin pre DHT senzor
#define DHT_TYPE DHT22 // typ DHT senzora
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // typ hardvéru pre LED maticu
#define MAX_DEVICES 4 // maximálny počet pripojených zariadení
#define CS_PIN 10 // pin pre výber čipu (chip select)
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // volanie LED matice
DHT dht(DHT_PIN, DHT_TYPE); // volanie DHT senzora
void setup() {
myDisplay.begin(); // inicializácia LED matice
myDisplay.setIntensity(0); // nastavenie intenzity zobrazenia
myDisplay.displayClear(); // vymazanie zobrazenia
Serial.begin(9600); // inicializácia sériovej komunikácie
pinMode(TLACIDLO_PIN, INPUT_PULLUP); // nastavenie pinu tlačidla ako vstup s interným pull-up odporom
dht.begin(); // inicializácia DHT senzora
float temperature = dht.readTemperature(); // načítanie teploty zo senzora
myDisplay.setTextAlignment(PA_CENTER); // zarovnanie textu na stred
myDisplay.print(String(temperature, 1) + "C"); // zobrazenie teploty
}
void loop() {
bool buttonState = digitalRead(TLACIDLO_PIN); // načítanie stavu tlačidla
// Kontrola stlačenia tlačidla a prepínanie zobrazenia medzi teplotou a vlhkosťou
if (buttonState != PoslednaHodnotaTlacidla && buttonState == LOW) {
Teplota = !Teplota; // prepínanie medzi zobrazovaním teploty a vlhkosti
float data = Teplota ? dht.readTemperature() : dht.readHumidity(); // načítanie údajov podľa vlajky Teplota
myDisplay.setTextAlignment(PA_CENTER); // zarovnanie textu na stred
myDisplay.print(String(data, 1) + (Teplota ? "C" : "%")); // zobrazenie údajov s príslušnou jednotkou
delay(300); // oneskorenie na odstránenie prebliknutia tlačidla
}
PoslednaHodnotaTlacidla = buttonState; // uloženie aktuálneho stavu tlačidla
}