#include <LiquidCrystal_I2C.h>
QueueHandle_t queue_1;
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
#define TRIG_PIN 18 // ESP32 pin GIOP23 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 5 // ESP32 pin GIOP22 connected to Ultrasonic Sensor's ECHO pin
float duration_us, distance_cm;
const int led =4;
const int pir =19;
void setup() {
lcd.init(); // initialize the lcd
lcd.backlight();
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(4, INPUT_PULLUP);
pinMode(led,OUTPUT);
pinMode(pir,INPUT);
xTaskCreatePinnedToCore(task1,"task1",4000,NULL,1,NULL,1);
xTaskCreatePinnedToCore(task2,"task2",4000,NULL,1,NULL,1);
xTaskCreatePinnedToCore(task3,"task3",4000,NULL,1,NULL,1);
//vTaskStartScheduler();
}
void task1(void*pt)
{
while(1){
long Timestart = millis();
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW); // display the above for two seconds
duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
long task1_time = millis()-Timestart;
Serial.print("execute_time1 =");
Serial.println(task1_time);
delay(500);
}
}
void task2(void*pt)
{
while(1){
long Timestart2 = millis();
const int IP=digitalRead(pir);
if(IP==1)
{
digitalWrite(led,HIGH);
//Serial.println("ada org");
}
else
{
digitalWrite(led,LOW);
//Serial.println("xada org");
}
long task2_time = millis()-Timestart2;
Serial.print("Execute_time2 =");
Serial.println(task2_time);
delay(500);
}
}
void task3(void*pt)
{
pinMode(2, INPUT_PULLUP);
while(1){
long Timestart3 = millis();
lcd.clear(); // clear display
lcd.setCursor(0, 0);
lcd.print("distance=");
lcd.setCursor(10, 0);
lcd.print(distance_cm);
long task3_time = millis()-Timestart3;
Serial.print("execute_time3 =");
Serial.println(task3_time);
}
delay(1000);
}
void loop() {
}