Índice:
- Etapa 1: Obtenha os bens …
- Etapa 2: conectar diretamente ao monitor de LED
- Etapa 3: Especificando um caractere a ser exibido
- Etapa 4: Conserve as portas de E / S com um registrador de deslocamento
- Etapa 5: Resumo
Vídeo: Usando um LED Dot Matrix com um Arduino e Shift Register: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:40
O LED de matriz de pontos DLO7135 da Siemens é uma incrível peça de optoeletrônica. É anunciado como 5x7 Dot Matrix Intelligent Display (r) com memória / decodificador / driver. Junto com essa memória, ele tem um display ASCII de 96 caracteres com caracteres maiúsculos e minúsculos, um gerador de caracteres e multiplexador embutido, quatro níveis de intensidade de luz, e tudo funciona em 5 V. Isso é muito para viver, e por US $ 16 o pop, definitivamente deveria. Enquanto passava metade do dia na minha loja de eletrônicos local favorita, encontrei uma lata cheia deles por US $ 1,50 a peça. Saí da loja com vários. Este instrutível mostrará como conectar-se a esses LEDs de matriz de pontos e exibir caracteres usando um Arduino baseado em AVR. Se você leu algum dos meus guias anteriores, pode ter a impressão de que muitas vezes sou a favor da solução mais parcimoniosa, e você não estaria errado, mesmo que eu não alcance a meta de vez em quando. Portanto, também darei outra etapa neste instrutível e mostrarei como você pode reduzir o número de portas de E / S necessárias para acionar esses LEDs matriciais grandes e brilhantes.
Etapa 1: Obtenha os bens …
Para este pequeno projeto, você precisará de:
- um microcontrolador baseado em AVR como um Arduino ou qualquer um de sua espécie. Essas instruções provavelmente podem ser adaptadas ao MCU de sua escolha.
- um LED de matriz de pontos DLO7135 ou outro da mesma família
- um registrador de deslocamento de 8 bits como 74LS164, 74C299 ou 74HC594
- uma placa de ensaio
- fio de conexão, alicate de corte, etc.
Um ferro de solda não é necessário, embora eu use um mais tarde; você pode sobreviver sem ele.
Etapa 2: conectar diretamente ao monitor de LED
Organize sua pequena lista de peças e pegue o LED. Coloque-o na placa de ensaio com um pouco de centro, abrangendo a ranhura da linha média. A primeira parte da conexão ocorre no lado esquerdo do LED. O pino nº 1 está localizado no canto superior esquerdo, conforme indicado pelo triângulo / seta. Coloquei as funções dos pinos em uma imagem para sua referência enquanto você lê ou conecta seu LED.
O lado esquerdo
Positivo e negativo Começando no canto superior esquerdo, conecte Vcc a 5V. Talvez seja uma boa ideia não ligar a placa até que todo o lado esquerdo esteja completo; o LED pode ficar brilhante se você estiver tentando ver pequenos orifícios para cutucar os fios. Conecte o GND inferior esquerdo ao aterramento. Teste da Lâmpada, Ativação do Chip e Gravação A 2ª e a 3ª a partir do topo à esquerda são Teste da Lâmpada e Ativação do Chip. Ambas são lógicas negativas, o que significa que são ativadas quando estão em um 0 lógico em vez de 1. Minha imagem abaixo deveria ter barras sobre elas, mas eu não anotei isso para nenhuma delas. O pino LT quando ativado acende todos os pontos na matriz de pontos com 1/7 de brilho. É mais um teste de pixel, mas o interessante sobre o pino LT é que ele não sobrescreve nenhum caractere que está na memória, então você, se tiver vários deles amarrados juntos (eles têm uma distância de visualização de 20 pés), estroboscópico LT pode fazer com que pareça um cursor. Para garantir que está desativado, conecte-o a 5 V. Os pinos CE e WR também são lógicos negativos e devem ser ativados para que este dispositivo inteligente seja gravado. Você poderia microgerenciar esses pinos com portas de E / S sobressalentes em seu microcontrolador, mas não vamos nos preocupar aqui. Basta conectá-los ao aterramento para mantê-los ativados. Níveis de brilho Existem quatro níveis de brilho programáveis na família DLO de LEDs:
- Em branco
- 1/7 Brilho
- 1/2 brilho
- Brilho Total
BL1 HIGH e BL0 LOW têm 1/2 brilho. Ambos HIGH têm brilho total. Defina como quiser. Novamente, se você tiver portas de E / S sobressalentes e isso for importante o suficiente para você, isso também pode ser controlado por seu Arduino. Isso envolve o lado esquerdo. Se você ligar a placa, verá o LED acender. Brinque com os controles de brilho e o teste da lâmpada para se familiarizar com ele, se estiver curioso.
O lado direito
O lado direito consiste inteiramente em portas de dados. O canto inferior direito, pino 8 ou D0 para ser mais preciso, representa o bit menos significativo no caractere de 7 bits. O canto superior direito, pino 14 ou D6 representa o bit mais significativo. Isso permite que você saiba em que ordem embaralhar seus bits ao gravar no LED. Quando você tiver as portas de entrada de dados conectadas, encontre sete portas de E / S digitais vazias em seu Arduino ou AVR e conecte-as. Você provavelmente vai querer lembrar qual porta de saída de dados em seu AVR vai para qual porta de entrada de dados no LED. Agora você está pronto para enviar alguns dados para aquele LED inteligente. Você já está tremendo de empolgação? Sei quem eu sou…
Etapa 3: Especificando um caractere a ser exibido
O conjunto de caracteres usado neste LED CMOS é o seu ASCII comum começando em 0x20 (decimal 32; um espaço) e terminando em 0x7F (decimal 127; uma exclusão, embora representado no LED como um gráfico de cursor). Portanto, fazer com que o LED exiba um caractere não envolve nada mais do que empurrar a lógica 1 ou 0 nos pinos de saída de dados, geralmente seguido por um pulso WR, mas estou deixando isso para este exercício. Então, você escreveu ou lembrou quais pinos vão para quais portas, certo? Eu escolhi PD [2..7] e PB0 (pinos digitais 2 a 8 na linguagem Arduino). Eu normalmente não sugiro usar o PD [0..1] porque eu o dedico à minha comunicação serial de volta para uma caixa do FreeBSD, e do Arduino et al. mapeie esses pinos para seu canal de comunicação FTDI USB e, embora "eles" SAY pinos 0 e 1 funcionem se você não inicializar a comunicação serial, nunca fui capaz de usar esses pinos como E / S digital normal. Na verdade, passei dois dias tentando depurar um problema quando tentei usar PD0 e PD1 e descobri que eles estavam sempre ALTOS. * encolher os ombros * Provavelmente seria bom ter algum tipo de entrada externa, como talvez um teclado, uma roda ou botão giratório, ou talvez até mesmo a entrada de um terminal (meu ArduinoTerm ainda não está pronto para o horário nobre …). A escolha é sua. Por enquanto, vou apenas ilustrar como obter o código para inserir o caractere que você deseja no LED. Há um arquivo zip para download incluindo o código-fonte e o Makefile e também um pequeno filme mostrando o LED imprimindo seu conjunto de caracteres. Desculpe pela péssima qualidade do vídeo. O código abaixo imprime a string "Bem-vindo ao meu Instructable!" em seguida, percorre todo o conjunto de caracteres que o LED suporta.
DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Bem-vindo ao meu Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } para (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos * & apos);}A saída da porta é tratada na função Print2Led ()
voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1 <
O código e o Makefile estão incluídos em um arquivo zip abaixo.
Etapa 4: Conserve as portas de E / S com um registrador de deslocamento
Portanto, agora nosso microcontrolador pode enviar dados para o LED de matriz de pontos, mas está usando oito portas de E / S. Isso exclui o uso de um ATtiny em um pacote DIP de 8 pinos e até mesmo com um Arduino mais recente com um ATmega328p que contém muitas portas de E / S para um LED. Podemos contornar isso, no entanto, usando um IC chamado registrador de deslocamento. Um momento para "mudar" de marcha … Um registrador de mudança pode ser melhor compreendido pensando nas duas palavras que compõem seu nome: "mudar" e "registrar". A palavra deslocamento se refere a como os dados estão se movendo pelo registrador. Aqui (como em nosso Arduino e microcontroladores, em geral), um registro é um local que contém dados. Ele faz isso implementando uma cadeia linear de circuitos lógicos digitais chamados "flip-flops" que tem dois estados estáveis que podem ser representados por 1 ou 0. Assim, ao colocar oito flip-flops juntos você tem um dispositivo que é capaz de conter e representando um byte de 8 bits. Assim como existem vários tipos de flip-flops e diversas variações sobre um tema de registros de deslocamento (pense em contadores para cima / para baixo e contadores Johnson), também existem vários tipos de registros de deslocamento com base em como os dados é travado no registro e como esses dados são produzidos. Com base nisso, considere os seguintes tipos de registradores de deslocamento:
- Serial In / Parallel Out (SIPO)
- Serial In / Serial Out (SISO)
- Entrada paralela / saída serial (PISO)
- Entrada paralela / saída paralela (PIPO)
Dois dignos de nota são SIPO e PISO. Os registradores SIPO pegam os dados em série, ou seja, um bit após o outro, deslocando o bit de entrada anterior para o próximo flip-flop e enviando os dados em todas as entradas de uma vez. Isso é um bom conversor serial para paralelo. Os registradores de deslocamento PISO, por outro lado, têm entradas paralelas, de modo que todos os bits são inseridos de uma vez, mas são produzidos um de cada vez. E você adivinhou, isso é um bom conversor paralelo para serial. O registrador de deslocamento que queremos usar para reduzir o número de pinos de I / O nos permitiria pegar os 8 pinos de I / O que usamos anteriormente e reduzi-los a um, ou talvez apenas alguns, considerando que podemos precisar controlar como inserimos os bits. Portanto, o registrador de deslocamento que usaremos é um Serial In / Parallel Out. Conecte o registrador de deslocamento entre o LED e o Arduino. Usar um registrador de deslocamento é fácil. A parte mais difícil é apenas visualizar os pinos de saída de dados e como os dígitos binários irão parar no IC e como eles eventualmente aparecerão no LED. Reserve um momento para planejar isso. 1. Conecte 5 V ao pino 14 (canto superior direito) e leve o pino 7 (canto inferior esquerdo) até o solo.2. O registrador de deslocamento tem duas entradas seriais, mas usaremos apenas uma, portanto, conecte o pino dois a 5V3. Não usaremos o pino transparente (usado para zerar todas as saídas), portanto, deixe-o flutuando ou ataque-o para 5V4. Conecte uma porta IO digital ao pino um do registro de deslocamento. Este é o pino 5 da entrada serial. Conecte uma porta IO digital ao pino 8 (canto inferior direito). Este é o pin.6 do relógio. Conecte suas linhas de dados de Q0 a Q6. Estamos usando apenas 7 bits porque o conjunto de caracteres ASCII usa apenas sete bits. Eu usei PD2 para enviar meus dados seriais e PD3 para o sinal de relógio. Para os pinos de dados, conectei Q0 a D6 no LED e continuando dessa forma (Q1 a D5, Q2 a D4, etc). Como estamos enviando dados em série, teremos que examinar a representação binária de cada caractere que queremos enviar, observando os 1s e os 0s, e emitindo cada bit na linha serial. Incluí uma segunda versão do código-fonte dotmatrixled.c junto com um Makefile abaixo. Ele percorre o conjunto de caracteres e exibe todos os caracteres pares (se for estranho pensar que uma letra pode ser ímpar ou par, pense na representação binária por um momento). Tente descobrir como fazê-lo circular pela exibição de todos os caracteres estranhos. Você pode experimentar ainda mais as conexões entre o registrador de deslocamento, o LED de matriz de pontos e seu Arduino. Existem vários recursos de controle entre o LED e o registro que podem permitir que você ajuste seu controle sobre quando os dados são exibidos. Então … deixamos de usar oito portas de E / S para usar apenas duas!
Etapa 5: Resumo
Neste instrutível, apresentei o LED de matriz de pontos DLO7135 e como fazê-lo funcionar. Além disso, discuti como reduzir o número de portas de E / S necessárias de oito para apenas duas usando um registrador de deslocamento. O LED de matriz de pontos DLO7135 pode ser conectado para fazer letreiros muito atraentes e interessantes. Espero que você tenha se divertido lendo este instrutível! Se houver alguma melhoria que você acha que eu poderia fazer ou sugestões que você gostaria de dar sobre este ou qualquer um dos meus 'ibles, fico feliz em ouvi-los! Feliz AVR'ing!
Recomendado:
Digital Clock LED Dot Matrix - ESP Matrix Android App: 14 etapas
Digital Clock LED Dot Matrix - ESP Matrix Android App: Este artigo é orgulhosamente patrocinado pela PCBWAY.PCBWAY fazer prototipagem de PCBs de alta qualidade para pessoas em todo o mundo. Experimente você mesmo e ganhe 10 PCBs por apenas $ 5 na PCBWAY com ótima qualidade, Obrigado PCBWAY. O ESP Matrix Board que eu desenvolvi
IoT Smart Clock Dot Matrix usar Wemos ESP8266 - ESP Matrix: 12 etapas (com imagens)
IoT Smart Clock Dot Matrix Use Wemos ESP8266 - ESP Matrix: Faça seu próprio IoT Smart Clock que pode: Exibir relógio com um ícone de animação bonito Exibir lembrete-1 a lembrete-5 Exibir calendário Exibir horários de oração muçulmanos Exibir informações meteorológicas Exibir notícias Exibir conselhos Exibir Exibição da taxa de bitcoin
DIY LED Dot Matrix Scrolling Display usando Arduino: 6 etapas
DIY LED Dot Matrix Scrolling Display usando Arduino: Hello InstruThis is my First Instructable. Neste Instructable, vou mostrar como faço um LED Dot Matrix Scrolling Display DIY usando Arduino como MCU. Lá
Interface LED Dot Matrix (8x8) com NodeMCU: 6 etapas (com imagens)
Interface LED Dot Matrix (8x8) Com NodeMCU: Olá Makers, estou com outro Instructable simples e legal. Neste Instructable aprenderemos como fazer a interface de LED Dot Matrix (8x8) com NodeMCU. Então, vamos começar
ROLANDO OS SEGUIDORES DO INSTAGRAM EM 8X32 LED DOT MATRIX DISPLAY USANDO ESP32: 4 etapas
ROLANDO OS SEGUIDORES DO INSTAGRAM EM 8X32 LED DOT MATRIX DISPLAY USANDO ESP32: Este é meu segundo instrutível e desculpe pelo meu inglês engraçado