Matriz 8x8
MATRIZ 8x8 CON INTEGRADO MAX7219 UTILIZANDO SPI EN TARJETA STM32 NUCLEO-F446
Bienvenidos a nuestra wiki, esperamos que nuestros códigos sean de gran ayuda.
MATERIALES
- Matriz 8x8 con max7219.
- NUCLEO F446RE.
1. Laboratorio primer paso :
funcionamiento matriz 7x5 ... demostramos su funcionamiento con las letras: A, B, C , X, Y, Z.
Import programmatriz7X5
realizamos la primera parte del laboratorio realizando un programa en el cual se pueda ingresar fácilmente cualquier letra o símbolo en una matriz 7x5
2. Laboratorio segundo paso:
Realizamos un programa para la visualización de la matriz 8x8 utilizando la librería "max7219.h"
CONEXIONES: *Declaración: Max7219 pantalla(PB_15, PB_14, PB_13, PB_12);
PIN / MAX7219 / NOTA
PB_15 / DIN / MOSI
PB_14 / NC / MISO
PB_13 / CLK / SCLK
PB_12 / CS / SSEL
U5V / VCC / 5 V
GND / GND / TIERRA
Explicación del programa
el programa consta de dos partes
1. Main.h : es la cabecera del programa. aquí encontramos los códigos:
Modificables: lo que encontramos dentro de las {} podemos modificarlo colocando otros números para cambiar las figuras a mostrar, el primer número hexadecimal escribirá la primera fila de abajo hacia arriba, el segundo la segunda fila de abajo hacia arriba... etc.
unsigned char led1[]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55}; secuencia uno
unsigned char led2[]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; secuencia dos
unsigned char led3[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; secuencia tres
- los void los declaramos aquí para que puedan usarse en cualquier lado del programa (declaración global)
void Print_pantalla_tabla(unsigned char *pValor); declaración del puntero
void print_punto(); declaración secuencia de puntos
2. Main.cpp aquí llamaremos en el inicio a la cabecera y a la librería ( #include "main.h", #include "max7219.h" ) y declararemos los pines (Max7219 pantalla(PB_15, PB_14, PB_13, PB_12))
- en ... int main() ... aquí va lo que hace el programa
- primero configuramos el max7219
max7219_configuration_t cfg = {
.device_number = 1,
.decode_mode = 0,
.intensity = Max7219::MAX7219_INTENSITY_5,
.scan_limit = Max7219::MAX7219_SCAN_8 };
- testeamos la matriz, esto encendera todos los leds:
pantalla.init_device(cfg);
pantalla.enable_device(1);
pantalla.set_display_test();
wait(1);
pantalla.clear_display_test();
- hacemos un ciclo para que se muestren las distintas secuencias que dejamos en la cabecera
while(1){
Print_pantalla_tabla(led1); secuencia uno
wait(1); tiempo de espera
Print_pantalla_tabla(led)2; secuencia dos
wait(1);
Print_pantalla_tabla(led3); secuencia tres
wait(1);
print_punto(); secuencia de puntos (esta llamará una función, la cual se encuentra abajo, pero también se encuentra declarada en la cabecera) }
}
VOIDS (FUNCIONES)
- funciòn de puntero:
void Print_pantalla_tabla(unsigned char *pValor)
{
int i;
for (i =0;i<8;i++)
pantalla.write_digit(1,i+1,pValor[i]); }
- función secuencia de puntos
void print_punto() {
unsigned char personal[8]= {0x0,0x0,0,0,0,0,0,0};
unsigned char filas[8]= {1,3,7,0x0f,0x1f,0x3f,0x7f,0xff};
int i,j;
for (i=0;i<8;i++)
personal[i]= 0;
for (j=0;j<8;j++)
for (i=0;i<8;i++){
personal[i]= filas[j];
Print_pantalla_tabla(personal);
wait(0.2);
} }