#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
// Define the LED pins
#define LED1_PIN 4
#define LED2_PIN 5
// Define the task handles
TaskHandle_t Task1Handle = NULL;
TaskHandle_t Task2Handle = NULL;
// Task 1 function
void Task1(void *parameter) {
pinMode(LED1_PIN, OUTPUT);
while (1) {
digitalWrite(LED1_PIN, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(LED1_PIN, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
// Task 2 function
void Task2(void *parameter) {
pinMode(LED2_PIN, OUTPUT);
while (1) {
digitalWrite(LED2_PIN, HIGH);
vTaskDelay(1000 / portTICK_PERIOD_MS);
digitalWrite(LED2_PIN, LOW);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void setup() {
// Create Task 1
xTaskCreatePinnedToCore(
Task1, // Task function
"Task1", // Task name
10000, // Stack size
NULL, // Task parameter
1, // Task priority
&Task1Handle, // Task handle
0 // Run on core 0
);
// Create Task 2
xTaskCreatePinnedToCore(
Task2, // Task function
"Task2", // Task name
10000, // Stack size
NULL, // Task parameter
1, // Task priority
&Task2Handle, // Task handle
1 // Run on core 1
);
}
void loop() {
// Empty loop
}