Está en la página 1de 9

UNIVERSIDAD NACIONAL DE

VERSIÓN: 1
CHIMBORAZO

FACULTAD DE INGENIERIA Página 1 de 9

GUÍA DE PRÁCTICAS
PERIODO ACADÉMICO ABRIL AGOSTO 2019
CARRERA: DOCENTE: LEONARDO SEMESTRE: TERCERO
ELECTRONICA Y RENTERIA PARALELO: A
TELECOMUNICACIONES
NOMBRE DE LA ASIGNATURA: CÓDIGO DE LA ASIGNATURA: LABORATORIO A UTILIZAR:
MICROPROCESADORES Y LAB EET61 LABORATORIO ELECTRONICA

Práctica No. Tema: Manejo de GPIO Duración No. Grupos No. Estudiantes (por Grupo)
Atmega. (horas)
3 4
3 • Edison Brasales
• Daniel Cabrera
• Víctor Morejón
• Christopher Velecela

Objetivos de la Práctica:

• Configurar los puertos E/S para enviar y recibir datos.

Equipos, Materiales e Insumos:

- Osciloscopio
- Generador de funciones,
- Multímetro,
- Mcu, Arduino
- Pc
- Sensores
- LEDs

Procedimiento:

1. Abrir un nuevo proyecto Arduino y crear un código que active y desactive 5 leds cada 100ms.

//DECLARAMOS LOS PINES DIGITALES DEL ARDUINO


int LED1=3;
int LED2=4;
int LED3=5;
int LED4=6;
int LED5=7;

void setup() { // EN ESTA PARTE EL CODIGO SE EJECUTA SOLO UNA VEZ AL INCIO DEL SISTEMA

pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(LED5,OUTPUT);

void loop() { //EN ESTA PARTE DEL CODIGO VAMOS EJECUTAR EL ENCENDIDO Y APAGADO DEL LED A LOS
100 ms

digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);

delay(100); // ES EL TIEMPO DE RETARDO EN ESTE CASO 100 ms

digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);

delay(100);

Fig. 1: Implementación

Determinar el tamaño del código generado

El tamaño del código es 2% del espacio de almacenamiento del programa


2. Verificar el funcionamiento del código anterior con el uso del osciloscopio.

Fig. 2: Visualización de la señal


3. Abrir un nuevo proyecto Arduino y crear un código que encienda un LED cada vez que se presione un
botón.

// EN ESTA PARTE DE LA PROGRAMACION DECLARAMOS LAS VARIABLES Y CONSTANTES GLOBALES

const int LED=13; // DECLARAMOS UN PUERTO DIGITAL CONSTNATE DE SALIDA PARA LA VISUALIZACION
LED
const int BOTON=7; // DECLARAMOS UN PUERTO DIGITAL CONSTANTE DE ENTRADA PARA EL PULSADOR
int presione;

void setup(){ // EN ESTA PARTE EL CODIGO SE EJECUTA SOLO UNA VEZ AL INCIO DEL SISTEMA

pinMode(LED,OUTPUT); // DECLARAMOS SI ES ENTRADA O SALIDA


pinMode(BOTON,INPUT);

}
void loop(){ //EN ESTA PARTE DEL CODIGO VAMOS EJECUTAR EL ENCENDIDO Y APAGADO DEL LED

presione = digitalRead(BOTON);

if (val==HIGH){
digitalWrite(LED,HIGH);
}
else {
digitalWrite(LED,LOW);
}
}

Fig. 3: Implementación de circuito con pulsador

Determinar el tamaño del código generado.

El tamaño del código es 2% del espacio de almacenamiento del programa


4. Verificar el funcionamiento del código anterior con el uso del osciloscopio.

Fig. 4: Visualización de la señal en alto y bajo

Fig5. Tiempo en bajo (0) y tiempo en alto (1)

5. Repetir los pasos anteriores optimizando el código a través del manejo de registros de E/S. DDRX, PINX y
PORTX.

- PRIMER CODIGO GENERADO CON REGISTROS

void setup() {

DDRB= 0b11111111;// DDRX REGISTTOS PARA LA CONFIGURACION DE ENTRADA Y SALIDA ASIGNAMOS LOS
PINES DIGITALES DE 0-7 DEL ARDUINO Y B PORQUE ES ES PUERTO QUE UTILIZAMOS

void loop() {

// PORTB UTILIZAMOS PORQUE ES UN DE DATOS DEL PUERTO B(BINARIO)- LECTURA/ESCRITURA

PORTB= 0b11111111; //EN ESTA PARTE DEL CODIGO ENCENDEREMOS TODOS LOS LEDS
delay(100); // ES EL TIEMPO DE RETARDO EN ESTE CASO 100 ms

PORTB= 0b00000000; //EN ESTA PARTE APAGAMOS TODOS LOS LEDS

delay(100);

Fig6. Implementación utilizando registros

Determinar el tamaño del código generado.

El tamaño del código es 2% del espacio de almacenamiento del programa

SEGUNDO CODIGO GENERADO CON REGISTROS MEDIANTE UN PULSADOR

void setup() {

DDRB= 0b11111111;// DDRX REGISTTOS PARA LA CONFIGURACION DE ENTRADA Y SALIDA ASIGNAMOS


LOS PINES DIGITALES DE 0-7 DEL ARDUINO Y B PORQUE ES ES PUERTO QUE UTILIZAMOS

void loop() {
// PORTB UTILIZAMOS PORQUE ES UN DE DATOS DEL PUERTO B(BINARIO)-
LECTURA/ESCRITURA
PORTB= 0b11111111; //EN ESTA PARTE DEL CODIGO ENCENDEREMOS TODOS LOS LEDS
delay(100); // ES EL TIEMPO DE RETARDO EN ESTE CASO 100 ms
PORTB= 0b00000000; //EN ESTA PARTE APAGAMOS TODOS LOS LEDS
delay(100);
}

Fig7. Implementación con registros led pulsador


Determinar el tamaño del código generado.

El tamaño del código es 1% del espacio de almacenamiento del programa

6. Analice los resultados

ANALISIS DE CODIGO NUMERO 1


• Permite encender y apagar 5 leds al mismo tiempo, con un retardo de 100ms después de cada
acción de encendido y apagado, haciendo uso de los pines digitales de la tarjeta arduino declarando
una a una cada variable como tipo entero y asignando un PIN de salida a cada LED.

ANALISIS DE CODIGO NUMERO 2


• El programa hace uso de un almacenamiento de datos, lo cual funciona como una memoria para
saber el estado en el que se encuentran tanto el LED como el pulsador, consecuentemente hace
una lectura del estado almacenado y mediante una condición el pulsador en estado ON enciende
el LED caso contrario se mantiene apagado.

ANALISIS DE CODIGO NUMERO 3

• En el programa se hace uso de los registros DDRB con valor lógico 1 para asignar como salidas los pines
del puerto B del arduino, y PORTB para asignar un estado de encendido 1 y apagado 0, con un retardo
entre cada acción de 100ms estas instrucciones serán introducidas dentro de un ciclo de repetición infinita.

ANALISIS DE CODIGO NUMERO 4

• Mediante el uso de los registros DDRB configuramos el puerto B. P1 como salida del arduino, y
haciendo uso de los registros PORTB y PINB hace una comparación del pulsador si este encendido
enciende el led caso contrario apaga el LED estas instrucciones van inmersas en un ciclo de
repetición infinito.

Resultados:

Los presentes programas tienen una finalidad en común y se pueden programar de diferente manera, lo
cual depende de las estrategias y métodos en que cada programador desee trabajar.

❖ El primer programa se enfoca en la estructura de programación en C usando comandos fáciles de


utilizar de igual forma en el segundo programa en la cual tambien se hace uso de estructuras
simples y lo que es de relevancia en este tema es la asignación de PINES de trabajo para su
respectiva configuración, en lenguaje C se pueden hacer uso de variables asignando a cada PIN
una variable de tipo entero y en el desarrollo del programa únicamente ocuparemos las variables.

❖ En el tercer y cuarto programa se hace uso de lenguaje ensamblador por lo que tenemos que hacer
uso de registros DDR para asignar Pines como entradas o salidas, registros PORT para asignar
estados de ON-OFF, es una manera más compleja de programación ya que se quiere hacer uso de
pines de diferentes puertos ya que se debe de conocer de manera exacta en donde están ubicados
en la tarjeta arduino para realizar su respectiva asignación en el programa y hace uso de más líneas
de programación .

❖ Si se busca un mismo fin en el programa, de la manera en que el programador desee trabajar deberá
obtener los mismos resultados.

Anexos:
Referencias bibliográficas:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-
328P_Datasheet.pdf
http://playground.arduino.cc/Code/BitMathhttps://lizarragablog.wordpress.com/2014/06/17/practica-10-
polarizacion-de-jfe

Fecha de Revisión y Aprobación: ……………………….


_____________________ ________________

Firma Director de Carrera Firma Docente

También podría gustarte