Matriz 8x8

Dependencies:   MAX7219 mbed

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. /media/uploads/Paxtel/modulo-max7219-matriz-led-8x8.jpg /media/uploads/Paxtel/en.nucleo-f4.jpg

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);

} }

no such method: tip