#include <Arduino.h>
// Khai báo chân GPIO của LED
#define LED1_PIN 21
#define LED2_PIN 19
// Hàm thực thi Task 1 - Điều khiển LED1
void TaskBlinkLED1(void *pvParameters) {
(void) pvParameters;
pinMode(LED1_PIN, OUTPUT);
while (1) {
digitalWrite(LED1_PIN, HIGH); // Bật LED1
vTaskDelay(500 / portTICK_PERIOD_MS); // Delay 500ms
digitalWrite(LED1_PIN, LOW); // Tắt LED1
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
// Hàm thực thi Task 2 - Điều khiển LED2
void TaskBlinkLED2(void *pvParameters) {
(void) pvParameters;
pinMode(LED2_PIN, OUTPUT);
while (1) {
digitalWrite(LED2_PIN, HIGH); // Bật LED2
vTaskDelay(500 / portTICK_PERIOD_MS); // Delay 300ms
digitalWrite(LED2_PIN, LOW); // Tắt LED2
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void setup() {
// Tạo task đầu tiên cho LED1
xTaskCreate(
TaskBlinkLED1, // Hàm task
"BlinkLED1", // Tên task
1000, // Stack size (bytes)
NULL, // Tham số truyền vào
1, // Độ ưu tiên
NULL // Task handle
);
// Tạo task thứ hai cho LED2
xTaskCreate(
TaskBlinkLED2,
"BlinkLED2",
1000,
NULL,
1,
NULL
);
}
void loop() {
// Không cần sử dụng vòng lặp chính, FreeRTOS sẽ quản lý các task
}