#include <STM32FreeRTOS.h>
const int ledPin1 = D2;
const int ledPin2 = D3;
volatile int led1State = 0;
volatile int led2State = 0;
void Task_blinkLED1(void *parameter);
void Task_blinkLED2(void *parameter);
void Task_serialPlot(void *parameter);
void setup() {
Serial.begin(115200);
Serial.println("Iniciando...!");
xTaskCreate(Task_blinkLED1, "Blink LED 1", 128, NULL, 1, NULL);
xTaskCreate(Task_blinkLED2, "Blink LED 2", 128, NULL, 1, NULL);
xTaskCreate(Task_serialPlot, "Serial Plot", 512, NULL, 1, NULL);
vTaskStartScheduler();
}
void loop() {
}
void Task_blinkLED1(void *parameter) {
pinMode(ledPin1, OUTPUT);
while (true) {
led1State = 1;
digitalWrite(ledPin1, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
led1State = 0;
digitalWrite(ledPin1, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void Task_blinkLED2(void *parameter) {
pinMode(ledPin2, OUTPUT);
while (true) {
led2State = 1;
digitalWrite(ledPin2, HIGH);
vTaskDelay(2000 / portTICK_PERIOD_MS);
led2State = 0;
digitalWrite(ledPin2, LOW);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
// Nueva tarea para enviar datos al Serial Plotter
void Task_serialPlot(void *parameter) {
while (true) {
// Enviar ambas variables en la misma línea, separadas por espacios
Serial.print(led1State);
Serial.print(" ");
Serial.println(led2State);
vTaskDelay(100 / portTICK_PERIOD_MS); // muestreo cada 100 ms
}
}