#include <DHT.h>
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#define DHT11_PIN 13 // ESP32 pin GPIO21 connected to DHT11 sensor
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4 // 4 blocks
#define CS_PIN 21
DHT dht11(DHT11_PIN, DHT11);
MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void MATRIX() {
ledMatrix.setTextAlignment(PA_LEFT);
ledMatrix.print("Left"); // display text
delay(1000);
ledMatrix.setTextAlignment(PA_CENTER);
ledMatrix.print("Center"); // display text
delay(1000);
ledMatrix.setTextAlignment(PA_RIGHT);
ledMatrix.print("Right"); // display text
delay(1000);
ledMatrix.setTextAlignment(PA_CENTER);
ledMatrix.setInvert(true);
ledMatrix.print("Invert"); // display text inverted
delay(1000);
ledMatrix.setInvert(false);
ledMatrix.print(1234); // display number
delay(1000);
}
void DHT_11(){
float humi = dht11.readHumidity();
float tempC = dht11.readTemperature();
float tempF = dht11.readTemperature(true);
// check whether the reading is successful or not
if ( isnan(tempC) || isnan(tempF) || isnan(humi)) {
Serial.println("Failed to read from DHT11 sensor!");
} else {
Serial.print("Humidity: ");
Serial.print(humi);
Serial.print("%");
Serial.print(" | ");
Serial.print("Temperature: ");
Serial.print(tempC);
Serial.print("°C ~ ");
Serial.print(tempF);
Serial.println("°F");
}
delay(1000);
}
void task1(void *pvPara){
while(1){
DHT_11();
delay(1000);
}
}
void task2(void *pvPara){
while(1){
MATRIX();
delay(1000);
}
}
void setup() {
Serial.begin(9600);
dht11.begin();
ledMatrix.begin();
ledMatrix.setIntensity(0);
ledMatrix.displayClear();
ledMatrix.displayScroll("ESP32", PA_CENTER, PA_SCROLL_LEFT, 100);
xTaskCreate(task1,"DHT11",1000,NULL,1,NULL);
xTaskCreate(task2,"MATRIX",1000,NULL,1,NULL);
// xTaskCreate(task3_ver2,"RTC + DHT", 150, NULL,1,NULL);
// wait a 2 seconds between readings
delay(1000);
}
void loop() {
}