#include <Arduino_FreeRTOS.h>
// Định nghĩa các chân được kết nối đèn LED
#define LED1 5
#define LED2 6
TaskHandle_t task1Handle;
TaskHandle_t task2Handle;
// Hàm thực hiện nháy LED1 với chu kỳ 1000ms
void Task1(void *pvParameters) {
pinMode(LED1, OUTPUT);
while (1) {
digitalWrite(LED1, HIGH); // Bật đèn LED1
vTaskDelay(1000 / portTICK_PERIOD_MS); // Chờ 1000ms
digitalWrite(LED1, LOW); // Tắt đèn LED1
vTaskDelay(1000 / portTICK_PERIOD_MS); // Chờ 1000ms
}
}
// Hàm thực hiện nháy LED2 với chu kỳ 300ms
void Task2(void *pvParameters) {
pinMode(LED2, OUTPUT);
int count = 0;
while (count < 10) {
digitalWrite(LED2, HIGH); // Bật đèn LED2
vTaskDelay(300 / portTICK_PERIOD_MS); // Chờ 300ms
digitalWrite(LED2, LOW); // Tắt đèn LED2
vTaskDelay(300 / portTICK_PERIOD_MS); // Chờ 300ms
count++;
}
// tạm dừng task1
vTaskSuspend(task1Handle);
// Delay 2000ms trước khi tiếp tục task 1
vTaskDelay(2000 / portTICK_PERIOD_MS);
// Tiếp tục task 1
vTaskResume(task1Handle);
}
void setup() {
// Tạo các task
xTaskCreate(Task1, "Task1", 128, NULL, 1, &task1Handle);
xTaskCreate(Task2, "Task2", 128, NULL, 2, &task2Handle);
}
void loop() {
// Không có gì cần thực hiện trong hàm loop
}