#include "DHTesp.h"
const int DHT_PIN = 13;
int buzzer = 15;
boolean do_once = true;
TaskHandle_t Task1;
TaskHandle_t Task2;
//declarations of Task related functions
static void Task1code( void * parameter);
static void Task2code( void * parameter);
unsigned long startTime, stopTime, cpuTime;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
Serial.println("Running");
pinMode(buzzer, OUTPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
vTaskDelay(1000 / portTICK_PERIOD_MS); //wait for a second
xTaskCreatePinnedToCore(
Task1code, /* Task function. */
"Task1", /* name of task. */
2048, /* Stack size of task */
NULL, /* parameter of the task */
1, /* priority of the task */
&Task1, /* Task handle to keep track of created task */
NULL); /* pin task to core 1 */
xTaskCreatePinnedToCore(
Task2code, /* Task function. */
"Task2", /* name of task. */
2048, /* Stack size of task */
NULL, /* parameter of the task */
1, /* priority of the task */
&Task2, /* Task handle to keep track of created task */
NULL); /* pin task to core 0 */
}
void loop() {
if(do_once){
do_once = false;
Serial.println("Loop task running on Core: " + String(xPortGetCoreID()));
}
}
static void Task1code( void * parameter) {
Serial.println("Task 1 running on Core: " + String(xPortGetCoreID()));
while (1) {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
if(data.humidity <= 60){
tone(buzzer,1000);
delay(500);
}
else{
noTone(buzzer);
delay(500);
}
rms();
}
}
static void Task2code( void * parameter) {
Serial.println("Task 2 running on Core: " + String(xPortGetCoreID()));
while (1) {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(1000);
if(data.temperature >= 35){
tone(buzzer,1000);
}
else{
noTone(buzzer);
}
//rms();
}
}
void rms () {
startTime = micros();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
stopTime = micros();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
//stopTime = micros();
cpuTime = stopTime - startTime;
Serial.print("CPU Time (us): ");
Serial.println (cpuTime);
Serial.println("---");
delay(1000);
}