Tabla de contenido:

Generador de caracteres personalizados (matriz Adafruit HT16k33): 3 pasos
Generador de caracteres personalizados (matriz Adafruit HT16k33): 3 pasos

Video: Generador de caracteres personalizados (matriz Adafruit HT16k33): 3 pasos

Video: Generador de caracteres personalizados (matriz Adafruit HT16k33): 3 pasos
Video: Lo que puedes hacer con el display LCD 16x2 Caracteres Personalizados con Excel bit x bit 2024, Mes de julio
Anonim
Generador de caracteres personalizados (Adafruit HT16k33 Matrix)
Generador de caracteres personalizados (Adafruit HT16k33 Matrix)

Imprimir caracteres especiales en pantallas LCD y matrices de LED es muy divertido. El procedimiento para imprimir caracteres especiales o caracteres personalizados es generar una matriz con valores binarios para cada fila y columna. Puede ser complicado encontrar el código correcto para cualquier carácter personalizado, por lo tanto, este proyecto automatizará y generará código para una matriz led de 8x8 y también imprimirá el carácter personalizado en Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, una matriz de LED bicolor 8x8 de 1.2 '' se comunica con Arduino a través de un protocolo de comunicación I2C

Según Adafruit, "esta versión de la mochila LED está diseñada para matrices de 1.2" 8x8. Miden solo 1.2 "x1.2", por lo que es una pena usar una gran variedad de chips para controlarlo. Esta mochila resuelve la molestia de usar 16 pines o un montón de chips al tener un controlador de matriz de corriente constante I2C colocado ordenadamente en la parte posterior de la PCB. El chip controlador se encarga de todo, dibujando los 64 LED en segundo plano. Todo lo que tiene que hacer es escribir datos en él usando la interfaz I2C de 2 pines. Hay dos pines de selección de dirección para que pueda seleccionar una de las 8 direcciones para controlar hasta 8 de ellas en un solo bus I2C de 2 pines (así como cualquier otro chip o sensor I2C que desee). El chip del controlador puede "atenuar" toda la pantalla desde un brillo de 1/16 hasta un brillo total en pasos de 1/16. No puede atenuar los LED individuales, solo toda la pantalla a la vez ".

En este instructivo, te explicaré cómo obtener el código para cualquier personaje personalizado en tiempo real e imprimir ese personaje en Led Matrix.

Paso 1: componentes

Este instructable es un proyecto básico en Adafruit HT16k33 Matrix. Necesitas:

  1. Matriz Led Bicolor Adafruit HT16k33 1.2 '' x 1.2 '' 8x8.
  2. Arduino (se prefiere cualquier variante excepto Uno).
  3. Tablero de circuitos
  4. Fuente de alimentación

Paso 2: esquema

Esquemático
Esquemático
Esquemático
Esquemático

El cableado de la matriz de Led Adafruit HT16k33 es muy fácil ya que necesitamos conectar el reloj y el pin de datos como solemos hacer para los dispositivos I2C. Las conexiones serán como:

  1. SCL (pin de reloj de Matrix) conectado a A5 (pin de reloj de Arduino Uno. Consulte la hoja de datos para otras variantes de Arduino)
  2. SDA (Pin de datos de Matrix) conectado a A4. (Consulte la hoja de datos para otras variantes de Arduino)
  3. VCC conectado a 5V.
  4. GND conectado a 0V.

También puede consultar el esquema mostrado en la figura.

Paso 3: Código

Código
Código
Código
Código

Código Arduino

En primer lugar, incluiremos todas las bibliotecas necesarias.

  1. Wire.h: - Para comunicación I2C
  2. Adafruit_LedMochila
  3. Adafruit_GFX

Todas estas bibliotecas están disponibles en Arduino IDE. Solo tienes que instalarlos desde Library Manager. Sketch >> Incluir biblioteca >> Administrar bibliotecas

Función de configuración ()

Establecer una matriz de 8 bits enteros sin signo en valores binarios strore8 para 8 filas, de 8 bits cada una (8 columnas). Configure la dirección para la comunicación I2C.

Función de bucle ()

Como necesitamos imprimir el carácter, necesitamos el código del carácter en tiempo real. El método más conveniente es enviar el código en serie y Arduino leerá los datos en serie e imprimirá el carácter en consecuencia. Enviar una matriz en serie puede ser un trabajo ajetreado, por lo que podemos enviar una cadena con los 8 códigos (8 bits cada uno) separados por comas.

Lectura de cadena serial:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (datos); }

Después de leer el texto, necesitamos decodificar esta cadena y recuperar los valores binarios. Como sabemos, el formato de la cadena de entrada siempre será el mismo. Podemos codificarlo para encontrar subcadenas y convertir las cadenas a sus valores decimales equivalentes. Luego pasaremos la matriz decimal generada (uint8_t) para imprimir el carácter en la matriz.

Conversión de una cadena de 8 bits a decimal:

int val (String str) {int v = 0; para (int i = 0; i <8; i ++) {if (str == '1') {v = v + power (2, (7-i)); }} return v; }

Para evaluar el equivalente decimal usando la función de potencia (pow ()), debe tratar con valores de tipo doble y, por lo tanto, podemos escribir nuestra propia función de potencia como:

int potencia (int base, int exponente) {int c = 1; para (int i = 0; i {c = c * base;} return c;}

Ahora, por fin, escribiremos el código para imprimir el carácter utilizando la matriz generada de 8 valores decimales (uno para cada fila).

vacío print_emoji (uint8_t emoji , Color de cadena) {matrix.clear (); if (color == "rojo") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); retraso (500); }

Comprenderá fácilmente este código ya que primero limpiamos la matriz y luego mostramos el carácter usando la matriz de emoji usando la función matrix.drawBitmap (). No olvide escribir "matrix.writeDisplay ()" después de todo el formateo, ya que esta función solo mostrará todos los formateados realizados hasta ahora en matrix.

Ahora puede enviar la cadena con todos los valores del código y Arduino imprimirá el carácter en la matriz. Puede descargar el código Arduino desde abajo. Para fines experimentales, puede escribir

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

esta cadena en Serial Monitor y puede ver el carácter en la matriz.

Ahora, necesitamos enviar los datos en serie automáticamente desde un software cuando presionamos el botón "Imprimir". Para automatizar esto, haremos una matriz de demostración de 8x8 y proporcionaremos al usuario la posibilidad de elegir qué celdas deben ser coloreadas y luego el software generará automáticamente el código y enviará los datos en serie a Arduino en formato de cadena. Elegí Processing para el resto de mi trabajo. En el procesamiento, podemos hacer una matriz usando 64 botones (rectángulos con función presionada) y podemos asignar un valor y color particular al inicio (sea el color blanco con valor 0). Ahora, cada vez que se presione el botón, convertiremos el color del botón a negro y estableceremos el valor en 1. Si el usuario presiona el mismo botón nuevamente, su valor cambiará nuevamente a 0 y el color volverá a ser blanco. Esto ayudará al usuario a cambiar el código una y otra vez fácilmente y podrá realizar modificaciones fácilmente sin borrar toda la matriz nuevamente. Al hacer clic en el botón "Imprimir", crearemos una cadena similar a la que se muestra arriba para la demostración. Luego, la cadena se enviará al puerto serie en particular.

Puede descargar el código de procesamiento desde abajo. Este es mi primer código en proceso. Las sugerencias para la forma mejorada de codificación son muy apreciadas.

Puede ver cómo se ve la GUI y cómo se crea el personaje usando el sistema. Apenas tomará unos segundos crear el mismo carácter en la matriz.

Puede descargar el código y las imágenes de este proyecto desde mi Repositorio de GitHub.

Recomendado: