DHT20_I2C — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by trongnhanle85.

Components

Sketch code

#include <Wire.h>
#include <DHT20.h>

// ========================
// PIN DEFINITIONS
// ========================
#define LED_2       2
#define LED_4       4

#define DHT20_SDA   18
#define DHT20_SCL   19

// ========================
// OBJECTS
// ========================
DHT20 DHT;

// ========================
// TASK HANDLES
// ========================
TaskHandle_t Led2TaskHandle  = NULL;
TaskHandle_t Led4TaskHandle  = NULL;
TaskHandle_t DHT20TaskHandle = NULL;


// =====================================================
// TASK 1 - LED GPIO2
// =====================================================
void led_2_task(void *parameter)
{
  pinMode(LED_2, OUTPUT);

  while (1)
  {
    Serial.println("Task LED 2 is executing");

    digitalWrite(LED_2, HIGH);
    vTaskDelay(pdMS_TO_TICKS(1000));

    digitalWrite(LED_2, LOW);
    vTaskDelay(pdMS_TO_TICKS(1000));
  }
}


// =====================================================
// TASK 2 - LED GPIO4
// =====================================================
void led_4_task(void *parameter)
{
  pinMode(LED_4, OUTPUT);

  while (1)
  {
    Serial.println("Task LED 4 is executing");

    digitalWrite(LED_4, HIGH);
    vTaskDelay(pdMS_TO_TICKS(2000));

    digitalWrite(LED_4, LOW);
    vTaskDelay(pdMS_TO_TICKS(2000));
  }
}


// =====================================================
// TASK 3 - DHT20
// SDA = GPIO18
// SCL = GPIO19
// =====================================================
void dht20_task(void *parameter)
{
  while (1)
  {
    int status = DHT.read();

    if (status == DHT20_OK)
    {
      float temperature = DHT.getTemperature();
      float humidity    = DHT.getHumidity();

      Serial.println("========== DHT20 ==========");
      Serial.print("Temperature : ");
      Serial.print(temperature, 1);
      Serial.println(" °C");

      Serial.print("Humidity    : ");
      Serial.print(humidity, 1);
      Serial.println(" %");

      Serial.println("===========================");
    }
    else
    {
      Serial.print("DHT20 read error: ");
      Serial.println(status);
    }

    // Read sensor every 2 seconds
    vTaskDelay(pdMS_TO_TICKS(2000));
  }
}


// =====================================================
// SETUP
// =====================================================
void setup()
{
  Serial.begin(115200);

  delay(500);

  Serial.println();
  Serial.println("ESP32 FreeRTOS starting...");

  // -----------------------
  // Initialize I2C
  // -----------------------
  Wire.begin(DHT20_SDA, DHT20_SCL);

  // Initialize DHT20
  DHT.begin();

  Serial.println("DHT20 initialized");
  Serial.println("SDA = GPIO18");
  Serial.println("SCL = GPIO19");


  // -----------------------
  // CREATE LED 2 TASK
  // -----------------------
  xTaskCreate(
    led_2_task,
    "LED2 Task",
    2048,
    NULL,
    1,
    &Led2TaskHandle
  );


  // -----------------------
  // CREATE LED 4 TASK
  // -----------------------
  xTaskCreate(
    led_4_task,
    "LED4 Task",
    2048,
    NULL,
    1,
&Led4Tas

More projects by trongnhanle85