Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Nur drei Pins für eine 4x3-Tastatur

Komponenten und Verbrauchsmaterialien

Widerstand 330 Ohm
× 1
Widerstand 1k Ohm
× 3
Widerstand 3k Ohm
× 1
4x3-Matrix-12-Key-Array-Schaltertastatur
× 1
Arduino UNO
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Einführung

Ziel dieses Projektes ist es, die Anzahl der Pins, die ein Nummernblock benötigt, deutlich zu reduzieren. Dies liegt daran, dass wir im Vergleich zu den auf den Arduino Uno- oder Nanoboards verfügbaren I/O-Pins oft viele I/O-Pins benötigen.

Die gewöhnlichen numerischen Tastaturen sind in einer Matrix strukturiert:Eine 4x3-Tastatur erfordert 4+3 Arduino-Digitalpins. Im Netz sind zahlreiche Bibliotheken verfügbar, um es mit Arduino zu verwenden.

Meine Lösung

Die von mir vorgeschlagene Lösung ist viel besser, da sie nur drei analoge Eingänge verwendet, mit einer Schaltung wie der in der folgenden Abbildung.

Für jede Spalte gibt es nur 4 Spannungswerte, die jeder der 4 Tasten entsprechen, plus Null Volt, falls keine Taste gedrückt wird. Im äquivalenten Schema (b) bezeichnet R1e einen der vier Widerstände R1-R4, während R2e einer der drei Widerstände R5-R7 ist.

Sehen wir uns nun an, wie Sie die vier größtmöglichen Intervalle erstellen. Zuerst können die Widerstände R2e =R5 =R6 =R7 gleich gemacht werden, dann können wir R1 =0 setzen, um die Ausgänge entsprechend der ersten Zeile bei 5V zu haben.

Mit R2=330 Ohm, R3=1 kOhm, R4=3 kOhm und R5, R6, R7=1 kOhm ergeben sich für jeden Ausgang folgende Intervalle:

Wie Sie sehen, sind die Abstände an den drei Ausgängen möglichst groß und Sie können sechs Standardwiderstände mit einer Toleranz von ±5% verwenden. Mit einem zusätzlichen analogen Eingang und einem weiteren Widerstand kann eine 4x4-Tastatur verwendet werden und so weiter. Die folgende Abbildung zeigt die Verbindungen mit Arduino.

Im Diagramm ist der Widerstand R1 mit Leitung 2 verbunden, weil der auf Leitung 1 ihn mit einem Draht gezeichnet hat, daher wurden die Widerstandsreferenzen um eins skaliert. Pinbelegungen können nach Bedarf geändert werden, solange sie als analog konfigurierbar sind.

Wenn Arduino mit 3,3 V versorgt wird, würde sich natürlich nichts ändern, da der ADC-Wandler standardmäßig die Versorgungsspannung verwendet und sich die ADC-Nummern nicht ändern.

Um das Programm zu testen, das keine Tastatur dieses Typs hat, habe ich es mit recycelten Tasten gebaut, die folgende Abbildung zeigt meinen Prototyp. Der 5-polige rechte Anschluss wird verwendet, um ihn mit Arduino zu verbinden.

Code

  • Analog4x3Keybf.ino
Analog4x3Keybf.inoArduino
Einfaches Programm zum Testen der KeyPad()-Funktion
/* Programm Analog4x3Keybf * Test für 4x3-Tasten-Tastatur mit 3 analogen Ausgängen * G. Carrera - 19.11.2018 */// Grenzen der Tastaturausgabewerte: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); // verwendet mit seriellem Monitor}void loop () { char k; k =KeyPad (); // Tastatur lesen if (k !='N') {// eine Taste wurde gedrückt Serial.print ( "key ="); Serial.println(k); Verzögerung (500); }}/******** Vom Programm verwendete Funktionen ********/char KeyPad(){// Tastatur lesen und die char-Taste zurückgeben // key ='N' für keine KeyScan(); // Analoge Tastatur lesen if (keyval[0]+keyval[1]+keyval[2] <40) { return 'N'; } else { // eine Taste wurde gedrückt delay(10);// antibounce KeyScan();// Analoge Tastatur erneut lesen für (i=0; i <3; i++){//identifiziere, zu welcher Spalte sie gehört if (keyval [i]> 40) {colp=i; val=keyval[i];// dies ist der entsprechende Wert für (int j=0; j <4; j++){// identifizieren, welche Taste in der Spalte gedrückt wurde if (val>=NADCm100[j] &&keyval <=NADCp100[j]){ Return-Taste[colp*4+j]; brechen; } } } } }}void KeyScan () {// Analoge Tastatur lesen keyval[0] =analogRead (A0); Verzögerung (1); keyval[1]=analogRead(A1); Verzögerung (1); keyval [2] =analogRead (A2); Verzögerung (1); }

Schaltpläne


Herstellungsprozess

  1. Excel für WS2812 RGB-LED-Array-Animationen
  2. Pflanzenalarm bei Durstalarm
  3. italienische Wordclock
  4. Sigfox-kWh-Zähler
  5. Bluetooth-Temperaturüberwachung
  6. Gestengesteuerte Sperre
  7. Der Companion-IC
  8. USB-MIDI-Adapter
  9. Ein isolierter Analogeingang für Arduino
  10. Messen Sie Ihre Reaktionszeit