#include <Arduino_FreeRTOS.h>
#include <semphr.h>
#define LED_PIN 13
SemaphoreHandle_t ledSemaphore;
void LED_On(void *pvParameters) {
for (;;) {
Serial.println("Inside Led ON task");
digitalWrite(LED_PIN, HIGH);
vTaskDelay(10 / portTICK_PERIOD_MS);
xSemaphoreGive(ledSemaphore);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void LED_Off(void *pvParameters) {
for (;;) {
if (xSemaphoreTake(ledSemaphore, portMAX_DELAY) == pdTRUE) {
Serial.println("Inside Led OFF task");
digitalWrite(LED_PIN, LOW);
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
}
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
ledSemaphore = xSemaphoreCreateBinary();
xTaskCreate(LED_On, "LED_On", 100, NULL, 1, NULL);
xTaskCreate(LED_Off, "LED_Off", 100, NULL, 1, NULL);
}
void loop() {
}