#include <Arduino.h>
#include <Arduino_FreeRTOS.h>
// Deklarasi Task Handles
TaskHandle_t Task1Handle;
TaskHandle_t Task2Handle;
TaskHandle_t Task3Handle;
// Fungsi Tugas 1 - Prioritas Tertinggi
void Task1(void *pvParameters) {
while (1) {
Serial.println("Task 1 is running (Priority 3)");
vTaskDelay(1000 / portTICK_PERIOD_MS); // Delay untuk simulasi kerja task
}
}
// Fungsi Tugas 2 - Prioritas Sedang
void Task2(void *pvParameters) {
while (1) {
Serial.println("Task 2 is running (Priority 2)");
vTaskDelay(1500 / portTICK_PERIOD_MS); // Delay untuk simulasi kerja task
}
}
// Fungsi Tugas 3 - Prioritas Terendah
void Task3(void *pvParameters) {
while (1) {
Serial.println("Task 3 is running (Priority 1)");
vTaskDelay(2000 / portTICK_PERIOD_MS); // Delay untuk simulasi kerja task
}
}
void setup() {
// Mulai Serial untuk melihat output
Serial.begin(115200);
// Membuat Task dengan prioritas yang berbeda
xTaskCreate(Task1, "Task 1", 100, NULL, 3, &Task1Handle); // Prioritas 3
xTaskCreate(Task2, "Task 2", 100, NULL, 2, &Task2Handle); // Prioritas 2
xTaskCreate(Task3, "Task 3", 100, NULL, 1, &Task3Handle); // Prioritas 1
// Start the FreeRTOS scheduler
vTaskStartScheduler();
}
void loop() {
// Kosong karena FreeRTOS akan menangani tugas-tugas
}