Programando Embedded System
Microcontroller con Metologia interactiva.
GILBERTO PASCUAL, 2021
Lenguaje C y el Microcontrolador AVR
Control de Led RGB con
el Microcontrolador Atmega16 [Proyecto #02]
Passive Avr Programmer
Figura1
Figura2
“Ahora usted puede aprender a
Programar Microcontroladores de forma muy fácil”.
1.
Descripción
del Proyecto #02:
Dentro de este pequeño proyecto, podremos controlar un Led RGB conectado al puerto D (Pin0, Pin1 y Pin2) del Microcontrolador Atmega16, usando lenguaje C para la programación de control.
Dentro de este proyecto se aprenderá a configurar y habilitar solo los pines a usar como salida del Microcontrolador Atmega16, a diferencia del proyecto anterior donde se habilitaba todo el puerto D como salida.
Adicionalmente se aprenderá a usar sintaxis de lenguaje C, uso de hojas de configuraciones, añadir librerías y realizar una programación avanzada y esquematizada para facilitar la programación, modificación y entender la programación avanzada de proyectos más complejos en lenguaje C, también se usara funciones de retardo de tiempo o delay y poder enviar un “0” o “1” lógico de manera independiente a cada pin del Microcontrolador Atmega16.
Finalmente se realizara la simulación e
implementación del circuito electrónico, para validar el funcionamiento de
nuestro programa de control elaborado en Lenguaje C para programar el control del
Led RGB mediante el microcontrolador Atmega16.
2. Diagrama de Flujo del Proyecto #02:
En la Figura4, se muestra el diagrama de flujo que seguirá nuestro programa de control en lenguaje C para el control del Led RGB en el Microcontrolador Atmega16, dentro del diagrama de flujo se intentó ser lo más descriptivo posible para entender el funcionamiento de programa desarrollado.
Dentro del diagrama de flujo de la Figura N°4, adicionalmente se puede
apreciar el uso de hojas “.h” que han sido creados en nuestro aplicativo de
programación, los cuales son llamados dentro de nuestro programa principal
(“main”). Aunque el programa es fácil de crear sin el uso de las hojas
adicionales, para la programación más compleja y esquematizada, es necesario el
uso de este tipo de programación.
Figura 3. Diagrama electrónico interno del Led RGB.
En la Figura5, se muestra el diagrama electrónico del nuestro proyecto de control de 02 Leds RGB mediante el Microcontrolador Atmega16, para este circuito se ha simulado un Led RGB de cátodo Común. El diseño de este circuito se ha realizado para ser implementado en un ambiente de pruebas, teniendo presente que el Microcontrolador alimentara a todos los pines de los 02 Leds RGB, pudiendo generar consumo excesivo de corriente por parte del Microcontrolador Atmega16.
Para el diseño a escala o para un ambiente
de producción, se debe hacer uso de otros elementos electrónicos que alimenten
los pines del Led RGB, y que el Microcontrolador Atmega16 solo sea el
dispositivo de control y no de alimentación de los pines del Led RGB.
Figura 5. Circuito Electrónico del control de Led RGB cátodo común con el Microcontrolador Atmega16.
4. Código en Lenguaje C del Proyecto #02:
A continuación, en la Figura6, se muestra el código escrito en Lenguaje C para controlar 02 Leds RGB conectados en el Puerto D y Puerto C del Microcontrolador Atmega16.
Figura 6. Programa principal en lenguaje C, para
control de 02 Leds RGB con el Microcontrolador Atmega16. (main.c)
La hoja “rgb.h”, dentro de esta hoja
declaramos todas las hojas adicionales y librerías que se usaran dentro de
nuestro programa principal.
Figura 7. Hoja rgb.h donde se declaran todas la librerías a usar en
programa principal.
La hoja “config.h”; dentro de esta hoja nosotros declararemos todas configuraciones, variables y opciones que puede tener nuestro programa principal, en nuestro caso solo hemos configurado el tiempo, que estarán prendidos y apagados los colores de los Leds RGB y habilitado para usar la hoja de configuración del Atmega16
Figura 8. Hoja config.h donde se declaran
variables y opciones de configuración.
La hoja “cpu_map.h”; dentro de esta hoja cargamos todas las hojas de configuración de todos los microcontroladores que podríamos usar, esa hoja de configuración para cada microcontrolador, nosotros los creamos y personalizamos para cada microcontrolador a usar.
Figura 9. Hoja cpu_map.h donde cargaremos todos
los microcontroladores y su hoja de configuración.
La hoja “cpu_map_atmega16.h”; en esta hoja
hemos declarado el renombrado de los pines a usar del microcontrolador, así
como algunas variables predefinidas que se usaran dentro de nuestro programa
principal, mediante este método, el programar se realiza de manera fácil e
intuitiva, así como fuera programar en lenguaje C.
Figura 10. Hoja cpu_map_atmega16.h donde definimos
los pines, y nombramos los pines y creamos variables.
Aunque la programación de estas hojas adicionales es un poco complicada al inicio, después de realizarlo cualquier cambio, funciona a desarrollar o revisar algún error dentro de nuestro programa es más fácil que revisar solo un archivo que contenga cientos de líneas de código, que sería muy complicado encontrar algún error, adicionalmente es más fácil migrar un proyecto a otro microcontrolador, puesto que el nombre de los registros internos del microcontrolador cambia del Microcontrolador a usar y nos es una buena práctica declarar todo en el programa principal.
5.
Video
de la simulación e implementación del Proyecto #02:
El código fuente, circuito electrónico y paper del proyecto de control de Led RGB mediante el Microcontrolador Atmega16, los puede descargar desde el siguiente Link de Google Drive.
https://drive.google.com/drive/folders/1rQZ4zpbzZPj6hGm8SXQHjD8dwu5P8-0g?usp=sharing
“Si te gusto el artículo, compártelo,
recuerda que hay otros que desean aprender y tú puedes ayudarlos también comentando
y compartiéndolo en tus
redes”.
¡Gracias!
Atte. Gilberto Pascual