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
- Conecta cada LED a un pin digital de Arduino (ejemplo: pines 2, 3, 4, 5 y 6) con una resistencia.
- 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.
- Asegúrate de instalar la librería
IRremote
desde el Administrador de Librerías de Arduino. - 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
- Configuración de Pines: Cada LED se conecta a un pin digital y se configura como salida.
- 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.
- Encender/Apagar Todos los LEDs: Si el código coincide con
ALL_LEDS_TOGGLE
, la funcióntoggleAllLEDs
alterna el estado de todos los LEDs.
Cómo Obtener los Códigos IR de tu Control Remoto
- Carga el código en Arduino.
- Abre el Monitor Serial y presiona los botones en tu control remoto.
- Cada botón mostrará un código hexadecimal en el monitor serial.
- 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.