#include <Arduino_FreeRTOS.h>
bool ledState[] = {LOW,LOW,LOW};
unsigned long currentTime = 0;
unsigned long previousTime[] = {0,0,0};
int leds[] ={2, 3, 4};
int* createVetor(int positionPin, int interval) {
int *vetor = (int*) calloc(2 , sizeof(int));
vetor[0] = positionPin;
vetor[1] = interval;
return vetor;
}
void setup(){
Serial.begin(9600);
for(int i = 0; i < 3; i++) pinMode(leds[i], OUTPUT);
int *vVermelho = createVetor(2, 2000);
int *vAmarelo = createVetor(1, 1000);
int *vVerde= createVetor(0, 500);
xTaskCreate(tarefa, "vermelho", 128, vVermelho, 1, NULL);
xTaskCreate(tarefa, "amarelo", 128, vAmarelo, 1, NULL);
xTaskCreate(tarefa, "verde", 128, vVerde, 1, NULL);
}
void loop(){}
void tarefa(void *pvParameters){
int *vetor = (int*)pvParameters;
int positionPin = vetor[0], interval = vetor[1];
while(1) {
currentTime = millis();
if((currentTime - previousTime[positionPin]) >= interval) {
previousTime[positionPin] = currentTime;
bool state = !ledState[positionPin];
ledState[positionPin] = state;
digitalWrite(leds[positionPin], state);
}
}
}