Você escreveu no programa para Arduino algo como:
lcd.print ("Olá, mundo!")
O conselho executou obedientemente o comando e o texto apareceu no visor. Mas como um dispositivo "disse" alguma coisa e o segundo "ouviu" e "entendeu"? É como pedir ao artista para fazer seu retrato, mas não ver como ele trabalha nele. O autor de Instructsbles, sob o apelido indoorgeek, criou um suporte que o ajudará a se sentir no lugar do "Arduino vivo" e a dirigir o HD44780 em um nível baixo. Em uma das competições, esse caseiro ganhou o primeiro prêmio.
Ele precisa de um pequeno detalhe: qualquer módulo (LCD, VLI ou PMOLED) no controlador HD44780 ou compatível, oito interruptores, um botão sem trava, um interruptor deslizante, um resistor variável de 1 kΩ, uma placa com uma entrada Micro USB e um gabinete.
Pelo que não é mostrado na foto, precisamos: um resistor de 10 kOhm e um capacitor de 100 μF e pelo menos 6,3 V.
O próprio Indoorgeek pegou um módulo do tipo mais comum: LCD, 16 caracteres por linha, duas linhas. Mas o restante dos módulos possui o mesmo princípio de controle, apenas a pinagem pode diferir um pouco, portanto, não tenha preguiça de olhar a folha de dados.
Em todos os casos, a conexão ao fio comum corresponde ao zero lógico e a conexão ao barramento de energia de +5 volts corresponde à unidade.
Os pinos 1 e 2 são para alimentar o módulo. O primeiro deles está sempre conectado a um fio comum e o segundo sempre com um barramento de força.
O pino 3 é para ajustar o contraste. Quando uma voltagem de 0 a 5 volts é aplicada a ele em relação ao fio comum, o contraste muda de zero para o máximo.
O pino 4 permite escolher entre um registro de dados e um registro de instruções. Damos um zero lógico - o registro de instruções (em outras palavras, comandos) é selecionado, a unidade é o registro de dados.
As instruções podem ser, por exemplo, o seguinte: inicialize o controlador, limpe a tela etc., e os dados incluem sinais que você exibirá no indicador.
Você pode, pelo contrário, ler dados de algum registro. Para fazer isso, é necessário aplicar um nível alto ao pino 5, e a tela entrará no modo de saída de informações de volta ao seu microcontrolador. Para começar a gravar dados do seu microcontrolador no controlador de vídeo novamente, você precisa enviar o nível 5 baixo para o pino 5. Muitas vezes, o modo de leitura não é usado, como, por exemplo, neste produto caseiro.
De acordo com os pinos 7 a 14, o display pode trocar comandos e dados na codificação de 8 bits. O nível mais baixo corresponde ao pino 7, o mais alto - 14.
O pino 6 é necessário para o bloqueio.Você está configurando lentamente os pinos 7 a 14, mas enquanto o pino 6 é um zero lógico, o módulo não responde a isso. Então, sem alterar o estado dos pinos 7 a 14, você envia um pulso de alto nível a curto prazo para o pino 7 - e os dados são transmitidos.
Conclusões 15 e 16 - nutrição da luz de fundo, se houver. 15 - mais, 16 - menos.
Disponível para indorgeek, o gabinete tinha 200x150x40 milímetros de tamanho. Esse estojo foi retirado de outro, desmontado, feito em casa e já havia buracos. O mestre usou-os no novo design ao máximo para fazer o mínimo possível de outros.
Ele configurou oito interruptores para alterar o estado das linhas de barramento de dados / comando, um comutador para escolher entre registradores (veja acima), um botão para acionar, um resistor variável para ajustar continuamente o contraste.
A placa riser com uma tomada Micro USB possui pinos convenientes que facilitam a conexão de fios. Apenas dois deles são necessários aqui: +5 V e um fio comum. Se você não possui essa placa, e um soquete Micro USB soldado de algum lugar parece inconveniente para a soldagem, basta pegar um cabo com um conector USB. De qualquer forma, vamos repetir após o mestre e soldar esse esquema:
Os contatos dos interruptores correspondentes à posição superior se conectaram e registraram uma vantagem neles. Ele fez o mesmo com os contatos dos interruptores correspondentes à posição mais baixa, só que lhes deu um sinal de menos. Ele conectou os contatos móveis dos comutadores não entre si, mas com as conclusões dos comandos do barramento / módulo de dados de acordo com o “peso” de ambos (D0 - pino 7 - ordem baixa, D7 - pino 14 - altura). Se os mestres não tivessem mordido furiosos resistores de pull-up na infância, ele seria capaz de usar interruptores mais simples - não comutadores, mas normalmente abertos.
Mas os mesmos resistores, mas nos circuitos de supressão do contato, ele nunca se ofendeu. Aqui, esse circuito é necessário para que o controlador do monitor não pressione uma vez o botão estroboscópico por vários. Outros controles não exigem a supressão de vibrações, desde que os pulsos do estroboscópio não sejam recebidos, os dados nas linhas restantes podem mudar quantas vezes você desejar. O principal é não tocar nos botões de alternância e no interruptor com o botão pressionado. Assim, com um resistor de 10 kOhm, o mestre puxou o pino 6 para o fio comum e com o botão para o barramento positivo. Como a resistência do botão é muito menor, quando pressionada, ela "arrasta". Quando liberada, sua resistência se aproxima do infinito, e o resistor já o está "puxando". Um capacitor de 100 uF (não mostrado no diagrama), conectado por um sinal de mais ao barramento de sinal de mais e por um sinal de menos ao resistor e à sexta saída do display, suprime a vibração. É melhor, é claro, suprimir a tagarelice com um botão de alternar e um gatilho RS.
Na chave deslizante, as saídas dos contatos fixos são conectadas da mesma maneira que as chaves de alternância e a chave móvel é conectada à saída do módulo 6. Aqui, o desenvolvedor novamente mostrou medo de resistores de pull-up. Essa opção é necessária para escolher entre os modos de transmissão de comandos (zero) e dados (unidade).
Indoorgeek conectou a saída do resistor variável correspondente ao contraste mínimo com o fio comum, o oposto ao barramento positivo e o meio (motor) à terceira saída do módulo.
Conclusões 1, 5 e 16 (respectivamente menos energia, gravação / leitura e menos luz de fundo) o mestre conectado a um fio comum, portanto, o modo de gravação é selecionado constantemente. Conclusões 2 e 15 (respectivamente, mais potência e mais luz de fundo), ele se conectou ao barramento de cinco volts. Um resistor limitador de corrente através dos LEDs da luz de fundo está integrado no módulo de exibição.
Se você coletou tudo isso, na sua frente agora - algo como isto:
O interiorgeek do painel frontal foi projetado para que você possa fazer o mesmo:
Você pode aprender os comandos do controlador HD44780 e como controlá-los folha de dados. Você também pode ver exemplos de scripts prontos para simulador. Para iniciantes, repetiremos os passos por trás do indoorgeek para exibir OLÁ!
Ligue o dispositivo. A luz de fundo acenderá. Mova a chave deslizante para a posição correspondente ao zero lógico, para que o indicador mude para o modo de receber comandos. Defina o número binário 00001111 no barramento de comando / dados com os comutadores e pressione brevemente o botão estroboscópico. Este comando significa: ligue a tela, torne o cursor visível e piscando, o que acontecerá. Da mesma forma, emitiremos o comando 00110000, o que significa: receber dados no formato de 8 bits, selecione a primeira linha e a fonte 5 por 8 pixels. Visualmente, nada acontecerá, mas em algum lugar dentro do controlador de exibição as opções necessárias ocorrerão. Você pode transferir dados. Traduzimos o interruptor deslizante para a posição correspondente à unidade lógica, agora o módulo indicador está pronto para aceitá-los. Defina o código ASCII da letra H, ou seja, 01001000, alterne os comutadores no barramento e pressione o botão estroboscópico. A letra correspondente aparece na tela e o cursor move uma posição para a direita. Da mesma forma, passaremos as letras E, L, L, O e um ponto de exclamação: 01000101, 01001100, 01001100, 01001111, 00100001. Se você fez a mesma coisa, não importa no estande que você acabou de montar ou no simulador, verá a inscrição HELLO ! Assim:
Foi assim que você entendeu o quanto o Arduino faz para exibir apenas alguns caracteres. E há equipes para executar ações mais complexas, tendo dominado quais, você pode obter efeitos interessantes, definir caracteres não-padrão ...
Sua excursão para a "cozinha" da biblioteca do Arduino, LiquidCrystal, está apenas começando, e seja divertido!