#include <Arduino_FreeRTOS.h>
void TaskBlink1( void *pvParameters );
void TaskBlink2( void *pvParameters );
void TaskBlink3( void *pvParameters );
void Taskprint( void *pvParameters );
//đèn đỏ 5s xong tắt 10s tới đèn xanh 7s xong tắt 8s
//tới đèn vàng 3s chớp tắt
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
xTaskCreate(
TaskBlink1
, "task1"
, 128
, NULL
, 1
, NULL );
xTaskCreate(
TaskBlink2
, "task2"
, 128
, NULL
, 3
, NULL );
xTaskCreate(
TaskBlink3
, "task3"
, 128
, NULL
, 2
, NULL );
xTaskCreate(
Taskprint
, "task4"
, 128
, NULL
, 4
, NULL );
vTaskStartScheduler();
}
void loop()
{
}
void TaskBlink1(void *pvParameters) {
pinMode(8, OUTPUT);
//Đèn đỏ
while(1)
{
Serial.println("Task1");
digitalWrite(8, HIGH);
Serial.println("Đèn đỏ bật");
vTaskDelay ( 5000 / portTICK_PERIOD_MS);
digitalWrite(8, LOW);
Serial.println("Đèn đỏ tắt");
vTaskDelay ( 10000 / portTICK_PERIOD_MS);
}
}
void TaskBlink2(void *pvParameters)
{
pinMode(7, OUTPUT);
//Đèn vàng
while(1)
{
vTaskDelay( 1 2000 / portTICK_PERIOD_MS );
Serial.println("Task3");
digitalWrite(7, HIGH);
Serial.println("Đèn vàng bật");
vTaskDelay( 3000 / portTICK_PERIOD_MS );
digitalWrite(7, LOW);
Serial.println("Đèn vàng tắt");
vTaskDelay( 3000 / portTICK_PERIOD_MS );
}
}
void TaskBlink3(void *pvParameters)
{
pinMode(6, OUTPUT);
//Đèn xanh
while(1)
{
Serial.println("Task2");
vTaskDelay( 5000 / portTICK_PERIOD_MS );
digitalWrite(6, HIGH);
Serial.println("Đèn xanh bật");
vTaskDelay( 7000 / portTICK_PERIOD_MS );
digitalWrite(6, LOW);
Serial.println("Đèn xanh tắt");
vTaskDelay( 3000 / portTICK_PERIOD_MS );
}
}
void Taskprint(void *pvParameters) {
int counter = 0;
while(1)
{
counter++;
Serial.println(counter);
vTaskDelay(1000 / portTICK_PERIOD_MS); }
}