#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <Wire.h>
#include <RTClib.h>
#include <DHT.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
#define DHTPIN 2
#define DHTTYPE DHT22
MD_Parola display = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
RTC_DS1307 rtc;
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
display.begin();
display.setIntensity(5);
display.displayClear();
dht.begin();
Wire.begin();
if (!rtc.begin())
{
display.print("RTC Error");
while (1);
}
if (!rtc.isrunning())
{
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop()
{
DateTime now = rtc.now();
float temp = dht.readTemperature();
float hum = dht.readHumidity();
char buffer[40];
// Display Time
sprintf(buffer, "%02d:%02d:%02d",
now.hour(),
now.minute(),
now.second());
display.displayClear();
display.displayText(buffer, PA_CENTER, 60, 2000, PA_PRINT, PA_NO_EFFECT);
while (!display.displayAnimate());
delay(1000);
// Display Date
sprintf(buffer, "%02d/%02d/%04d",
now.day(),
now.month(),
now.year());
display.displayClear();
display.displayText(buffer, PA_LEFT, 60, 2000, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!display.displayAnimate());
delay(1000);
// Display Temperature
if (!isnan(temp))
{
sprintf(buffer, "TEMP %.1fC", temp);
display.displayClear();
display.displayText(buffer, PA_LEFT, 60, 2000, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!display.displayAnimate());
delay(1000);
}
// Display Humidity
if (!isnan(hum))
{
sprintf(buffer, "HUM %.1f%%", hum);
display.displayClear();
display.displayText(buffer, PA_LEFT, 60, 2000, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!display.displayAnimate());
delay(1000);
}
}