26 de mayo de 2012

Arduino: Emitiendo ceros y unos

Nuestra idea es sacar por el pin 2 de nuestra Arduino repetidamente una forma de onda cuadrada concreta. Nos valdría cualquiera pero, para  nuestro ejemplo, intentaremos reproducir la siguiente:
11110110100110100
Para emitir un 1, pondremos el pin a alto, esperaremos un tiempo determinado y luego lo pondremos a bajo, esperaremos otro tiempo y así repetidamente.

El programa es muy simple. Definimos el pin por el que sale la señal y el tiempo que dura un pulso. Como lo primero que queremos emitir son cuatro 1, ponemos el pin de salida en alto y esperamos cuatro veces el tamaño del pulso. Con la misma idea reproducimos los demás ceros y unos para conseguir la onda adecuada.

const int pinDeSalida = 2;  // Indicamos el pin por el que sale la señal
const int pulsoBase = 250;  // Este es el tamaño del pulso base en ms
 
void setup()
{
  // ponemos pin en modo salida
  pinMode(pinDeSalida, OUTPUT);
}
 
void loop()
{
  digitalWrite(pinDeSalida, HIGH);
  delayMicroseconds(pulsoBase * 4); // 1111
  digitalWrite(pinDeSalida, LOW);
  delayMicroseconds(pulsoBase);     // 0

  digitalWrite(pinDeSalida, HIGH);
  delayMicroseconds(pulsoBase * 2); // 11
  digitalWrite(pinDeSalida, LOW);
  delayMicroseconds(pulsoBase);     // 0

  digitalWrite(pinDeSalida, HIGH);
  delayMicroseconds(pulsoBase);     // 1
  digitalWrite(pinDeSalida, LOW);
  delayMicroseconds(pulsoBase * 2); // 00

  digitalWrite(pinDeSalida, HIGH);
  delayMicroseconds(pulsoBase * 2); // 11
  digitalWrite(pinDeSalida, LOW);
  delayMicroseconds(pulsoBase);     // 0

  digitalWrite(pinDeSalida, HIGH);
  delayMicroseconds(pulsoBase);     // 1
  digitalWrite(pinDeSalida, LOW);
  delayMicroseconds(pulsoBase * 2); // 00
}


Tras haber cargado el programa, hemos realizado una pequeña prueba conectando una sonda a nuestra Arduino para verla en un osciloscopio. Como se ve en la siguiente imagen, hemos logrado emitir la onda con éxito:

Arduino conectada a Osciloscopio

En esta otra vemos un detalle de la onda:

Detalle de onda