domingo, 26 de julio de 2015

Circuitos aritmerticos

Circuito aritmético
La conexión del circuito es bastante sencilla, simplemente conectamos la salida digital del arduino al lado positivo del LED poniendo entre medias unas resistencias de 330 ohm´s, mientras que el lado negativo de cada LED iría al la conexión de tierra del Arduino.



Como se ve en el esquema.
Montándolo en la placa protoboard, a mí 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 entorno de programación del Arduino.
El código en cuestión sería algo como:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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);
  }
}
Es bastante sencillo, declaramos un array con el conjunto de pines a los cuales están conectados nuestros LEDs. En la función setup, los configuramos en modo salida.
Está 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 elevados a 5 son 32. Por cada número, encendemos o apagamos cada led correspondiente. La clave está 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.

Conclucion

En esta practica pode realizar sumas secuenciales las que ayudan en diferentes casos segun lo requeramos podemos ir sumando numero de 2 en 2 o ir restando para realizar diferentes actividades ya sea para mostrar un marcador o para realiazar un conteo.

No hay comentarios.:

Publicar un comentario