0% encontró este documento útil (0 votos)
20 vistas7 páginas

Carro Fantastico

El informe detalla la simulación de un circuito básico con Arduino UNO para encender y apagar un LED utilizando programación de bajo nivel a través de los registros DDRB y PORTB. Se logró activar y desactivar el LED en intervalos de un segundo, validando el funcionamiento del código y la configuración de registros. La práctica permitió adquirir experiencia en el manejo de puertos GPIO del microcontrolador ATmega328P y el uso de temporización en programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas7 páginas

Carro Fantastico

El informe detalla la simulación de un circuito básico con Arduino UNO para encender y apagar un LED utilizando programación de bajo nivel a través de los registros DDRB y PORTB. Se logró activar y desactivar el LED en intervalos de un segundo, validando el funcionamiento del código y la configuración de registros. La práctica permitió adquirir experiencia en el manejo de puertos GPIO del microcontrolador ATmega328P y el uso de temporización en programación.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad Técnica de Manabí

Facultad de Ciencias Informáticas


Carrera de Telecomunicaciones

Informe de Laboratorio de Microcontroladores

Fecha: Portoviejo, 5 de junio de 2025

Datos de los Estudiantes:


VALERIA YIRIBEL VERA
LETTY STEFANIA FLORES NAYELI ANAHI LOPEZ
MANTUANO ZAMBRANO ZAMBRANO
lflores5622@[Link]
nlopez5246@[Link]
vvera4179@[Link]
Carrera de
Carrera de
Telecomunicaciones Carrera de
Telecomunicaciones
Telecomunicaciones

Introducción
En esta práctica, se lleva a cabo la simulación de un circuito básico utilizando

Arduino UNO en la plataforma Tinkercad, cuyo propósito es encender y apagar un

LED de manera intermitente. A diferencia de los métodos convencionales que

emplean las funciones digitalWrite() y pinMode(), en esta ocasión se recurre

directamente a los registros internos del microcontrolador (DDRB y PORTB), lo que

posibilita un control más preciso y eficiente a nivel de hardware.

Objetivo General:
● Realizar la activación y desactivación de un LED externo que está conectado

al pin digital 13 del Arduino UNO, empleando programación de bajo nivel a

través de los registros DDRB y PORTB.

Objetivos específicos:
● Activar y desactivar un LED en intervalos de un segundo en el pin B5 del

microcontrolador ATmega328P.
● Establecer el pin B5 del ATmega328P como salida y su correspondiente

control mediante los registros DDRB y PORTB.

● Desarrollar el código en C++ utilizando WINAVR, junto con las bibliotecas

estándar.

Detalle de la práctica:

El código establece que el led es el bit PB5, que se asocia al pin digital 13.

Posteriormente, en la función setup(), se configura este pin como salida utilizando el

registro DDRB. En el bucle loop(), se activa el pin (cambiando su estado a alto con

PORTB |=) para encender el LED y luego se desactiva (cambiando su estado a bajo

con PORTB &=~) para apagarlo, con un intervalo de 1 segundo entre los estados.

Ejemplo de código en C++


1 #define led PB5

2
3 void setup()

4 {

//DDRB |= (1 << PB5);


5
DDRB |= (1 << led);
6
//DDRB = B00000000;
7
}
8
9
void loop()
10
{
11
//PORTB |= (1 << PB5);
12
//PORTB |= (1 << led);
13 PORTB = B00100000;
14 delay(1000);

15
16 //PORTB &= ~(1 << PB5);

17 PORTB &= ~(1 << led);

//PORTB = B00000000;
18
delay(1000);
19
}
20
21
22

Elementos utilizados:
● Fuente de poder mayor o igual a 5V (especificar cual utilizó, solo en
Tinkercad)
● Regulador de voltaje LM7805 (solo en Tinkercad)

● 1 Protoboard grande (solo en Tinkercad)

● 1 Microcontrolador ATmega328P (Arduino UNO en Tinkercad)

● 1 LED (Blanco)

● 1 Resistencia de 330Ω

● Cables de colores

Esquemático TINKERCAD:
CÓDIGO DE PROTEUS
1 // Laboratorio # 1: Control de un led colocado en el Puerto B5

2 // Parpadeando cada 1 segundo

3
4 #include <avr/io.h>

#include <util/delay.h>
5
6
int main() {
7
DDRB = 0x20; // Configura el pin 5 del puerto B como salida (0b00100000)
8
9
while (1) {
10
PORTB = 0x20; // Enciende el led en pin 5 del puerto B
11
_delay_ms(1000);
12
PORTB = 0x00; // Apaga el led en pin 5 del puerto B
13 _delay_ms(1000);
14 }
15
16 return 0;

17 }

18
19
20

Ejemplo de Esquemático PROTEUS:

Desarrollo de la práctica:

Para el desarrollo de esta práctica, se utilizó la plataforma Tinkercad para


simular el funcionamiento de un microcontrolador ATmega328P a través
de la tarjeta Arduino UNO. El objetivo fue encender y apagar un LED
conectado al pin digital 13 (PB5) utilizando programación de bajo nivel,
accediendo directamente a los registros DDRB y PORTB.

1. Configuración inicial: Se definió el pin PB5 como salida en el


registro DDRB mediante la instrucción DDRB |= (1 << led);.

2. Encendido y apagado del LED: Se utilizó el registro PORTB para


establecer el nivel alto (PORTB = B00100000;) y posteriormente el
nivel bajo (PORTB &= ~(1 << led);), con un retardo de un segundo
entre cada cambio de estado, generado con la función
delay(1000);.

3. Simulación: Se construyó el circuito en Tinkercad incluyendo una


fuente de alimentación de 5V, un regulador LM7805, un protoboard,
un LED blanco, una resistencia de 330Ω y los respectivos cables de
conexión.

4. Pruebas y validación: Se verificó que el LED encenderá y apagará


en intervalos de un segundo, confirmando el correcto
funcionamiento del código y de la configuración de registros.

ENLACE DE PRÁCTICA
[Link]
1sseHSW79f6C0hBAm3hs0YsBKw15eUw9e?usp=sharing
Preguntas de Reflexión:

a. ¿Qué ocurre si se omite la línea DDRB |= (1 << DDB5);?

Si se omite esta línea, el pin PB5 del ATmega328P no se configurará como salida, lo
cual es necesario para controlar un dispositivo como un LED.
Por defecto, los pines del microcontrolador están configurados como entradas.
Entonces, aunque el programa intente encender o apagar el LED manipulando el
registro PORTB, el pin no cambiará de estado, ya que el microcontrolador no puede
"sacar" voltaje por un pin configurado como entrada..

b. ¿Cómo cambiarías el código para que parpadee 2 veces por segundo?

Parpadear 2 veces por segundo significa que cada ciclo de encendido y apagado debe durar 0.5 segundos (500
Para lograr esto, se debe cambiar el valor del retardo en la función _delay_ms()
de esta manera:

Conclusiones:

En este laboratorio se logró comprender y aplicar los conceptos


fundamentales del manejo de los puertos GPIO en el microcontrolador
ATmega328P, utilizando el pin PB5 para controlar el encendido y apagado
de un LED. Se utilizó programación en C++ con la herramienta WINAVR,
manipulando directamente los registros DDRB y PORTB, lo que permitió
adquirir experiencia con el acceso de bajo nivel al hardware.

Además, se reforzó el uso de temporización mediante la función


_delay_ms(), comprendiendo su utilidad para generar intervalos de
tiempo precisos entre cambios de estado. La simulación del circuito en
plataformas como Tinkercad facilitó la verificación visual del
comportamiento del sistema y permitió validar el correcto funcionamiento
del código.

También podría gustarte