Está en la página 1de 5

Práctica #5: Código Binario de 4 Bits en Arduino

Selma Julieta Padilla Padilla


AMPLIFICADORES DE BIOSEÑALES
Profesor: Fabian N. Murieta
FACULTAD DE INGENIERÍA ARQUITECTURA Y DISEÑO
CARRETERA TRANSPENINSULAR ENSENADA-TIJUANA NUMERO 3917, COLONIA PLAYITAS.
Ensenada, B.C., C.P. 22860. Teléfono 646-1750744, Fax 646-1744333.
E-mail: selma.padilla@uabc.edu.mx

I. INTRODUCCIÓN IV. PROCEDIMIENTO

El código binario decimal es un código comúnmente usado en La primera parte de la práctica consistió en desarrollar un
sistemas digitales para representar números. Es conocido como programa que encendiera los LEDs de acuerdo al código
el “código binario decimal” de 4 bits. El CBD es común por binario, como un contador. El contador debe encender después
varias razones, entre estas están: facilidad de codificar y de presionar el pushbutton y soltarlo, para no tener que
mantenerlo presionado durante toda la secuencia.
decodificar decimales a CBD, facilidad de implementación en
sistemas digitales donde información decimal es mostrada
Para probar el funcionamiento del código, utilizamos Proteus
como entradas o salidas.
para realizar la simulación, agregando el archivo .hex al
Arduino.
El CBD representa a los dígitos decimales por secuencias de
bits en sistema binario. Entonces cada secuencia de 4 bits es una
palabra del código, y descifrada, representa un número.

A través del uso de un Arduino se puede programar un circuito


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

II. OBJETIVO

El objetivo de esta práctica es conocer el funcionamiento


práctico del arduino, a través de un ejercicio donde se
encenderán LEDs de acuerdo al código binario de 4 bits.

Imagen 1. Circuito de contador CBD para la simulación

III. MATERIALES Y EQUIPO Después de probar el funcionamiento del código a través


de la simulación, se procede a realizar el circuito real.
 Push button
Pasos para formar el circuito
 LED (4)
 Resistencias de 200Ω (4) 1. Conectar Arduino Mega 2560 a la computadora y abrir
 Cable el programa en Arduino.
 Protoboard 2. Colocar 4 resistencias de 200Ω a cada pin (8, 9, 10,
 Arduino Mega 2560 11), y después conectar un LED a estos.
 Software Arduino 1.6.8 3. Colocar el pushbutton al pin 7 y por otro lado a los
 Proteus 8 Professional LEDs.
4. Correr el programa.
. 5. Presionar el pushbutton y soltar.
6. Ver el cambio de luz en LEDs y verificar que sí
funcione como contador.
La práctica fue realizada en el laboratorio de Bioinstrumentación, en la
Universidad Autónoma de Baja California, Unidad Sauzal.

1
En la primera parte del código se establecen las variables:
número 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.

Después 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:

Imagen 2. Cables conectados desde el protoboard a los pins for ( i = 0; i < 4; i++)
correspondientes. pinMode(outPin[i], OUTPUT);

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


V. RESULTADOS funcione como un contador. En este caso 16 es el límite ya que
es un contador de 4 bits, y 2^4 es igual a 16.
Código de programa
Usando el arreglo de (i >> j) & 1 , se hace una división del
[code] número, de esta manera quedándose con el bit menos
int outPin[] = {8, 9, 10, 11}; significante, para así saber cuáles LEDs deben estar encendidos
int delayValue = 1000; o apagados. Y así se van desplazando los bits hacia la derecha
int pushstate = 0; usando el valor del bit menos significativo.
const int lastButtonState = 0;
const int pushbutton = 7;
Resultado de simulaciones en Proteus
void setup()
{ Los LEDs encendidos indican un 1, mientras que apagado es
pinMode(7, INPUT); 0. D1 es el bit menos significativo y D4 es el bit más
int i = 0; significativo.
for ( i = 0; i < 4; i++)
pinMode(outPin[i], OUTPUT);
}

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++)
{
Imagen 3. Inicio del conteo: 0000 = 0
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);
}
}
}

[/code]
Imagen 4. 0001 = 1

2
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

3
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


número 5 = 0101

Imagen 15. 1101 = 13

4
VI. CONCLUSIONES

Se optó por no adjuntar todas las imágenes del funcionamiento


del circuito en tiempo real a través del circuito en protoboard,
ya que la simulación en Proteus es suficiente para demostrar el
funcionamiento del código en Arduino.

En esta práctica vimos la importancia de no olvidar lo que


aprendimos en semestres anteriores respecto a la materia de
programación. Cuando estuvimos en el laboratorio intentando
realizar el código nos dimos cuenta que no recordábamos bien
cómo hacer loops, y estábamos complicando el código
intentando hacer switch cases para cada caso, en vez de sólo
incrementar en el loop y usar lógica para idear cuándo el LED
debía estar prendido y cuándo apagado, de acuerdo al código
binario.

REFERENCIAS

[1] Wakerly, John F., and Efre Miguel. Diseño Digital:


Principios Y Prácticas. 3a. ed. México: Pearson Educación,
2001.