#include <Arduino_FreeRTOS.h>
// Pin LED
const int ledMerah = 13;
const int ledKuning = 12;
const int ledBiru = 10;
const int ledHijau = 11;
// Task declarations
void TaskMerah(void *pvParameters);
void TaskKuning(void *pvParameters);
void TaskBiru(void *pvParameters);
void TaskHijau(void *pvParameters);
void setup() {
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledBiru, OUTPUT);
pinMode(ledHijau, OUTPUT);
// Create tasks
xTaskCreate(TaskMerah, "LED Merah", 128, NULL, 1, NULL);
xTaskCreate(TaskKuning, "LED Kuning", 128, NULL, 1, NULL);
xTaskCreate(TaskBiru, "LED Biru", 128, NULL, 1, NULL);
xTaskCreate(TaskHijau, "LED Hijau", 128, NULL, 1, NULL);
}
void loop() {
// Loop kosong, karena tugas dijalankan oleh RTOS
}
void TaskMerah(void *pvParameters) {
(void) pvParameters;
for (;;) {
digitalWrite(ledMerah, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(ledMerah, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void TaskKuning(void *pvParameters) {
(void) pvParameters;
for (;;) {
digitalWrite(ledKuning, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(ledKuning, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void TaskBiru(void *pvParameters) {
(void) pvParameters;
for (;;) {
digitalWrite(ledBiru, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(ledBiru, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void TaskHijau(void *pvParameters) {
(void) pvParameters;
for (;;) {
digitalWrite(ledHijau, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(ledHijau, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}