Muy buenas.
Este es mi primer mensaje y les pido ayuda.
Resulta que deseo controlar con mando a distancia (sea el que sea, porque puedo obtener los códigos vía serie) y mi problema es que no logro encender el segundo led.
Uso la librería IRRemote.
Lo estoy probando con Arduino Mega 2560, también probado en UNO y nada, solo enciendo el primer código con el mando al primer led, el segundo no hay forma, recibe la información de la tecla pulsada pero no enciende el segundo led.
Este es el código usado;
//incluimos la librería de IRremote
#include <IRremote.h>
#include <IRremoteInt.h>
int RECV_PIN = 11; //Definimos el pin donde tiene que esta el IR
IRrecv irrecv(RECV_PIN);
decode_results results;
//declaramos contantes
int pinLed = 26;
int pinLed2 = 28;
//declaramos variables
int ValorIR = 0; //declaramos variable almacen valor inr
int estadoLed = 0;
int estadoLed2 = 0;
void setup()
{
Serial.begin(9600); //Ponemos el puerto serie a 9600
Serial.println("Listo para recibir códigos!"); // Mensaje
irrecv.enableIRIn(); // el receptor ir en funcionamiento
pinMode(pinLed, OUTPUT); //definimos el pin del led como de salida
pinMode(pinLed2, OUTPUT); //definimos el pin del led2 como de salida
}
//definimos una función llamada "leerIR" esto nos ayuda a que en el futuro podamos reutilizarla.
//no tiene parámetros de entra y devuelve un INT
int leerIR(){
if (irrecv.decode(&results)) { // si recibe señal IR
int lectura = results.value; //Guarda el valor de la señal en la variable lectura
irrecv.resume(); // Recive siguiente valor IR
Serial.println(lectura); // Ponemos HEX para Hexadecimal o nada o DEC decimal
return lectura; //devuelve lectura
}
}
// Programa bucle
void loop() {
ValorIR=leerIR(); //asignamos a esa variable el valor que devuelve al leerIR
if (ValorIR == 18615){ //comprobamos el codigo recibido tecla mando PR+
if (estadoLed == 0){ //comprobamos si el led está encendido
digitalWrite(pinLed, HIGH); //lo encendemos
estadoLed = 1; //marcamos como que está encendido
}
else{ //si no está apagado es que esta encendido
digitalWrite(pinLed, LOW); //lo apagamo
estadoLed=0; //marcamos como apagado el primer led
}
// ===============================
ValorIR=leerIR(); //asignamos a esa variable el valor que devuelve al leerIR
if (ValorIR == 8415){ //comprobamos el codigo recibido tecla mando PR-
if (estadoLed2 == 0){ //comprobamos si el led está encendido
digitalWrite(pinLed2, HIGH); //lo encendemos
estadoLed2 = 1; //marcamos como que está encendido
}
//=========================================
else{ //si no está apgado es que esta endendico
digitalWrite(pinLed2, LOW); //lo apagamo
estadoLed2 = 0; //Marcamos como apagado el segundo led
}
}
}
}
Espero sus amables sugerencias.
Gracias y saludos.