Índice:

Gerador de caracteres personalizados (matriz Adafruit HT16k33): 3 etapas
Gerador de caracteres personalizados (matriz Adafruit HT16k33): 3 etapas

Vídeo: Gerador de caracteres personalizados (matriz Adafruit HT16k33): 3 etapas

Vídeo: Gerador de caracteres personalizados (matriz Adafruit HT16k33): 3 etapas
Vídeo: Electronic Component Project 14: 4-digit LED Segment Display 2024, Julho
Anonim
Gerador de caracteres personalizados (matriz Adafruit HT16k33)
Gerador de caracteres personalizados (matriz Adafruit HT16k33)

Imprimir caracteres especiais em LCDs e matrizes de LED é uma grande diversão. O procedimento para imprimir caracteres especiais ou caracteres personalizados é gerar uma matriz com valores binários para cada linha e coluna. Pode ser difícil encontrar o código correto para qualquer caractere customizado, portanto, este projeto irá automatizar e gerar código para uma matriz led 8x8 e também imprimirá o caractere customizado no Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, uma matriz LED Bicolor de 1,2 '' 8x8 se comunica com o Arduino por meio de um protocolo de comunicação I2C

De acordo com Adafruit, “Esta versão da mochila LED foi projetada para as matrizes 8x8 de 1,2”. Eles medem apenas 1,2 "x 1,2", então é uma pena usar uma grande variedade de chips para controlá-los. Esta mochila resolve o incômodo de usar 16 pinos ou um monte de chips por ter um controlador de matriz de corrente constante I2C perfeitamente instalado na parte de trás do PCB. O chip controlador cuida de tudo, desenhando todos os 64 LEDs em segundo plano. Tudo o que você precisa fazer é gravar dados nele usando a interface I2C de 2 pinos. Existem dois pinos de seleção de endereço, então você pode selecionar um dos 8 endereços para controlar até 8 deles em um único barramento I2C de 2 pinos (bem como quaisquer outros chips ou sensores I2C de sua preferência). O chip do driver pode 'escurecer' a tela inteira de 1/16 de brilho até o brilho total em etapas de 1/16. Ele não pode diminuir LEDs individuais, apenas a tela inteira de uma vez."

Neste instrutível, explicarei como obter o código de qualquer caractere personalizado em tempo real e imprimir esse caractere no Led Matrix.

Etapa 1: Componentes

Este instrutível é um projeto básico em Adafruit HT16k33 Matrix. Você precisa:

  1. Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 Bicolor Led Matrix.
  2. Arduino (qualquer variante exceto Uno é preferível).
  3. Tábua de pão
  4. Fonte de energia

Etapa 2: Esquemático

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

A fiação da matriz de Led Adafruit HT16k33 é muito fácil, pois precisamos conectar o relógio e o pino de dados como normalmente fazemos para dispositivos I2C. As conexões serão como:

  1. SCL (pino do relógio da matriz) conectado ao A5 (pino do relógio do Arduino Uno. Consulte a folha de dados para outras variantes do Arduino)
  2. SDA (pino de dados da matriz) conectado a A4. (Consulte a folha de dados para outras variantes do Arduino)
  3. VCC conectado a 5V.
  4. GND conectado a 0V.

Você também pode consultar o esquema mostrado na figura.

Etapa 3: Código

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

Código Arduino

Em primeiro lugar, incluiremos todas as bibliotecas necessárias.

  1. Wire.h: - Para comunicação I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Todas essas bibliotecas estão disponíveis no próprio IDE do Arduino. Você só precisa instalá-los a partir do Library Manager. Esboço >> Incluir Biblioteca >> Gerenciar Bibliotecas

Função de configuração ()

Definir uma matriz de 8 bits inteira sem sinal para strore8 valores binários para 8 linhas, de 8 bits cada (8 colunas). Defina o endereço para comunicação I2C.

Função de loop ()

Como precisamos imprimir o personagem, precisamos do código do personagem em tempo real. O método mais conveniente é enviar o código serialmente e o Arduino lerá os dados seriais e imprimirá o caractere de acordo. Enviar um array em série pode ser um trabalho agitado, portanto, podemos enviar uma string com todos os 8 códigos (8 bits cada) separados por vírgulas.

Lendo string serial:

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

Depois de ler o texto, precisamos decodificar essa string e recuperar os valores binários. Como sabemos, o formato da string de entrada será sempre o mesmo. Podemos codificá-lo para encontrar substrings e convertê-los em seus valores decimais equivalentes. Em seguida, passaremos o array decimal gerado (uint8_t) para imprimir o caractere na matriz.

Convertendo String de 8 bits em decimal:

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

Para avaliar o equivalente decimal usando a função de potência (pow ()), você precisa lidar com valores de tipo duplo e, portanto, podemos escrever nossa própria função de potência como:

potência int (base int, expoente int) {int c = 1; para (int i = 0; i {c = c * base;} retornar c;}

Agora, por fim, vamos escrever o código para imprimir o caractere usando o array gerado de 8 valores decimais (um para cada linha).

void print_emoji (uint8_t emoji , cor da string) {matrix.clear (); if (color == "red") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); atraso (500); }

Você entenderá facilmente este código, pois estamos limpando a matriz primeiro e, em seguida, exibindo o caractere usando a matriz emoji usando a função matrix.drawBitmap (). Não se esqueça de escrever "matrix.writeDisplay ()" depois de toda a formatação, pois esta função exibirá apenas todas as formatações feitas até agora na matriz.

Agora você pode enviar a string com todos os valores de código e o Arduino imprimirá o caractere na matriz. Você pode baixar o código do Arduino abaixo. Para fins experimentais, você pode escrever

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

esta string no Serial Monitor e pode ver o caractere na matriz.

Agora, precisamos enviar os dados seriais automaticamente de um software quando pressionamos o botão "Imprimir". Para automatizar isso, faremos uma matriz de demonstração 8x8 e forneceremos uma facilidade para o usuário escolher quais células devem ser coloridas e então o software irá gerar automaticamente o código e enviar os dados serialmente para o Arduino em formato de string. Eu escolhi Processamento para o resto do meu trabalho. No processamento, podemos fazer uma matriz usando 64 botões (retângulos com função pressionada) e podemos atribuir um determinado valor e cor no início (seja a cor branca com valor 0). Agora, sempre que o botão for pressionado, converteremos a cor do botão em preto e definiremos o valor como 1. Se o usuário pressionar o mesmo botão novamente, seu valor mudará novamente para 0 e a cor novamente para branco. Isso ajudará o usuário a alterar o código repetidamente com facilidade e poderá fazer alterações facilmente sem apagar toda a matriz novamente. Ao clicar no botão "Imprimir", faremos um string semelhante ao mostrado acima para a demonstração. Em seguida, a string será enviada para a porta serial específica.

Você pode baixar o código de processamento abaixo. Este é meu primeiro código em processamento. As sugestões para a forma aprimorada de codificação são muito apreciadas.

Você pode ver a aparência da GUI e como o personagem é criado usando o sistema. Dificilmente levará segundos para criar o mesmo personagem na matriz.

Você pode baixar o código e as imagens deste projeto em meu repositório GitHub.

Recomendado: