#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <freertos/queue.h>
// Define LED pins
const int led_RED = 4;
const int led_BLUE = 5;
// Queue handles
QueueHandle_t ledQueue;
void setup() {
Serial.begin(115200);
// Set LED pins as outputs
pinMode(led_RED, OUTPUT);
pinMode(led_BLUE, OUTPUT);
// Create a queue
ledQueue = xQueueCreate(1, sizeof(int));
// Check if the queue is created successfully
if (ledQueue != NULL) {
// Create tasks
xTaskCreate(ledRed, "ledRED", 10000, NULL, 2, NULL);
xTaskCreate(ledBlue, "ledBlue", 10000, NULL, 2, NULL);
xTaskCreate(serialTask, "serialTask", 10000, NULL, 1, NULL);
}
}
// Task to control LED RED
void ledRed(void *parameter) {
while (1) {
// Toggle LED 1
digitalWrite(led_RED, HIGH);
vTaskDelay(2500 / portTICK_PERIOD_MS);
digitalWrite(led_RED, LOW);
vTaskDelay(2500 / portTICK_PERIOD_MS);
}
}
// Task to control LED BLUE
void ledBlue(void *parameter) {
while (1) {
// Toggle LED 2
digitalWrite(led_BLUE, HIGH);
vTaskDelay(1000 / portTICK_PERIOD_MS);
digitalWrite(led_BLUE, LOW);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
// Task to control LED 3 and print status to Serial Monitor
void serialTask(void *parameter) {
while (1) {
// Print LED status to Serial Monitor
Serial.println("LED Status - LED RED: ");
Serial.println("ON");
vTaskDelay(1000 / portTICK_PERIOD_MS);
Serial.println("LED Status - LED BLUE: ");
Serial.println("OFF");
}
}
void loop() {
}