// C++ code
//
#include <Arduino_FreeRTOS.h>
#define LedGreen 2
#define LedYellow 3
#define LedRed 4
unsigned long previousTime1 = 0;
unsigned long previousTime2 = 0;
unsigned long previousTime3 = 0;
unsigned long previousMillis1 = 0;
void setup()
{
pinMode(LedGreen, OUTPUT);
pinMode(LedYellow, OUTPUT);
pinMode(LedRed, OUTPUT);
//criação das funções (tasks)
xTaskCreate(Red, "red", 128, NULL, 1, NULL);
xTaskCreate(Yellow, "yellow", 128, NULL, 1, NULL);
xTaskCreate(Green, "green", 128, NULL, 1, NULL);
}
//definição da task para ligar o led verde
void Green(void *pvParameters) {
while (1) {
unsigned long current = millis() - previousTime1;
if ((millis() - previousTime1) < 500) {
digitalWrite(LedGreen, HIGH);
} else {
digitalWrite(LedGreen, LOW);
}
if ((millis() - previousTime1) > 1000) {
previousTime1 = millis();
}
}
}
//definição da task para ligar o led Amarelo
void Yellow(void *pvParameters) {
while (1) {
unsigned long current = millis() - previousTime2;
if ((millis() - previousTime2) < 1000) {
digitalWrite(LedYellow, HIGH);
} else {
digitalWrite(LedYellow, LOW);
}
if ((millis() - previousTime2) > 2000) {
previousTime2 = millis();
}
}
}
//definição da task para ligar o led vermelho
void Red(void *pvParameters) {
while (1) {
unsigned long current = millis() - previousTime3;
if ((millis() - previousTime3) < 2000) {
digitalWrite(LedRed, HIGH);
} else {
digitalWrite(LedRed, LOW);
}
if ((millis() - previousTime3) > 4000) {
previousTime3 = millis();
}
}
}
void loop()
{
}