int ledverde = 23;
int ledamarelo = 22;
int ledvermelho = 21;
int ldr = 4;
int led4 = 19;
void setup() {
Serial.begin(9600);
pinMode(ledverde, OUTPUT);
pinMode(ledamarelo, OUTPUT);
pinMode(ledvermelho, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(ldr, INPUT);
Serial.println("iniciando o gerenciador de tarefas FreeRTOS");
xTaskCreate(
TarefaSemaforo,
"Semafaro",
10000,
NULL,
1,
NULL
);
xTaskCreate(
TarefaLDRLed,
"LDR_LED",
10000,
NULL,
1,
NULL
);
}
void loop() {
vTaskDelay(pdMS_TO_TICKS(1000));
}
void TarefaSemaforo(void *parametros){
Serial.println("Tarefa semáfaro iniciada");
while(true){
digitalWrite(ledverde, HIGH);
digitalWrite(ledamarelo, LOW);
digitalWrite(ledvermelho, LOW);
vTaskDelay(pdMS_TO_TICKS(5000));
digitalWrite(ledverde, LOW);
digitalWrite(ledamarelo, HIGH);
digitalWrite(ledvermelho, LOW);
vTaskDelay(pdMS_TO_TICKS(2000));
digitalWrite(ledverde, LOW);
digitalWrite(ledamarelo, LOW);
digitalWrite(ledvermelho, HIGH);
vTaskDelay(pdMS_TO_TICKS(4000));
}
}
void TarefaLDRLed(void *parametros){
Serial.println("Tarefa LDR/LED iniciada");
while(true){
int valorLDR = analogRead(ldr);
Serial.println("ValorLDR: ");
Serial.println(ValorLDR);
if(valorldr < 1500){
digitalWrite(led4, HIGH);
}
vTaskDelay(pdMS_TO_TICKS(500));
}