312084176-Practica-5-Codigo-Binario-en-Arduino.pdf

Descripción completa

Views 144 Downloads 234 File size 459KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

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: [email protected]

I.

IV.

INTRODUCCIÓN

PROCEDIMIENTO

La primera parte de la práctica consistió en desarrollar un programa que encendiera los LEDs de acuerdo al código binario, como un contador. El contador debe encender después de presionar el pushbutton y soltarlo, para no tener que mantenerlo presionado durante toda la secuencia.

El código binario decimal es un código comúnmente usado en sistemas digitales para representar números. Es conocido como el “código binario decimal” de 4 bits. El CBD es común por varias razones, entre estas están: facilidad de codificar y decodificar decimales a CBD, facilidad de implementación en sistemas digitales donde información decimal es mostrada como entradas o salidas.

Para probar el funcionamiento del código, utilizamos Proteus 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.        

Después de probar el funcionamiento del código a través de la simulación, 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 práctica fue realizada en el laboratorio de Bioinstrumentación, en la Universidad Autónoma de Baja California, Unidad Sauzal.

1

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 después 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 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: 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 límite ya que es un contador de 4 bits, y 2^4 es igual a 16.

RESULTADOS

Código de programa Usando el arreglo de (i >> j) & 1 , se hace una división del número, de esta manera quedándose con el bit menos significante, para así saber cuáles 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 más 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

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.

5