Você está na página 1de 5

Prctica #5: Cdigo Binario de 4 Bits en Arduino

Selma Julieta Padilla Padilla


AMPLIFICADORES DE BIOSEALES
Profesor: Fabian N. Murieta
FACULTAD DE INGENIERA ARQUITECTURA Y DISEO
CARRETERA TRANSPENINSULAR ENSENADA-TIJUANA NUMERO 3917, COLONIA PLAYITAS.
Ensenada, B.C., C.P. 22860. Telfono 646-1750744, Fax 646-1744333.
E-mail: selma.padilla@uabc.edu.mx

I.

IV.

INTRODUCCIN

PROCEDIMIENTO

La primera parte de la prctica consisti en desarrollar un


programa que encendiera los LEDs de acuerdo al cdigo
binario, como un contador. El contador debe encender despus
de presionar el pushbutton y soltarlo, para no tener que
mantenerlo presionado durante toda la secuencia.

El cdigo binario decimal es un cdigo comnmente usado en


sistemas digitales para representar nmeros. Es conocido como
el cdigo binario decimal de 4 bits. El CBD es comn por
varias razones, entre estas estn: facilidad de codificar y
decodificar decimales a CBD, facilidad de implementacin en
sistemas digitales donde informacin decimal es mostrada
como entradas o salidas.

Para probar el funcionamiento del cdigo, utilizamos Proteus


para realizar la simulacin, agregando el archivo .hex al
Arduino.

El CBD representa a los dgitos decimales por secuencias de


bits en sistema binario. Entonces cada secuencia de 4 bits es una
palabra del cdigo, y descifrada, representa un nmero.

A travs del uso de un Arduino se puede programar un circuito


para realizar diferentes funciones. El lenguaje de programacin,
aunque es propio de Arduino, s es muy similar a C y C++.

II.

OBJETIVO

El objetivo de esta prctica es conocer el funcionamiento


prctico del arduino, a travs de un ejercicio donde se
encendern LEDs de acuerdo al cdigo binario de 4 bits.
Imagen 1. Circuito de contador CBD para la simulacin

III.

Despus de probar el funcionamiento del cdigo a travs


de la simulacin, se procede a realizar el circuito real.

MATERIALES Y EQUIPO

Push button
LED (4)
Resistencias de 200 (4)
Cable
Protoboard
Arduino Mega 2560
Software Arduino 1.6.8
Proteus 8 Professional

Pasos para formar el circuito


1.
2.
3.
4.
5.
6.

La prctica fue realizada en el laboratorio de Bioinstrumentacin, en la


Universidad Autnoma de Baja California, Unidad Sauzal.

Conectar Arduino Mega 2560 a la computadora y abrir


el programa en Arduino.
Colocar 4 resistencias de 200 a cada pin (8, 9, 10,
11), y despus conectar un LED a estos.
Colocar el pushbutton al pin 7 y por otro lado a los
LEDs.
Correr el programa.
Presionar el pushbutton y soltar.
Ver el cambio de luz en LEDs y verificar que s
funcione como contador.

En la primera parte del cdigo se establecen las variables:


nmero de pines de salida, valor del delay equivalente a
segundos, estado inicial del pushbutton y las dos contantes del
ltimo estado del pushbutton y su pin. Al utilizar const int no
se pueden modificar los valores de estas variables.
Despus de declarar el pushbutton como input:
pinMode(7, INPUT);
Se procede a crear un for loop en el setup para que los pines
previamente declarados como outPin sean pines de salida:
for ( i = 0; i < 4; i++)
pinMode(outPin[i], OUTPUT);

Imagen 2. Cables conectados desde el protoboard a los pins


correspondientes.

V.

A partir de este punto se crea el arreglo en el void loop para que


funcione como un contador. En este caso 16 es el lmite ya que
es un contador de 4 bits, y 2^4 es igual a 16.

RESULTADOS

Cdigo de programa
Usando el arreglo de (i >> j) & 1 , se hace una divisin del
nmero, de esta manera quedndose con el bit menos
significante, para as saber cules LEDs deben estar encendidos
o apagados. Y as se van desplazando los bits hacia la derecha
usando el valor del bit menos significativo.

[code]
int outPin[] = {8, 9, 10, 11};
int delayValue = 1000;
int pushstate = 0;
const int lastButtonState = 0;
const int pushbutton = 7;

Resultado de simulaciones en Proteus


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

Los LEDs encendidos indican un 1, mientras que apagado es


0. D1 es el bit menos significativo y D4 es el bit ms
significativo.

void loop()
{
int i = 0, j = 0;
int pushstate = digitalRead(pushbutton);
if (pushstate != lastButtonState) {
for ( i = 0; i < 16; i++)
{
for ( j = 0; j < 4; j++)
{
if ( ( (i >> j) & 1 ) == 1 )
digitalWrite(outPin[j], HIGH);
else digitalWrite(outPin[j], LOW);
}
delay(delayValue);
}
for ( j = 0; j < 4; j++)
{
digitalWrite(outPin[j], LOW);
}
}
}

Imagen 3. Inicio del conteo: 0000 = 0

[/code]

Imagen 4. 0001 = 1

Imagen 5. 0010 = 2

Imagen 9. 0110 = 6

Imagen 6. 0011 = 3

Imagen 10. 0111 = 7

Imagen 7. 0100 = 4

Imagen 10. 0111 = 8

Imagen 8. 0101 = 5
Imagen 11. 1001 = 9

Imagen 12. 1010 = 10

Imagen 16. 1110 = 14

Imagen 13. 1011 = 11


Imagen 16. 1111 = 15

Resultado de simulaciones en protoboard

Imagen 14. 1100 = 12

Imagen 17. Ejemplo del funcionamiento correcto donde se indica el


nmero 5 = 0101

Imagen 15. 1101 = 13


4

VI.

CONCLUSIONES

Se opt por no adjuntar todas las imgenes del funcionamiento


del circuito en tiempo real a travs del circuito en protoboard,
ya que la simulacin en Proteus es suficiente para demostrar el
funcionamiento del cdigo en Arduino.
En esta prctica vimos la importancia de no olvidar lo que
aprendimos en semestres anteriores respecto a la materia de
programacin. Cuando estuvimos en el laboratorio intentando
realizar el cdigo nos dimos cuenta que no recordbamos bien
cmo hacer loops, y estbamos complicando el cdigo
intentando hacer switch cases para cada caso, en vez de slo
incrementar en el loop y usar lgica para idear cundo el LED
deba estar prendido y cundo apagado, de acuerdo al cdigo
binario.

REFERENCIAS
[1] Wakerly, John F., and Efre Miguel. Diseo Digital:
Principios Y Prcticas. 3a. ed. Mxico: Pearson Educacin,
2001.