Añadir nuevo comentario

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.