Construyendo un contador binario con Arduino

Del poco tiempo que tengo ultimamente para hacer cosillas, el Viernes por fin pude ir a la tienda de electrónica para comprar materiales🙂.

Básicamente compre una placa de prototipos, unos leds con resistencias y un LDR ( Resistencia variable según la luz ). De momento dejaremos el LDR para otra entrada y centremonos en las bombillas.

La conexión del circuito es bastante sencilla, simplemente enchufamos la salida digital del arduino al lado positivo del LED poniendo entre medias una resistencia, mientras que el lado negativo de cada LED iría al la conexión de tierra de la placa Arduino.

Como veis en el esquema, nada complicado😉

Montandolo en la placa de prototipos, a mi me ha quedado algo así:

Una vez tenemos el circuito montado, viene la parte de la programación, antes de nada hay que descargarse el genial entorno de programación de la gente de Arduino. Os lo podeis descargar desde aquí.

El código en cuestión sería algo como:

int outPin[] = {13, 12, 11, 10, 9};

int delayValue = 600;

void setup()
{
  int i = 0;
  for ( i = 0; i < 5; i++)
    pinMode(outPin[i], OUTPUT);
}

void loop()
{

  int i = 0, j=0;

  for ( i = 0; i < 32; i++)
  {
     for ( j = 0; j < 5; j++)
     {
       if ( ( (i >> j) & 1 )  == 1 )
           digitalWrite(outPin[j], HIGH);
       else digitalWrite(outPin[j], LOW);
     }
     delay(delayValue);
  }
}

Como veis es bastante sencillo, declaramos un array con el conjunto de pines a los cuales estan enganchados nuestros LEDs. En la función setup, los configuramos en modo salida.

La chicha esta en la función loop(), esta se ejecutará una y otra vez, lo que hacemos es iterar por los 32 numeros que podemos mostrar, ya que tenemos 5 LEDs, y 2 elevado a 5 son 32. Por cada número, encedemos o apagamos cada led correspondiente. La clave esta en el bucle que realiza la operación “(i >> j) & 1”. Cada iteración del bucle divide el numero en cuestion por 2 y se queda unicamente con el bit de menor valor. Asi sabemos si tenemos que encender o no el LED.

Por ejemplo, para mostrar el número 21, que en binario es (10101) deberiamos encender los LEDs 0, 2 y 4 y dejar apagados el resto. El calculo sería:

  • LED 0: 21 (10101 & 1) -> 1 , encendido
  • LED 1: 21 / 2 = 10 (01010 & 1) -> 0, apagado
  • LED 2: 21 / 4 = 5 (00101 & 1) -> 1, encendido
  • LED 3: 21 / 8 = 2 (00010 & 1) -> 0, apagado
  • LED 4: 21 / 16 = 1 (00001 & 1) -> 1, encendido

Como vemos, el resultado del calculo es correcto. Básicamente lo que se hace es ir desplazando los bits hacia la derecha y quedandonos con el bit menos significativo.

Bueno, pues dada la maravillosa sencillez que caracteriza al Arduino, solo nos queda darle al boton de Upload, y veremos, como las lucecitas empiezan a encenderse.

Os dejo un video de mi resultado🙂

3 respuestas a Construyendo un contador binario con Arduino

  1. M.K. dice:

    impressive… may I copy ur source code and put you in the credits?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: