>>> Haz un programa en c para controlar dos semáforos con tareas concurrentes en Arduino
>>> A continuación se presenta un ejemplo de un programa en lenguaje C que puede ser utilizado para controlar dos semáforos de manera concurrente en una placa Arduino utilizando tareas concurrentes:
#include <stdio.h>
#include <Arduino_FreeRTOS.h>
// Declaración de los pines a utilizar para controlar los semáforos
const int pinSemaforo1 = 2;
const int pinSemaforo2 = 3;
// Declaración de las funciones que implementan las tareas concurrentes
void controlSemaforo1(void*);
void controlSemaforo2(void*);
void setup() {
// Configuración de los pines de salida para controlar los semáforos
pinMode(pinSemaforo1, OUTPUT);
pinMode(pinSemaforo2, OUTPUT);
}
void loop() {
// Creación de las tareas concurrentes
xTaskCreate(controlSemaforo1, "controlSemaforo1", 128, NULL, 1, NULL);
xTaskCreate(controlSemaforo2, "controlSemaforo2", 128, NULL, 1, NULL);
}
void controlSemaforo1(void* params) {
// Control del semáforo 1
while (true) {
digitalWrite(pinSemaforo1, HIGH); // Encendido del semáforo rojo
delay(5000); // Espera de 5 segundos
digitalWrite(pinSemaforo1, LOW); // Apagado del semáforo rojo
digitalWrite(pinSemaforo1, HIGH); // Encendido del semáforo verde
delay(5000); // Espera de 5 segundos
digitalWrite(pinSemaforo1, LOW); // Apagado del semáforo verde
}
}
void controlSemaforo2(void* params) {
// Control del semáforo 2
while (true) {
digitalWrite(pinSemaforo2, HIGH); // Encendido del semáforo rojo
delay(5000); // Espera de 5 segundos
digitalWrite(pinSemaforo2, LOW); // Apagado del semáforo rojo
digitalWrite(pinSemaforo2, HIGH); // Encendido del semáforo verde
delay(5000); // Espera de 5 segundos
digitalWrite(pinSemaforo2, LOW); // Apagado del semáforo verde
}
}
Este programa utiliza la función pinMode para configurar los pines de salida utilizados para controlar los semáforos. Luego, en la función loop, se utiliza la función xTaskCreate para crear dos tareas concurrentes que se encargan de controlar cada uno de los semáforos de manera independiente.
Las tareas concurrentes son implementadas en las funciones controlSemaforo1 y `controlSemaforo2
--------------------------------------------------------------------------------------------------------
Por ahora solo he visto que incluya un error: No añadía el include para FreeRTOS. Al preguntarle por el error de compilación el mismo chat me dió la solución.