Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
2 maneiras de gerenciar um teclado de 16 botões com um mínimo de pinos.
Etapa 1: introdução
Recentemente, trabalhei em uma maneira de gerenciar uma matriz de teclado de toque 4x4 conectada a um clone do Arduino. Os pontos de ajuste foram:
- usar apenas 4 + 1 pinos em vez de 8 pinos no atmega328p
- para adicionar um link CHAR 4x20 Display LCD via I2C (2 pinos)
-para controlar saídas digitais e analógicas.
Portanto, ter um monte de coisas para controlar com uma quantidade de I / O pecado.
Etapa 2: Coisas para usar:
Comprei um display LCD de 4x20 caracteres e um adaptador de módulo I2C para conectar o display com pinos SDA (A4) e SCL (A5) no meu clone Arduino.
Eu uso o famoso e agora obsoleto MM74C922N: um conversor de 8 a 4 vias que se encaixa no teclado de matriz 4x4.
Criei um clone do arduino baseado no atmega328p e programei através de um conector HE10 (barramento SPI) e um cabo USBasp.
Etapa 3: Esquema e o quadro:
O tabuleiro é feito de:
- o teclado LCD só usa com Arduino IDE, não é possível com LDmicro (programação Ladder)
- a placa MM74C922N: 16 botões codificados em 16 valores binários em DCBA de 4 bits. Quando um botão é pressionado: o led azul acende e um valor aparece no DCBA (A é o LSB). Quando um botão é solto: o led azul se apaga e o valor é zerado no DCBA.
-a placa de clone Arduino atmega238p.
Etapa 4: Usando LDmicro com programação Ladder:
O código a ser inserido é composto de 4 valores entre 16 valores pressionados por chave, portanto, combinações de 16x16x16x16.
Depois de desenhar o SFC, você deve traduzi-lo para o LADDER com o método fornecido em um dos meus
instructables:
www.instructables.com/id/Arduino-tomation-…
Depois de digitado, compile-o como xxxx.hex e faça o download com o downloader KHAZAMA.
O display LCD não pode ser programado no LDmicro.
Eu forneço o zip LDmicro com o esboço SERRURE.id nele e o downloader KHAZAMA.
Etapa 5: Usando Arduino IDE 1.8.x com Mightycore e SMlib:
Eu traduzo o SFC em uma máquina de estado. Então usei o IDE Arduino com a biblioteca Mightycore e SM dentro.
Eu exibo mensagem como: ERROR, WAITING, UNLOCK, state alcançado, valor da tecla pressionada no display LCD.
Eu lhe dou o esboço e a biblioteca SM. Para Mightycore, olhe para isto:
www.instructables.com/id/Arduino-18x-Clone…
Etapa 6: para concluir:
Essas são duas maneiras de gerenciar o teclado 16 e demorei várias horas para encontrar a sequência correta, mas agora funciona bem. Você deve respeitar estas etapas:
-1 detecta uma tecla pressionada em uma borda ascendente do pino DA
-2 leia o valor gerado no DCBA e compare com o bom
A menos que certamente não funcione.
Obrigado a todos os tutoriais interessantes na rede.