Junta de proyecto ATtiny85 V-USB y una pantalla de matriz de LED rojo de 8 x 8 (5 / 10 paso)

Paso 5: El programa

Debemos reducir el número de definiciones de carácter desde el código de ejemplo para caber fácilmente en la memoria EEPROM. vamos a utilizar las definiciones de carácter primero 60 o así, "espacio" a "_". Esto nos dará las definiciones de 65 caracteres. Cada definición requiere columna count byte, un byte de conteo de fila y 5 bytes para los bits del carácter. Así que ahora tenemos (65 * 7) = 455 bytes para almacenar las definiciones de caracteres en la EEPROM. Esto encajará dentro del espacio total de memoria 512 de ATtiny85, tan lejos tan bueno.

 const unsigned char CH[] PROGMEM = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // ) 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // * 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // + 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // , 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // - 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // . 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // / 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // : 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ; 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // < 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // = 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // > 4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ? 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @ 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [ 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ] }; 

Veamos el sketch

 #include <MaxMatrix.h> #include <avr/pgmspace.h> 

Cargar las librerías necesarias. MaxMatrix a manipular los datos para mostrar en la matriz de led, y pgmspace a poner los datos en la memoria EEPROM.

 MaxMatrix m(DIN, CS, CLK, MAXS); 

Esto configura los pines de datos, carga y reloj de biblioteca. También indica si hay más de una matriz de datos de la línea y se "derraman" los datos a él.

 m.shiftLeft(false, true); printStringWithShift(string1, 100); 

Indican la dirección de desplazamiento y llamar a la rutina de la pantalla para desplazarse por la cadena de texto a través de nuestra matriz de led. El número 100 es la velocidad de desplazamiento del texto que se muestra. Intente cambiar el valor y ver qué pasa.

 void printCharWithShift(char c, int shift_speed) { if (c < 32) return; c -= 32; memcpy_P(buffer, CH + 7 * c, 7); m.writeSprite(MAXS * 8, 0, buffer); m.setColumn(MAXS * 8 + buffer[0], 0); for (int i = 0; i < buffer[0] + 1; i++) { delay(shift_speed); m.shiftLeft(false, false); } } 

La rutina de pantalla desplazable, llamado con el carácter array puntero c y la velocidad de desplazamiento de los personajes que aparecen.

 // Extract characters from Scrolling text<br>void printStringWithShift(char* s, int shift_speed) { while (*s != 0) { printCharWithShift(*s, shift_speed); s++; } } 

El corazón del bosquejo, esta rutina tira el carácter del texto que se mostrará hasta que encuentra al final del texto cadena, denotado por 0.

Ahora

  1. Descargue el bosquejo de ejemplo MatMatrixExample1.ino
  2. Abra el archivo en el IDE de Arduino
  3. Compilar y cargar el bosquejo para el microcontrolador ATtiny85.

NOTE1: estos ejemplos también trabajará con un Arduino Uno, nano etc.. Utilice las mismas asignaciones de pines o cambiar a su gusto. Se trata de experimentación.

Artículos Relacionados

Junta de proyecto ATtiny V-USB

Junta de proyecto ATtiny V-USB

CONCEPTOPaperduino Tiny es un pequeño gran proyecto. Sin embargo yo quería crear algo un poco más robusto, con un área de proyecto de creación de prototipos pequeños, utilizar un PCB personalizado de 60 x 40 mm de tamaño.Este es el resultado.Paso 1:
Hacer una pantalla de matriz con generador de números pseudo-Random

Hacer una pantalla de matriz con generador de números pseudo-Random

si te gusta la matriz y tiene algo de tiempo libre, usted podría hacer un programa sin fin, que muestra números al azar, tan rápido como la computadora puede ejecutar, muy similar a la matriz. Solo toma unos 5 minutos para preparar!Estuve teniendo un
Super Mario Bros en una pantalla de matriz de 8 x 8 LED RGB usando un microcontrolador pic

Super Mario Bros en una pantalla de matriz de 8 x 8 LED RGB usando un microcontrolador pic

este es el último video clip: (véase abajo para el video viejo) iré subiendo un instructivo de cómo usted puede hacer su propio sistema de juego de LEDBOY que te permitirá jugar a este juego. Tenga en cuenta que este juego es todavía un trabajo en pr
Una pantalla de matriz de puntos LED Simple cualquiera puede hacer en cualquier lugar del mundo!!!!!!

Una pantalla de matriz de puntos LED Simple cualquiera puede hacer en cualquier lugar del mundo!!!!!!

El display 16 x 128 dot matrix utiliza piezas solamente fácilmente disponibles y puede ser conducido en texto como en modo gráfico.En modo de texto, la pantalla utiliza el mapa de caracteres almacenado internamente (sólo en inglés) y se puede desplaz
Controlar una matriz de LED RGB con Android y IOIO

Controlar una matriz de LED RGB con Android y IOIO

Versión del producto de este proyecto en http://ledpixelart.com ***Un androide había controlado espejo interactivo. Ejecuta varias aplicaciones de Android, el espejo interactivo muestra imágenes, texto corriente, juegos simples y vídeo por streaming
Inicio Aviso: Arduino + nube mensajes en una pantalla grande

Inicio Aviso: Arduino + nube mensajes en una pantalla grande

En la era de los teléfonos móviles, usted esperaría que la gente sería responder a la llamada 24/7.O... no. Una vez mi esposa llega a casa, el teléfono permanece enterrado en su bolso de mano, o su batería está descargada. No tenemos una línea de tie
Convertir una pantalla de ordenador portátil roto en una mesa de luz portátil para dibujo

Convertir una pantalla de ordenador portátil roto en una mesa de luz portátil para dibujo

Un amigo me donó este viejo ordenador portátil, que tenía una pantalla LCD rota. El portátil era viejo pero funcionaba bien. No tenía ninguna intención de gastar dinero para que lo reparen, que simplemente no vale la pena el dinero. En su lugar sólo
Increible calendario binario y el reloj como fase de la luna en una matriz de LED

Increible calendario binario y el reloj como fase de la luna en una matriz de LED

Hola, todos!Este es mi proyecto con más características que mi reloj binario que se puede ver también en mi Instructables otros.El concepto principal es aplicar en una simple pantalla de matriz de LED muchas características incluyendo un completo cal
Cómo crear una pantalla de captura de ojo (tipo LED)

Cómo crear una pantalla de captura de ojo (tipo LED)

este no es tanto un instructable como un registro de cómo hice un proyecto escolar. Mientras que repetir exactamente lo que hice probablemente no le ayudará, este proyecto puede ser modificado para hacer casi cualquier pantalla más vistosa.Paso 1: Su
Cómo convertir un USB en una pulsera.

Cómo convertir un USB en una pulsera.

En este Instructable, I un m que va a enseñar todo cómo hacer una sencilla pulsera USB con materiales puedes encontrar en su propia casa!Lo que necesitarás:1 o 2 unidades USB (podría estropear un par de veces y fry la Junta.)1 cargador mini USBTubo d
Añadir una pantalla táctil de tu proyecto

Añadir una pantalla táctil de tu proyecto

añadir gráficos, visualización de la información en tiempo real y una interfaz de usuario dinámica a su proyecto de microcontrolador con una pantalla táctil!  En este instructable, te voy a mostrar cómo utilizar una pantalla táctil para:Imágenes de c
Cómo proteger tu usb con una contraseña

Cómo proteger tu usb con una contraseña

Cómo a contraseña proteger su disco duro y unidad flash USB sinsoftware. Este video le mostrará cómo bloquear el pendrive sin necesidad de ningún software. Cómo proteger unidades USB y otros dispositivos de almacenamiento portátil. Cómo a contraseña
Convertir una pantalla de portátil en una pantalla inteligente.

Convertir una pantalla de portátil en una pantalla inteligente.

Tuve varias computadoras portátiles rotos sentados, así que decidí que quiero hacer una pantalla inteligente de uno de ellos.ELEMENTOS NECESARIOS:1. pantalla de portátilTiré de mina desde una laptop vieja.2. 2 marcos de cuadros, más grandes que la pa
Multi-color LED lámpara utilizando una v.3 controlador de LED de canal 8

Multi-color LED lámpara utilizando una v.3 controlador de LED de canal 8

que quería experimentar con el uso de diferentes colores de LEDs, que no sea el estándar RGB, para crear efectos multicolores en una lámpara funcional.Esta lámpara utiliza cian, Magenta, amarillo, morado, Aqua-verde y azul 5mm LED junto con el superi