#include <Wire.h>
#include <MD_MAX72xx.h>
#include <MD_Parola.h>
#include <SPI.h>
#include <DHT.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 8
#define CS_PIN 10
#define DATA_PIN 11
#define CLK_PIN 13
#define DHTPIN 2 // Pin pre pripojenie DHT senzora
#define DHTTYPE DHT22 // Typ DHT senzora
MD_Parola disp = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
DHT dht(DHTPIN, DHTTYPE);
float teplota, vlhkost;
String ukazovatel;
char znak[100] = "";
bool osetrenie = false;
void setup() {
DDRB &= ~(1 << 4); // nastavi pin ako vstup
PORTB |= 1 << 4; // aktivuje pull-up rezistor pre tlacidlo
disp.begin(); // displej
dht.begin(); // senzor
}
void zobrazteplo() {
teplota = dht.readTemperature(); // cita teplotu
ukazovatel = "Dnesna Teplota je: " + String(teplota) + "C"; //retazec pre zobrazenie teploty
ukazovatel.toCharArray(znak, 100); // prevedie retazec na pole znakov
disp.displayText(znak, PA_LEFT, 50, 2000, PA_SCROLL_LEFT, PA_SCROLL_LEFT); // zobrazi teplotu
while(!disp.displayAnimate()); // caka
}
void zobrazvlhkost() {
vlhkost = dht.readHumidity();
ukazovatel = "Dnesna Vlhkost je: " + String(vlhkost) + "%";
ukazovatel.toCharArray(znak, 100);
disp.displayText(znak, PA_LEFT, 50, 2000, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while(!disp.displayAnimate());
}
void loop() {
if ((PINB & (1 << 4)) == 0 && !osetrenie ) { // ak osetrenie je false a tlacidlo je stlacene
zobrazvlhkost(); // zobrazi vlhkost
osetrenie = true; // nastavi osetrenie na true
}
else if (osetrenie) {
zobrazvlhkost(); // zobrazuje neustale vlhkost po stlaceni
}else {
zobrazteplo(); // zobrazuje teplotu
}
}