/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#define LED_0 GPIO_NUM_4
#define GPIO_OUTPUT_PIN_SEL (1ULL<<LED_0)
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#include "DHTesp.h"
const int DHT_PIN = 15;
DHTesp dhtSensor;
float Temperature = 0;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init();
lcd.backlight();
gpio_config_t led_conf = {};
led_conf.intr_type = GPIO_INTR_DISABLE;
led_conf.mode = GPIO_MODE_OUTPUT;
led_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
led_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
led_conf.pull_up_en = GPIO_PULLUP_DISABLE;
gpio_config(&led_conf);
xTaskCreate(sensor,"sensor",4096,NULL,5,NULL);
xTaskCreate(blink,"blink",4096,NULL,5,NULL);
}
void sensor(void *pvParameters) {
while(1) {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
Temperature = data.temperature;
lcd.setCursor(0, 0);
lcd.print("Temperatura:" + String(data.temperature, 1) + "\xDF"+"C");
lcd.setCursor(0, 1);
lcd.print(" Humidade:" + String(data.humidity, 1) + "%");
vTaskDelay(5000/portTICK_RATE_MS);
}
}
void blink(void *pvParameters){
while(1) {
if (Temperature>=30) {
gpio_set_level(LED_0,1);
vTaskDelay(800/portTICK_RATE_MS);
gpio_set_level(LED_0,0);
vTaskDelay(400/portTICK_RATE_MS);
}
else {
gpio_set_level(LED_0,0);
}
}
}
void loop(){
vTaskDelay(500/portTICK_RATE_MS);
}