
Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03

Cada vez que vejo um teclado, ele vem com muitos pinos, é um grande desperdício de seus pinos do Arduino, então podemos rodar um teclado com um e apenas um pino?. A resposta está aqui.
Etapa 1: Lista de materiais

Hardware:
01 Arduino UNO
02 tábuas de pão
01 LCD com I2C
16 botões de pressão
04 resistores 1,5 kΩ
04 resistores 620 Ω
04 resistores 220 Ω
08 resistores 100 Ω
01 resistor 1 kΩ
07 fios de ligação
Programas:
Arduino IDE instalado no seu PC
Etapa 2: Esquema e Cicruit


A ideia geral é que temos 4 * 4 matrizes de botões conectados verticalmente ao aterramento pelo cabo direito e horizontalmente pelo outro cabo (o cabo do botão) e resistores de 1,5 kΩ, 620Ω, 220Ω e 100Ω, as extremidades de as 4 filas são conectadas por quatro resistores de 100Ω, conforme mostrado no esquema.
Cada vez que você pressiona um botão, você fecha o circuito e a corrente passa por um caminho diferente e por uma cadeia de resistores diferente, é por isso que o pino A0 recebe uma leitura analógica diferente para cada botão. Tudo o que você precisa agora é codificação.
Etapa 3: O Código
#incluir
#incluir
LiquidCrystal_I2C lcd (0x3f, 20, 4);
Botão int = A0;
int readvalue;
void setup ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (botão, INPUT);
lcd.backlight ();
lcd.print ("Olá, mundo");
atraso (2000);
lcd.clear ();
lcd.print ("Teclado de um pino 4 * 4");
atraso (2000); }
void loop ()
{
readvalue = analogRead (botão);
Serial.println (valor de leitura);
if (valor de leitura == 852) {lcd.clear (); lcd.print ("A");}
else {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
else {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
else {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
else {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
else {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
else {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
else {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
else {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
else {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
else {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
else {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
else {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
else {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
else {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}}
Etapa 4: Correção de Valores

Quando você abre o monitor serial, ele mostra um valor de 1023, se você apertar um botão ele vai te dar outra leitura, você tem que pegar esses valores e fazer algumas mudanças no código
Etapa 5: Projeto após crítica e revisão

Sem dúvida que estamos todos aqui para aprender e compartilhar nossos conhecimentos, graças a alguns comentários deixados por algumas pessoas da comunidade que me ajudaram muito, resolvi fazer alguns ajustes e melhorias no meu projeto:
O hardware:
Decidi soldar todos os componentes em um PCB para evitar o problema de conexão ruim nas placas de ensaio.
O código:
Um amigo me aconselhou a usar um software debouncing e é apenas um loop ("for" loop por exemplo) para fazer o programa demorar algum tempo para escolher uma leitura, significa que ele faz muitas leituras (500 no meu exemplo), mas leva apenas o último.
para (i = 1; i <= 500; i ++) {// pegue apenas a 500ª leitura analógica
value = analogRead (Button);} // isso ajuda a levar algum tempo e evitar leituras ruins
Um outro amigo agradecido a ele me aconselhou a comparar "readvalue" com um intervalo de valores, não um, porque "readvalue" leva muitos valores para o mesmo botão. O "A", por exemplo, dá uma leitura de: 849, 850, 851 852, 853, 854, 855, portanto, é um intervalo de 7 valores: um limite (852) e 3 valores à esquerda e à direita. o que temos que fazer aqui é comparar o valor absoluto da diferença entre "readvalue" e "852" com "3".
if (abs (valor de leitura-852) <= 8) {lcd.clear (); lcd.print ("A");}
Etapa 6: depois de algum trabalho de soldagem



Etapa 7: O momento da verdade

Como você pode ver, o programa às vezes confunde os botões, mas ainda funciona, em teoria não há nada de errado com o circuito, mas o código precisa de mais calibração.
Etapa 8: Fim
Espero que gostem deste projeto e que tentem realizá-lo, talvez se saiam melhor do que eu.
Pergunte-me se tiver dúvidas, deixe comentários e não se esqueça de votar em mim se gostar.
Recomendado:
Convertir Un Teclado Muerto a Un Teclado MIDI: 8 etapas

Convertir Un Teclado Muerto para Un Teclado MIDI: Hace un tiempo cuando era pequeño tenia un teclado funcional que me encantaba tocarlo, aunque solo sabia poquitas notas me encantaba tocarlo, un dia le conecte el eliminador equivocado pero no me habia dado cuenta cuando lo conecte todo estaba funci
Conector ICSP para Arduino Nano sem cabeçalho de pino soldado, mas pino de Pogo: 7 etapas

Conector ICSP para Arduino Nano sem cabeçote de pino soldado, mas pino Pogo: Faça um conector ICSP para Arduino Nano sem cabeçalho de pino soldado na placa, exceto Pogo Pin. - Pino do pino da sonda de teste da mola BP75-E2 (cabeça cônica de 1,3 mm)
Guia de uso do teclado de um pino Raspberry Pi: 9 etapas

Guia de uso do Raspberry Pi do teclado de um pino: ISENÇÃO DE RESPONSABILIDADE: ESTE É UM GUIA DE USO PARA UM PRODUTO DE FONTE ABERTA: O TECLADO DE UM PIN. ESTE NÃO É UM PROJETO DIY. SE VOCÊ QUER FAZER AS PLACAS VOCÊ MESMO, OS ARQUIVOS DA EAGLE PODEM SER ENCONTRADOS NO FINAL DO TUTORIAL. O que é o teclado de um pino? Teclado de um pino
Interface de teclado com 8051 e exibição de números de teclado em 7 segmentos: 4 etapas (com imagens)

Interface do teclado com 8051 e exibição de números do teclado em 7 segmentos: Neste tutorial, vou falar sobre como podemos fazer a interface do teclado com 8051 e exibir os números do teclado em um display de 7 segmentos
Teclado Quick and Dirty Das (teclado em branco): 3 etapas

Quick and Dirty Das Keyboard (teclado em branco): Um teclado Das é o nome do teclado mais popular sem inscrições nas teclas (teclado em branco). O Das Keyboard é vendido por $ 89,95. Este instrutível irá guiá-lo para fazer um você mesmo com qualquer teclado antigo que você tenha por aí