lunes, 4 de noviembre de 2024

Arduino + Inteligencia Artificial


Aprender a programar Arduino nunca fue tan facil, con la ayuda de la IA o Inteligencia artificial podemos crear proyectos utiles y divertidos tanto para entusiastas como para conocedores. Este es un ejemplo muy basico y sencillo de como se puede aplicar la IA para programar un circuito electronico basado en arduino y unos cuantos componentes.

Para controlar cinco LEDs con un control remoto usando un módulo IR (Infrarrojo), primero necesitas un módulo receptor IR (como el VS1838B o TSOP1838) y un control remoto compatible. Vamos a usar la librería IRremote en Arduino, la cual facilita la recepción de señales IR y la decodificación de comandos.

Materiales

  • Arduino (Uno, Nano, etc.)
  • 5 LEDs
  • 5 resistencias (220Ω - 330Ω, para cada LED)
  • Módulo receptor IR (VS1838B o similar)
  • Control remoto IR
  • Cables de conexión

Circuito

  1. Conecta cada LED a un pin digital de Arduino (ejemplo: pines 2, 3, 4, 5 y 6) con una resistencia.
  2. Conecta el módulo receptor IR:
    • VCC a 5V de Arduino
    • GND a GND de Arduino
    • Salida de datos (OUT) al pin 11 de Arduino (se puede cambiar si lo necesitas, pero debe coincidir con el código).

Código Arduino

Este código permitirá encender o apagar cada LED de manera individual, además de encender o apagar todos los LEDs con un solo botón del control remoto.

  1. Asegúrate de instalar la librería IRremote desde el Administrador de Librerías de Arduino.
  2. Elige los códigos de cada botón del control remoto usando el monitor serial (te explico más adelante cómo obtener estos códigos).
Codigo para Arduino:

#include <IRremote.h>

#define RECV_PIN 11  // Pin de salida del receptor IR
IRrecv irrecv(RECV_PIN);
decode_results results;

const int ledPins[5] = {2, 3, 4, 5, 6};  // Pines para cada LED

// Define códigos IR específicos para cada acción (obtén estos códigos con tu control)
const unsigned long LED1_ON = 0xFF30CF;  // Reemplaza estos valores con tus códigos reales
const unsigned long LED2_ON = 0xFF18E7;
const unsigned long LED3_ON = 0xFF7A85;
const unsigned long LED4_ON = 0xFF10EF;
const unsigned long LED5_ON = 0xFF38C7;
const unsigned long ALL_LEDS_TOGGLE = 0xFFA25D;  // Código para encender/apagar todos los LEDs

bool ledStates[5] = {false, false, false, false, false};  // Estado de cada LED
bool allLedsOn = false;  // Estado general de todos los LEDs

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();  // Inicia el receptor IR

  for (int i = 0; i < 5; i++) {
    pinMode(ledPins[i], OUTPUT);  // Configura cada pin de LED como salida
    digitalWrite(ledPins[i], LOW);  // Apaga todos los LEDs inicialmente
  }
}

void loop() {
  if (irrecv.decode(&results)) {
    unsigned long code = results.value;
    Serial.println(code, HEX);  // Imprime el código en hexadecimal para ver qué botón has presionado
   
    // Control individual de LEDs
    if (code == LED1_ON) toggleLED(0);
    else if (code == LED2_ON) toggleLED(1);
    else if (code == LED3_ON) toggleLED(2);
    else if (code == LED4_ON) toggleLED(3);
    else if (code == LED5_ON) toggleLED(4);

    // Encender/apagar todos los LEDs
    else if (code == ALL_LEDS_TOGGLE) toggleAllLEDs();

    irrecv.resume();  // Recibir el próximo valor
  }
}

// Función para encender/apagar un LED específico
void toggleLED(int ledIndex) {
  ledStates[ledIndex] = !ledStates[ledIndex];
  digitalWrite(ledPins[ledIndex], ledStates[ledIndex] ? HIGH : LOW);
}

// Función para encender/apagar todos los LEDs
void toggleAllLEDs() {
  allLedsOn = !allLedsOn;
  for (int i = 0; i < 5; i++) {
    ledStates[i] = allLedsOn;
    digitalWrite(ledPins[i], allLedsOn ? HIGH : LOW);
  }
}


Explicación del Código

  1. Configuración de Pines: Cada LED se conecta a un pin digital y se configura como salida.
  2. Decodificación de Comandos IR: Se captura el valor de cada botón en el control remoto, y si coincide con alguno de los códigos definidos (que obtendrás tú mismo), enciende o apaga el LED correspondiente.
  3. Encender/Apagar Todos los LEDs: Si el código coincide con ALL_LEDS_TOGGLE, la función toggleAllLEDs alterna el estado de todos los LEDs.

Cómo Obtener los Códigos IR de tu Control Remoto


  1. Carga el código en Arduino.
  2. Abre el Monitor Serial y presiona los botones en tu control remoto.
  3. Cada botón mostrará un código hexadecimal en el monitor serial.
  4. Reemplaza los valores LED1_ON, LED2_ON, etc., en el código de Arduino con estos valores.
#include <IRremote.h>

const int RECV_PIN = 11; // Define the digital pin connected to the IR receiver
IRrecv irrecv(RECV_PIN); // Create an instance of IRrecv
decode_results results;  // Create a results object to store the received IR values

void setup() {
  Serial.begin(9600);  // Initialize serial communication
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("IR Receiver ready and waiting for signals...");
}

void loop() {
  // Check if an IR signal has been received
  if (irrecv.decode(&results)) {
    Serial.print("Received IR value: ");
    Serial.println(results.value, HEX); // Print the value in hexadecimal format
    irrecv.resume(); // Receive the next value
  }
}

Este programa te permitirá controlar cinco LEDs individualmente y apagarlos o encenderlos todos con un solo botón.


SHARE THIS

0 comments: