Lab 03 Programacion
Lab 03 Programacion
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
1 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
EXPERIENCIA N°: 03
TÍTULO DE LA EXPERIENCIA:
LABORATORIO N° 03
Comunicación SPI: Uso de matrices de LEDs
I. OBJETIVOS:
Comunicación SPI
El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola en 1980. Sus ventajas respecto a
otros sistemas han hecho que se convierta en un standard de facto en el mundo de la electrónica y
automatización.
El bus SPI tiene una arquitectura de tipo maestro-esclavo. El dispositivo maestro (master) puede iniciar la
comunicación con uno o varios dispositivos esclavos (slave), y enviar o recibir datos de ellos. Los
dispositivos esclavos no pueden iniciar la comunicación, ni intercambiar datos entre ellos directamente.
En el bus SPI la comunicación de datos entre maestros y esclavo se realiza en dos líneas independientes,
una del maestro a los esclavos, y otra de los esclavos al maestro. Por tanto, la comunicación es Full
Duplex, es decir, el maestro puede enviar y recibir datos simultáneamente.
Otra característica de SPI es que es un bus síncrono. El dispositivo maestro proporciona una señal de
reloj, que mantiene a todos los dispositivos sincronizados. Esto reduce la complejidad del sistema frente a
los sistemas asíncronos.
Por defecto el maestro mantiene en estado HIGH todas las líneas SS. Cuando el maestro quiere
establecer comunicación con esclavo pone a LOW la línea SS correspondiente, lo que indica al esclavo
que debe iniciar la comunicación.
En cada pulso de la señal de reloj, normalmente en el flanco de subida, el dispositivo maestro envía un bit
del esclavo y a la vez que recibe un bit del esclavo sel eccionado.
La trama (los datos enviados) no sigue ninguna regla, es decir, podemos enviar cualquier secuencia
arbitraria de bits. Esto hace que los dispositivos conectados necesiten tener pre-acordado la longitud y
significado de los que van a enviar y recibir.
La electrónica requerida para implementar el bus SPI es sencilla y barata, incluso un único registro de
desplazamiento puede ser suficiente. Además, como la señal de reloj es proporcionada por el maestro, los
esclavos ni siquiera necesitan disponer de un reloj propio.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
4 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
Matriz de LEDs
Una pantalla de matriz de puntos de 8×8 suele tener 16 pines, 8 para cada fila y 8 para cada columna.
Todas las filas y columnas están conectadas entre sí para reducir el número de pines. Si este no fuera el
caso, una pantalla de matriz de puntos de 8×8 requeriría 65 pines, uno para cada LED y otro para un
ánodo común o un conector de cátodo común. Al conectar filas y columnas, solo se necesitan 16 pines
para controlar toda la matriz. Esta técnica de controlar un gran número de LEDs con menos pines se
conoce como Multiplexación.
En esta técnica, cada columna se activa durante un tiempo muy corto y, al mismo tiempo, los LED de esa
columna se encienden dirigiéndose a la fila correspondiente. Como resultado, no se encienden más de
ocho LED al mismo tiempo. Las columnas se cambian tan rápido (cientos o miles de veces por segundo)
que el ojo humano percibe que la pantalla está completamente iluminada.
CONTROLADOR MAX7219
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
5 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
El controlador MAX7219, se encarga de todo el trabajo de control y actualización de los LEDs que
componen la matriz. Solo se tiene que enviar los comandos a través de la interfaz SPI de 4 pines.
Se uede controlar completamente 64 LED individuales mientras mantiene su brillo constante. Una vez que
el microcontrolador ha actualizado la pantalla, el MAX7219 se encarga del trabajo de actualizar la pantalla
a 800 Hz. Esto libera al microcontrolador para hacer otras cosas importantes.
El MAX7219 tiene un modo de ahorro de energía en el que la pantalla se puede apagar para ahorrar
energía. También apaga los LED durante el arranque, lo que evita pantallas extravagantes durante los
primeros segundos de funcionamiento.
El MAX7219 se comunica a través de la interfaz SPI, por lo que solo necesita 3 pines de datos para
conectarse a un microcontrolador. Además, podemos conectar en cadena varios módulos para obtener
una pantalla más grande utilizando los mismos 3 cables.
PINOUT Entrada:
• VCC está conectado a 5V. Debido a que la pantalla consume mucha corriente (hasta 1 A con el
brillo máximo), es mejor usar una fuente de alimentación externa en lugar de la fuente de
alimentación de 5 V del Arduino. Si desea utilizar la fuente de alimentación de 5V del Arduino,
mantenga el brillo por debajo del 25% para evitar el sobrecalentamiento del regulador de voltaje.
• GND es el pin de tierra común.
• DIN es el pin de datos. Conéctelo a cualquier pin digital del microcontrolador.
• CS/LOAD es Chip Select (a veces etiquetado como LOAD). Conéctelo a cualquier pin digital del
microcontrolador.
• CLK son las siglas de Clock pin. Conéctelo a cualquier pin digital del microcontrolador.
PINOUT Salida:
3.2. Complete el ATS (Anexo 1) y cumpla las condiciones obligatorias para el uso del ambiente
V. PROCEDIMIENTO:
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
7 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
2. CÓDIGO ARDUINO
Librerías para Arduino
https://github.com/MajicDesigns/MD_MAX72XX
https://github.com/MajicDesigns/MD_Parola
2.1 Text Display
// Including the required Arduino libraries
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW
// Defining size, and output pins
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
8 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
#define MAX_DEVICES 4
#define CS_PIN 3
// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup() {
// Intialize the object
myDisplay.begin();
// Set the intensity (brightness) of the display (0-15)
myDisplay.setIntensity(0);
// Clear the display
myDisplay.displayClear();
}
void loop() {
myDisplay.setTextAlignment(PA_LEFT);
myDisplay.print("Left");
delay(2000);
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("Center");
delay(2000);
myDisplay.setTextAlignment(PA_RIGHT);
myDisplay.print("Right");
delay(2000);
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.setInvert(true);
myDisplay.print("Invert");
delay(2000);
myDisplay.setInvert(false);
myDisplay.print(1234);
delay(2000);
}
// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup() {
// Intialize the object
myDisplay.begin();
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
9 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
El primer paso es incluir todas las librerías de Arduino necesarias. Como se indicó anteriormente, la biblioteca
MD_MAX72XX implementa las funciones específicas del hardware de la matriz LED, mientras que la biblioteca
MD_Parola implementa el efecto de texto. También debe incluir la biblioteca SPI, que se utiliza para comunicarse con
la pantalla a través de SPI.
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
A continuación, debemos especificar qué hardware se está utilizando. Estamos usando 4 circuitos integrados
MAX7219, por lo que se establece en 4. Por último, se define el pin al que está conectado el pin CS de la pantalla.
HARDWARE_TYPEFC16_HWMAX_DEVICES
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 3
A continuación, la función se utiliza para crear una nueva instancia de la clase MD_Parola. El primer parámetro es el
tipo de hardware, el segundo es el pin CS y el tercero es el número de circuitos integrados MAX7219 que se
utilizan.MD_Parola()
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
En la sección de configuración del código, primero usamos la función para inicializar el objeto. El brillo de la pantalla
se puede ajustar mediante la función, que acepta valores que van desde 0 (brillo más bajo) hasta 15 (brillo máximo).
La pantalla se borra con la función.begin()setIntensity()displayClear()
void setup() {
myDisplay.begin();
myDisplay.setIntensity(15);
myDisplay.displayClear();
}
Por último, se hace un efecto de scrool que muestra un mensaje en las pantallas
myDisplay.displayScroll("Hello", PA_CENTER, PA_SCROLL_LEFT, 100);
Como se puede ver, esta función toma cuatro argumentos: displayScroll(pText, align, textEffect, speed)
Solo se utilizan dos funciones para desplazar el texto en la sección de bucle. Primero, en una declaración, usamos la
función. Esta función desplaza el texto y devuelve true cuando termina. Cuando finaliza el desplazamiento, usamos la
función para restablecer la pantalla, lo que resulta en un desplazamiento continuo.
void loop() {
if (myDisplay.displayAnimate()) {
myDisplay.displayReset();
}
}
3. Simulación Proteus
Realizar la simulación en Proteus (utilizar un Arduino Uno, MATRIX-8X8-RED, MAX7219). Guiarse del siguiente
circuito esquemático para formar las matrices.
4. Simulación Wokwi
Realizar la simulación en Wokwi (utilizar un Arduino Uno, MATRIX-8X8-RED, MAX7219).
VI. DESARROLLO:
5.1 MONTAJE DEL CIRCUITO
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
11 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
5.2 CÓDIGO
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
12 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
CODIGO 2
(Pegar aquí una captura de pantalla en plena simulación de PROTEUS, grabar un video)
(Pegar aquí una captura de pantalla en plena simulación de Wokwi, grabar un video)
LINK DRIVE
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
15 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
-Dar sus observaciones y conclusiones en forma clara y empleando el menor número de palabras.
Observaciones: (mínimo 4)
Calidad de la simulación en Proteus: Durante la simulación en Proteus, la representación gráfica del desplazamiento de palabras
en la matriz 7219 es clara, pero puede no ser completamente precisa respecto a la velocidad o fluidez del desplazamiento en el
hardware real.
Conectividad en el armado físico: En el armado físico, las conexiones entre la matriz 7219 y el microcontrolador (como Arduino o
similar) pueden ser sensibles a errores de cableado. Una mala conexión puede resultar en que la matriz no funcione correctamente
o los caracteres se muestren de manera incompleta.
Diferencias de rendimiento entre simulación y físico: En la simulación con Walkie, las palabras pueden parecer más estables, pero
en el hardware físico, la velocidad de refresco y brillo de los LEDs puede variar dependiendo de la calidad del ensamblaje y la fuente
de alimentación.
Estabilidad del desplazamiento: En el armado físico, el desplazamiento de palabras puede verse afectado por la calidad del código
y del hardware. Pequeñas fallas en la programación o problemas de alimentación pueden causar parpadeos en los LEDs o que el
texto no se desplace de manera fluida.
Conclusiones: (mínimo 4)
Diferencias entre simulación y realidad: Las simulaciones en Proteus y Walkie son útiles para verificar la lógica básica del código y
las conexiones, pero siempre es recomendable hacer pruebas físicas porque pueden existir diferencias en el comportamiento real
del sistema.
Precisión en el cableado y la alimentación: El éxito del proyecto físico depende mucho de un buen cableado y de asegurar una
fuente de alimentación adecuada para la matriz 7219, ya que cualquier fluctuación puede afectar el funcionamiento de la matriz.
Optimización del código: Para obtener un desplazamiento fluido y evitar parpadeos en el hardware físico, es importante optimizar el
código, ajustando los tiempos de refresco y las instrucciones de control de la matriz.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 18/12/2023
LABORATORIO DE PROGRAMACIÓN PARA
Página
ELECTRÓNICA 2
16 / 17
EXPERIENCIA 3: Comunicación SPI: Uso
de matrices de LEDs
Importancia del ensayo físico: Aunque las simulaciones son valiosas, el comportamiento del sistema puede variar en el mundo real
debido a limitaciones físicas, por lo que es crucial realizar pruebas con el hardware final para asegurarse de que el proyecto funcione
correctamente en todas las condiciones.
VIII. BIBLIOGRAFIA:
Artero, Ó. T. (2013). ARDUINO. Curso práctico de formación. RC libros.
Scott Fitzgerald, Michael Shiloh. (2012). ARDUINO PROJECTS BOOK. Torino.
Víctor Rossano. (2013). PROTEUS VSM SIMULACIÓN DE CIRCUITOS ELECTRÓNICOS. USERS.
Rubrica:
Desarrollo de experiencias
Fundamento teórico
Observaciones
Conclusiones
Porcentaje %
Puntualidad
Link Drive
Total
5.1 5.2 5.3 5.4 6.1 6.2 6.3
REFERENCIA
https://arduinokitproject.com/max7219-dot-matrix-arduino-tutorial/
3. 4.
Elementos de protección (Marque con aspa) Características de elementos de protección, equipos y herramientas
1. ____________________________________________________________
2. ____________________________________________________________
USO OBLIGATORIO DEL USO OBLIGATORIO DE BOTAS USO OBLIGATORIO DE USO OBLIGATORIO DE USO OBLIGATORIO DE USO OBLIGATORIO DE
CASCO DE SEGURIDAD AISLANTES GUANTES AISLANTES PROTECCIÓN OCULAR MASCARILLA PROTECTOR FACIAL
3. ____________________________________________________________
4. ____________________________________________________________
5. ____________________________________________________________
USO OBLIGATORIO DE APAGAR DESCONECTAR CUANDO USO OBLIGATORIO DE OBLIGATORIO CONECTAR A USO OBLIGATORIO DE TRAJE OTRO
PROTECCIÓN AUDITIVA NO SE USE PROTECTOR AJUSTABLE TIERRA DE SEGURIDAD
1.
1._________________________
2.
___________________________
3.
2._________________________
4.
___________________________
5.
3. _________________________
6.