#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
TaskHandle_t Task1_Handle;
TaskHandle_t Task2_Handle;
TaskHandle_t Task3_Handle;
// Task 1
void Task1(void *pvParameters)
{
while(1)
{
Serial.print("1");
delay(1000);
//vTaskDelay(pdMS_TO_TICKS(1000));
}
unsigned long t1, t2=millis();
const unsigned long INTERVAL = 1000;
t1=t2-INTERVAL;
for (;;)
{
t2=millis();
if(t2-t1>=INTERVAL)
{
Serial.println("Task 1 is running...");
t1=t2;
}
}
}
// Task 2
void Task2(void *pvParameters)
{
while(1)
{
Serial.print("2");
delay(5000);
//vTaskDelay(pdMS_TO_TICKS(1000));
}
unsigned long t1, t2=millis();
const unsigned long INTERVAL = 2000;
t1=t2-INTERVAL;
for (;;)
{
t2=millis();
if(t2-t1>=INTERVAL)
{
Serial.println("Task 2 is running...");
t1=t2;
}
//vTaskDelay(pdMS_TO_TICKS(1500)); // Delay 1.5 detik
}
}
// Task 3
void Task3(void *pvParameters)
{
while(1)
{
Serial.print("3");
delay(10000);
//vTaskDelay(pdMS_TO_TICKS(1000));
}
unsigned long t1, t2=millis();
const unsigned long INTERVAL = 3000;
t1=t2-INTERVAL;
for (;;)
{
t2=millis();
if(t2-t1>=INTERVAL)
{
Serial.println("Task 3 is running...");
t1=t2;
}
}
}
void setup() {
Serial.begin(9600);
xTaskCreate(Task1, "Task1", 1000, NULL, 5, &Task1_Handle);
xTaskCreate(Task2, "Task2", 1000, NULL, 5, &Task2_Handle);
xTaskCreate(Task3, "Task3", 1000, NULL, 5, &Task3_Handle);
}
void loop() {
Serial.print("0");
delay(500);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK