#include <Arduino_FreeRTOS.h>
#include <semphr.h>

// Declaración del semáforo
SemaphoreHandle_t xSemaphore;

void Task1(void *pvParameters) {
    for (;;) {
        // Enciende el LED
        digitalWrite(13, HIGH);

        // Espera 2 segundos
        vTaskDelay(2000 / portTICK_PERIOD_MS);
        xSemaphoreGive(xSemaphore);
        // Aquí se debe liberar el semáforo
        // 
    }
}

void Task2(void *pvParameters) {
    for (;;) {
        // Aquí se debe tomar el semáforo
        if (xSemaphoreTake(xSemaphore, portMAX_DELAY) == pdTRUE){
            // Apaga el LED después de 500 ms
            vTaskDelay(500 / portTICK_PERIOD_MS);
            digitalWrite(13, LOW);
        }
    }
}

void setup() {
    pinMode(13, OUTPUT);

    // Aquí se debe crear el semáforo
     xSemaphore = xSemaphoreCreateBinary();

    // Crear tareas
    xTaskCreate(Task1, "LED ON", 128, NULL, 1, NULL);
    xTaskCreate(Task2, "LED OFF", 128, NULL, 1, NULL);

    // Inicia el scheduler
    vTaskStartScheduler();
}

void loop() {}