Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fecha:2018-05-14.
2. Objetivo:
3. Conocimientos previos:
4. Instrucciones:
5. Equipos y Materiales:
Equipos Materiales
Computadora
Software de Arduino. Guía de práctica
Osciloscopio. Arduino
Generador de Funciones.
Multímetro.
Mcu.
6. Resultado de Aprendizaje:
1
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
7. Fundamento Teórico:
El microcontrolador ATmega328p tiene registros, estos registros están relacionados con los puertos
de entrada/salida, cada puerto tiene un nombre específico y sus registros asociados, de hecho, el
Atmega tiene el puerto B, C y D, y cada puerto un diferente número de pines (Esta es una restricción
del paquete de 28 pines PDIP y no desde el microcontrolador, ya que un PDIP 40 pines, por
ejemplo, tiene 4 puertos con los 8 bits cada uno), el único puerto que tiene el total de sus 8 pines de
entradas/salidas es PORTD. Como usted ya sabe, cada pin puede tener múltiples funciones, como
la generación de PWM, o las capacidades de ADC, los pines 6 y 7 del PORTB son los pines de
entrada para el oscilador de cristal, y pin 6 del PORTC le corresponde al botón de reinicio. En esta
imagen se puede ver todas las funciones alternativas que cada pin puede tener en el chip en cuestión
que es el ATmega328P.
Hay un registro dedicado para cada puerto que define si cada pin es una entrada o una salida, que
es el registro de DDRX, donde x es la letra del puerto que se quiere configurar, en el caso de la
Arduino hay DDRB, DDRC y DDRD. Como toda variable lógica, cada bit en los registros DDRX
puede ser 1 ó 0, es que poner un bit específico de DDRX a 1 configura el pin como salida y ponerla
a 0 configura el pin como una entrada.
2
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
8. Procedimiento:
Este procedimiento se realizará para los cuatro programas detallados en la práctica, los cuales se
analizarán individualmente, y así poder especificar las particularidades de cada uno de ellos.
9. Actividades:
9.1. PROGRAMA 1
Abrir un nuevo proyecto Arduino y crear un código que active y desactive 5 leds cada
int LED1=3;
int LED2=4;
int LED3=5;
int LED4=6;
int LED5=7;
void setup(){
pinMode(LED1,OUTPUT);
3
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(LED5,OUTPUT);
void loop()
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
digitalWrite(LED5,HIGH);
delay(100);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
digitalWrite(LED5,LOW);
delay(100);
4
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
El presente programa 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.
9.2. PROGRAMA 2
Abrir un nuevo proyecto Arduino y crear un código que encienda un LED cada vez que
int val;
void setup(){
pinMode(LED,OUTPUT);
pinMode(BOTON,INPUT);
void loop(){
val=digitalRead(BOTON);
if (val==HIGH){
digitalWrite(LED,HIGH);
else { digitalWrite(LED,LOW);
5
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
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.
9.3. PROGRAMA 3
Abrir un nuevo proyecto Arduino y crear un código que active y desactive 5 leds cada 100ms,
optimizando el código a través del manejo de registros de E/S. DDRX, PINX y PORTX.
void setup()
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT); */
void loop(){
6
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
delay(100);
delay(100);
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.
9.4. PROGRAMA 4
Repetir los pasos anteriores para encender un LED mediante pulsadores, optimizando el código a
través del manejo de registros de E/S. DDRX, PINX y PORTX.
void setup()
DDRB = 0x01;
void loop()
7
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
PORTB = (1<<PB0);
else
PORTB = (0<<PB0);
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 esta encendido
enciende el led caso contrario apaga el LED estas instrucciones van inmersas en un ciclo de
repetición infinito.
Fig. 3 Montaje del esquema del programa 1 todos los LEDs apagados.
8
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
9
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
Fig. 7 montaje del 2 esquema conectados un led y un pulsador los dos en estado apagado.
10
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES
11. Conclusiones:
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 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.
12. Observaciones:
11
Dispositivos Embebidos-Práctica 2