Quiero mostrar en la lcd, palabras al pulsar un boton del mando IR

Quiero usar el mando para poder usar como botones
aqui enciende un led, pero yo quiero usarlo como boton
========================================================
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN 8 // pin that IR detector is connected to

int led = 13;
static int aux = 1;

NECIRrcv ir(IRPIN) ;

void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600) ;
Serial.println("0xEF10FF00") ;
ir.begin() ;
}

void loop()
{

unsigned long ircode ;

while (ir.available()) {

ircode = ir.read() ;

Serial.println(ircode) ;

if(ircode == 3125149440){

if(aux == 0){
digitalWrite(led, LOW);
aux = 1;
}
else{
digitalWrite(led, HIGH);
aux = 0;
}
}

}
}
========================================================

ejemplo este codigo usa 3 botones, yo quiero usar el mando

http://e-elektronic.blogspot.com.es/2013/09/arduino-tutorial-parte-14-temporizador.html

Mando ARDUINO101
1= 0xEF10FF00
2= 0xFC03FF00
3= 0xFE01FF00
4= 0xF906FF00
5= 0xF609FF00
6= 0xE21DFF00
7= 0xE01FFF00
8= 0xF20DFF00
9= 0xE619FF00
0= 0xE41BFF00
10+= 0xEE11FF00
Mute= 0xEA15FF00
subtitule= 0xE817FF00
goto= 0xED12FF00
mode= 0xE916FF00
zoom= 0xB34CFF00
audio= 0xBF40FF00
display= 0xB748FF00
detras= 0xFB04FF00
alante= 0xFF00FF00
angle= 0xFD02FF00
boton amarillo arriba= 0xFA05FF00
menu= 0xAB54FF00
title= 0xB24DFF00
boton amarillo izquierda= 0xF50AFF00
play/pausa= 0xE11EFF00
boton amarillo derecha= 0xF10EFF00
stop= 0xE51AFF00
setup= 0xE31CFF00
boton amarillo abajo= 0xEB14FF00
return= 0xF00FFF00
open= 0xF30CFF00

Hace unos días que lo tengo soy un noobster. Saludos!! ...
 
Bien, veamos si te entiendo.
Quieres utilizar un control remoto a travez de IR para mostra palabras en un display?
Puede resolverse de varias maneras.
Una de ellas es guardando esos codigos en constantes de mejor interpretación y compararlas. Te recomiendo que operes los numeros en decimal y no en hexadecimal (a menos que estes familiarizado con este).
Entonces por ejemplo:
Código:
const int HOLA=0xF30CFF00 //Cada vez que escriba HOLA estaré haciendo referencia a ese código.

if(ircode==HOLA){
lcd.setCursor(0,0);
lcd.println("HOLA");
}

No recuerdo si funciona cuando colocas los datos en hexadecimal, por las dudas deberías leerlos en decimal y listo.

No te recomiendo que declares variables dentro del loop. Es mejor utilizarlas como globales, sino en cada ciclo de programa vuelve a generarlas y gastas operaciones al cuete.
Eso solo importa si el programa es largo, pero es una buena costumbre. Distinto es en el Setup, ya que solo se ejecuta una vez.

Tengo algún que otro programita de IR con arduino, si quieres cuando este en mi pc te resumo alguno para subirlo.

Saludos!
 
Bien, veamos si te entiendo.
Quieres utilizar un control remoto a travez de IR para mostra palabras en un display?
Puede resolverse de varias maneras.
Una de ellas es guardando esos codigos en constantes de mejor interpretación y compararlas. Te recomiendo que operes los numeros en decimal y no en hexadecimal (a menos que estes familiarizado con este).
Entonces por ejemplo:
Código:
const int HOLA=0xF30CFF00 //Cada vez que escriba HOLA estaré haciendo referencia a ese código.

if(ircode==HOLA){
lcd.setCursor(0,0);
lcd.println("HOLA");
}

No recuerdo si funciona cuando colocas los datos en hexadecimal, por las dudas deberías leerlos en decimal y listo.

No te recomiendo que declares variables dentro del loop. Es mejor utilizarlas como globales, sino en cada ciclo de programa vuelve a generarlas y gastas operaciones al cuete.
Eso solo importa si el programa es largo, pero es una buena costumbre. Distinto es en el Setup, ya que solo se ejecuta una vez.

Tengo algún que otro programita de IR con arduino, si quieres cuando este en mi pc te resumo alguno para subirlo.

Saludos!

acabo de experimentar y gracias a ti entendi bien lo de if y else, hice esto va pero lo que pasa es que no la borra, mira
Código:
#include <LiquidCrystal.h>
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN 8   // pin that IR detector is connected to

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

static int aux = 1;

NECIRrcv ir(IRPIN) ;

void setup()
{
  Serial.begin(9600) ;
  Serial.println("NEC IR code reception") ;
  ir.begin() ;
  lcd.begin(16, 2);
}

void loop()
{

  unsigned long ircode ;

  while (ir.available()) {
  
    ircode = ir.read() ;
  
    Serial.println(ircode) ;
  
    if(ircode == 4010868480){
    
      if(aux == 0){
        lcd.setCursor(0,0);
lcd.println("HOLA");
        aux = 1;
      }
      else{
        lcd.setCursor(0,0);
lcd.println("HOLA 2");
        aux = 0;
      }
    }
  
  }
}
ese funciona entre comillas muestra "hola y 3 numeros" raros, si le das muestra "Hola 2 y 2 numeros raros" esto estube experimentando con el tuyo lo puse en setup y después en loop pero da error
Código:
#include <LiquidCrystal.h>
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN 8   // pin that IR detector is connected to

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  const int HOLA=0xF30CFF00 //Cada vez que escriba HOLA estaré haciendo referencia a ese código.
}
void loop() {
  if(ircode == HOLA){
lcd.setCursor(0,0);
lcd.println("HOLA");
}
 
No lo compilé antes de subirlo, lo escribí como me vino a la cabeza jaja. Hace mas de 5 meses que no programo y el "compilador mental" falla.
Antes de escribir en la pantalla debes borrar ese espacio, sin sucede que se sobre-escribe. Por ejemplo
escribes HOLA123 -> HOLA1234
escribes perro -> perro234
escribes 47 -> 47rro234
por lo que antes borra la linea con la instrucción por defecto o sino simplemente
lcd.setCursor(0,1);
lcd.print(*/16 Espacios en blanco*/); //El editor no me los publica
lcd.setCursor(0,1);

Mas allá de todo, probaría por partes usando la impresión serial por ejemplo y de esta manera depurar cualquier problema en la parte del IR. Un código así serviría: (aclaro que no estoy compilándolo ni probándolo)

if(msj==123456789){
Serial.println("msj1");
}
if(msj==987654321){
Serial.println("msj2");
}
if(msj==654987123){
Serial.println("msj3)";
}

En el adjunto tienes un ejemplo de código de hace unos 2 años que no es para NADA OPTIMO pero para aprender sirve. No sabía nada para esa época jaja!

Suerte, cualquier cosa te sigo dando una mano!
 

Adjuntos

  • MAESTRO_2_Probado.rar
    1.4 KB · Visitas: 3
Última edición:
Atrás
Arriba