Mi primer programa con Arduino

Recientemente me he comprado un nuevo juguete, un Arduino.

Arduino es una plataforma electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.

Así que me he puesto a trastear un poco con el y este es mi primer programa:

// Este es el pin donde esta conectado 
// el receptor de infrarrojos
#define rxPin 8
 
// Codigo para el modelo RM-ED036 de SONY
char* codigos[] = {
  "111111121111",  // Boton 1
  "211111121111",  // Boton 2
  "121111121111",  // Boton 3
  "221111121111",  // Boton 4
  "112111121111",  // Boton 5
  "212111121111"}; // Boton 6 
 
 
void setup()  {  
  pinMode(rxPin, INPUT); 
  Serial.begin(9600);
}
 
void loop() 
{ 
 
  int i,j;
  char codigo[40];
 
  // Si detectamos una nueva pulsacion
  if (digitalRead(rxPin)==LOW)
  {
   // Esperamos a que termine el pulso inicial 
   while (digitalRead(rxPin)==LOW);  
   // Leemos y descartamos los primeros 20 bits
   for (i=0;i<20;i++)
   {
     pulseIn(rxPin,LOW,600*5);    
   } 
   // Leemos los siguientes 40 bits
   for (i=0;i<40;i++)
   {
     // Calculamos si es un 0 = 600us o un 1 = 1200us
     codigo[i] = (pulseIn(rxPin,LOW,600*5) / 600) + 48;    
   }   
   // Se envia el mismo codigo repetido varias veces
   // cada vez que se pulsa un boton asi que comparamos
   // dos de los codigos recibidos para descartar errores 
   for (i=0;i<20;i++)
   {
     if (codigo[i]!=codigo[i+20])
     {
      // Si no son iguales los descartamos 
      return;
     }  
   } 
   // Comparamos el codigo recibido con los 
   // guardados en el array
   for (i=0;i<6;i++)
   {
     for (j=0;j<12;j++)
     {
      // Si este no es el codigo que buscamos
      if (codigo[j]!=codigos[i][j])
      {
        // Continuamos con el siguiente
        break;
      }
     } 
     // Si hemos encontrado el codigo
     if (j==12)
     {
      // Lo enviamos por el puerto serie 
      Serial.print("Has pulsado el: ");
      Serial.println(i+1);
      break; 
     }
   }   
  }    
}

Básicamente recibe la señal de un sensor de infrarrojos a través de unos de sus pines y decodifica el botón que se ha pulsado en el mando a distancia. El control remoto que utilizo es el de una televisión Sony , concretamente el modelo es RM-ED036.

No es gran cosa, pero por algo hay que empezar.

Comentarios

Me parece de los más interesante. Lo desconocía y es algo que me interesa desde hace tiempo.
Sería genial, dado que es algo hardware que pusieras alguna foto o esquema para refrescarnos la memoria.

Un saludo.

Pues el esquema es de lo mas sencillo, ya que el receptor de infrarrojos ya lleva todo integrado y solamente hay que conectarlo al Arduino.

Pero una imagen vale mas que mil palabras:

El receptor de infrarrojos es el componente en la parte superior de la fotografía y sus patillas esta conectadas de la siguiente manera a los conectores de la placa(de izquierda a derecha):

1- Con un cable azul al pin8
2- GND
3- 5V

Muy interesante... entonces con este kit puede uno diseñar, digamos, un autómata?

saludox

Puedes hacer lo que quieras, hay gente que ha hecho cosas increíbles.

Solamente con darte una vuelta por google veras cientos de proyectos, desde robots hasta instrumentos musicales, controles remotos, videojuegos, etc ...

Saludos