Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Apenas três pinos para um teclado 4x3

Componentes e suprimentos

Resistor 330 ohm
× 1
Resistor 1k ohm
× 3
Resistor 3k ohm
× 1
Matriz 4x3 12 teclado de troca de matriz de teclas
× 1
Arduino UNO
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Introdução


O objetivo deste projeto é reduzir significativamente o número de pinos exigidos por um teclado numérico. Isso ocorre porque geralmente precisamos de muitos pinos de I / O em comparação com aqueles disponíveis no Arduino Uno ou Nanoboards.

Os teclados numéricos comuns são estruturados em matriz:um teclado 4x3, requer 4 + 3 pinos digitais Arduino. Numerosas bibliotecas estão disponíveis na rede para usá-lo com o Arduino.





Minha solução


A solução que proponho é muito melhor porque usa apenas três entradas analógicas, com um circuito como o mostrado na figura a seguir.



Para cada coluna existem apenas 4 valores de tensão, correspondendo a cada uma das 4 teclas, mais zero volts caso nenhuma tecla seja pressionada. No esquema equivalente (b), R1e indica um dos quatro resistores R1-R4, enquanto R2e é um dos três resistores R5-R7.

Agora vamos ver como fazer os quatro intervalos mais largos possíveis. Em primeiro lugar, os resistores R2e =R5 =R6 =R7 podem ser igualados, então podemos definir R1 =0 para ter as saídas correspondentes à primeira linha em 5V.

Com R2 =330 ohm, R3 =1 k ohm, R4 =3 k ohm e R5, R6, R7 =1 k ohm, os seguintes intervalos são obtidos para cada saída:



Como você pode ver, os intervalos nas três saídas são os maiores possíveis e você pode usar seis resistores padrão com uma tolerância de ± 5%. Com uma entrada analógica extra e outro resistor, um teclado 4x4 pode ser usado e assim por diante. A figura a seguir mostra as conexões com o Arduino.





No diagrama, o resistor R1 está conectado à linha 2 porque o da linha 1 o traçou com um fio, de modo que as referências de resistências foram escalonadas em um. As atribuições dos pinos podem ser modificadas de acordo com as necessidades, desde que sejam configuráveis ​​como pinos analógicos.

Claro, se o Arduino for alimentado a 3,3 V, nada mudaria porque o conversor ADC como padrão usa a tensão de alimentação e os números do ADC não mudam.

Para testar o programa, por não ter teclado desse tipo, construí-o com teclas recicladas, a figura abaixo mostra o meu protótipo. O conector direito de 5 pinos é usado para conectá-lo ao Arduino.






Código

  • Analog4x3Keybf.ino
Analog4x3Keybf.ino Arduino
Programa simples para testar a função KeyPad ()
 / * programa Analog4x3Keybf * teste para teclado 4x3 teclas com 3 saídas analógicas * G. Carrera - 19/11/2018 * /// limites dos valores de saída do teclado:const int NADCm100 [4 ] ={923.669.412.156}; const int NADCp100 [4] ={1123.869.612.356}; const char key [13] ={'1', '4', '7', 'C', '2', '5' , '8', '0', '3', '6', '9', 'E'}; int keyval [3]; int i, colp, val; void setup () {Serial.begin (9600); // usado com monitor serial} void loop () {char k; k =KeyPad (); // ler teclado if (k! ='N') {// uma tecla foi pressionada Serial.print ("key ="); Serial.println (k); atraso (500); }} / ******** Funções usadas pelo programa ******** / char KeyPad () {// ler o teclado e retornar a chave char // key ='N' para nenhum KeyScan (); // lê teclado analógico if (keyval [0] + keyval [1] + keyval [2] <40) {return 'N'; } else {// uma tecla foi pressionada delay (10); // antibounce KeyScan (); // reler o teclado analógico para (i =0; i <3; i ++) {// identificar a qual coluna ela pertence if (keyval [i]> 40) {colp =i; val =keyval [i]; // este é o valor correspondente para (int j =0; j <4; j ++) {// identificar qual tecla foi pressionada na coluna if (val> =NADCm100 [j] &&keyval <=NADCp100 [j]) {tecla de retorno [colp * 4 + j]; pausa; }}}}}} void KeyScan () {// ler keyval do teclado analógico [0] =analogRead (A0); atraso (1); keyval [1] =analogRead (A1); atraso (1); keyval [2] =analogRead (A2); atraso (1); } 

Esquemas


Processo de manufatura

  1. Excel para WS2812 RGB LED Array Animations
  2. Alarme de planta de alerta de sede
  3. Word Clock italiano
  4. Medidor Sigfox kWh
  5. Monitor de temperatura Bluetooth
  6. Bloqueio controlado por gestos
  7. O Companion IC
  8. Adaptador USB MIDI
  9. Uma entrada analógica isolada para Arduino
  10. Meça seu tempo de reação