#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);
}