Tema: ChatGPT IA
Ver Mensaje Individual
  #7  
Antiguo 19-12-2022
tsk tsk is offline
Miembro
 
Registrado: dic 2017
Posts: 52
Reputación: 7
tsk Va por buen camino
El otro día vi código generado para un Arduino, y pues se acercó pero le faltó, porque realmente no creo que todavía esté a la altura para ciertos casos

Código:
#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
  }
}
Ese fue el resultado que le dio, pero existen algunos detalles que la IA pasó por alto, pero que son, al menos uno de ellos, totalmente obvios ya que, en lugar de usar la función delay de las librerías de arduino, debe de usar las funciones propias del FreeRTOS como vTaskDelay, y de hecho, la documentación lo especifica de una forma muy clara, y segundo, algo que hago siempre, por si las dudas, es la de manejar el caso en la tarea pudiera salirse del while(true) o el for(; ; ).

El día en que sea capaz de leer un manual, o la documentación de algo, y trabajar en torno a esa documentación, habrá que preocuparse, ahora sólo es entrenada con código ya hecho por otros y ese código es el que repite.
Responder Con Cita