Tabla de contenido:
Video: Cómo conectar una matriz LED 8x8 impulsada por MAX7219 con el microcontrolador ATtiny85: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
El controlador MAX7219 fabricado por Maxim Integrated es un controlador de pantalla de cátodo común de entrada / salida en serie compacto que podría conectar microcontroladores a 64 LED individuales, pantallas LED numéricas de 7 segmentos de hasta 8 dígitos, pantallas de gráficos de barras, etc. -chip son un decodificador BCD de código B, circuitos de escaneo multiplex, controladores de segmentos y dígitos y una RAM estática de 8 × 8 que almacena cada dígito.
Los módulos MAX7219 son muy convenientes de usar con microcontroladores como ATtiny85 o, en nuestro caso, la placa Tinusaur.
Paso 1: el hardware
Los módulos MAX7219 suelen tener este aspecto. Tienen un bus de entrada en un lado y un bus de salida en el otro. Esto le permite conectar en cadena 2 o más módulos, es decir, uno tras otro, para crear configuraciones más complicadas.
Los módulos que estamos utilizando son capaces de conectarse en cadena mediante 5 pequeños puentes. Vea la imagen a continuación.
Paso 2: Pinout y señales
El módulo MAX7219 tiene 5 pines:
- VCC - potencia (+)
- GND - tierra (-)
- DIN - Entrada de datos
- CS - Selección de chip
- CLK - Reloj
Eso significa que necesitamos 3 pines en el lado del microcontrolador ATtiny85 para controlar el módulo. Esos serán:
- PB0 - conectado al CLK
- PB1 - conectado a la CS
- PB2 - conectado a la DIN
Esto es suficiente para conectarse al módulo MAX7219 y programarlo.
Paso 3: el protocolo
Comunicarse con el MAX7219 es relativamente fácil: utiliza un protocolo síncrono, lo que significa que por cada bit de datos que enviamos hay un ciclo de reloj que indica la presencia de ese bit de datos.
En otras palabras, enviamos 2 secuencias paralelas a bits, una para el reloj y otra para los datos. Esto es lo que hace el software.
Paso 4: el software
La forma en que funciona este módulo MAX7219 es la siguiente:
- Escribimos bytes en su registro interno.
- MAX7219 interpreta los datos.
- MAX7219 controla los LED en la matriz.
Eso también significa que no tenemos que recorrer la matriz de LED todo el tiempo para encenderlos; el controlador MAX7219 se encarga de eso. También podría gestionar la intensidad de los LED.
Entonces, para usar los módulos MAX7219 de una manera conveniente, necesitamos una biblioteca de funciones para cumplir ese propósito.
Primero, necesitamos algunas funciones básicas para escribir en los registros MAX7219.
- Escribiendo un byte en el MAX7219.
- Escribiendo una palabra (2 bytes) al MAX7219.
La función que escribe un byte en el controlador se ve así:
void max7219_byte (uint8_t datos) {para (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Establecer CLK en LOW if (data & 0x80) // Enmascarar el MSB de los datos PORTB | = (1 << MAX7219_DIN); // Establezca DIN en ALTO de lo contrario PORTB & = ~ (1 << MAX7219_DIN); // Establezca DIN en LOW PORTB | = (1 << MAX7219_CLK); // Establecer CLK en datos HIGH << = 1; // Desplazar a la izquierda}}
Ahora que podemos enviar bytes al MAX7219, podemos comenzar a enviar comandos. Esto se hace enviando 2 byes: el primero para la dirección del registro interno y el segundo para los datos que nos gustaría enviar.
Hay más de una docena de registros en el controlador MAX7219.
Enviar un comando, o una palabra, es básicamente enviar 2 bytes consecutivos. La función que implementa eso es muy simple.
void max7219_word (dirección uint8_t, datos uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Establecer CS en LOW max7219_byte (dirección); // Enviando la dirección max7219_byte (data); // Envío de datos PORTB | = (1 << MAX7219_CS); // Establecer CS en HIGH PORTB & = ~ (1 << MAX7219_CLK); // Establecer CLK en LOW}
Es importante notar aquí la línea donde traemos la señal CS de regreso a HIGH - esto marca el final de la secuencia - en este caso, el final del comando. Una técnica similar se utiliza cuando se controla más de una matriz conectada en cadena. El siguiente paso, antes de comenzar a encender y apagar los LED, es inicializar el controlador MAX7219. Esto se hace escribiendo ciertos valores en ciertos registros. Por conveniencia, mientras lo codificamos, podríamos poner la secuencia de inicialización en una matriz.
uint8_t initseq = {0x09, 0x00, // Registro de modo de decodificación, 00 = Sin decodificación 0x0a, 0x01, // Registro de intensidad, 0x00.. 0x0f 0x0b, 0x07, // Registro de límite de escaneo, 0x07 para mostrar todas las líneas 0x0c, 0x01, // Registro de apagado, 0x01 = Operación normal 0x0f, 0x00, // Registro de prueba de pantalla, 0x00 = Operación normal};
Solo necesitamos enviar los 5 comandos anteriores en una secuencia como pares de dirección / datos. Siguiente paso: encender una fila de LED.
Esto es muy simple: solo escribimos un comando donde el primer byte es la dirección (de 0 a 7) y el segundo byte son los 8 bits que representan los 8 LED en la fila.
void max7219_row (dirección uint8_t, datos uint8_t) {if (dirección> = 1 && dirección <= 8) max7219_word (dirección, datos); }
Es importante tener en cuenta que esto funcionará solo para 1 matriz. Si conectamos más matrices en una cadena, todas mostrarán los mismos datos. La razón de esto es que después de enviar el comando, devolvemos la señal CS a ALTO, lo que hace que todos los controladores MAX7219 de la cadena se bloqueen y muestren el último comando.
Recomendado:
Cómo utilizar la matriz de puntos Max7219 8x8 con "skiiiD": 9 pasos
Cómo usar Max7219 8x8 Dot Matrix con "skiiiD": Esta es una instrucción en video de Max7219 8x8 Dot Matrix a través de " skiiiD " Antes de comenzar, a continuación se muestra un tutorial básico sobre cómo usar skiiiDhttps: //www.instructables.com/id / Primeros pasos-W
Cómo construir una matriz de LED GRANDE de 8x8 (MAX7219 LED de 10 mm): 9 pasos (con imágenes)
Cómo construir una matriz de LED GRANDE de 8x8 (MAX7219 LED de 10 mm): ¿Ha trabajado con una matriz de LED de 8x8 ya preparada como pantallas? Vienen en varios tamaños y es bastante interesante trabajar con ellos. Un tamaño grande fácilmente disponible es de alrededor de 60 mm x 60 mm. Sin embargo, si está buscando una matriz de LED prefabricada mucho más grande
Cola oscilante impulsada por alambre suave (curso TfCD, TU Delft): 5 pasos (con imágenes)
Cola oscilante impulsada por cables blandos (curso TfCD, TU Delft): se ejecutó una exploración tecnológica para determinar la posibilidad de activar un robot pez con un cuerpo activo impulsado por cables y una cola flexible. Usamos un material que es a la vez resistente para servir como columna vertebral y flexible, creando un doblez uniforme
Cámara impulsada por voz con Raspberry Pi: 6 pasos
Cámara impulsada por voz con Raspberry Pi: desarrolle una cámara que pueda ejecutarse con comandos de voz, esto está diseñado principalmente para personas de todo tipo, especialmente para las personas que buscan divertirse en la fotografía
¡Construye una cabeza de robot parlante impulsada por Arduino !: 26 pasos (con imágenes)
¡Construye una cabeza de robot parlante impulsada por Arduino !: Esta cabeza de robot se construyó originalmente como un proyecto de fin de año para mi clase de computación física, pero durante el verano ha " aprendido " como hablar. El cabezal está alimentado por dos Freeduinos, 3 chips TLC5940NT y una Adafruit Industries