4x4-Tastatur zum Mikrocontroller

Ich habe einen 8-poligen 4x4-Keyapd und möchte ihn an meinen Mikrocontroller anschließen. Ich habe im Internet gesucht, aber ich kann seine Pin-Konfiguration nicht sehen. Ich habe ein Problem beim Anschließen, deshalb kann mir jemand helfen. Ich habe hier ein Bild der Tastatur und Pin-Beschreibung meines Controllers.Pi-Beschreibung

Geben Sie hier die Bildbeschreibung ein

Sie müssen eine Verbindung zu einem beliebigen digitalen I/O-Port herstellen.
Es ist keine doppelte Frage, übrigens, ich habe über das Internet gesucht, wonach ich suche. danke für eure antworten.
Sie sollten die Ergebnisse anhand der Techniken in den Antworten überprüfen, aber für mich sieht es sehr nach Parallax und anderen aus, die parallax.com/sites/default/files/downloads/… verkaufen.
Siehe (wenn Sie nur EINEN Pin verwenden möchten): youtube.com/watch?v=URO042VrCKU

Antworten (3)

Hier ist eine entsprechende Anleitung

Geben Sie hier die Bildbeschreibung ein

Keypad Pin  Connects to Arduino Pin...
1           D9
2           D8
3           D7
4           D6
5           D5
6           D4
7           D3
8           D2

Geben Sie hier die Bildbeschreibung ein

/*4x4 Matrix Keypad connected to Arduino
This code prints the key pressed on the keypad to the serial port*/

#include <Keypad.h>

const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad

//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3
byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3

//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

void setup()
{
Serial.begin(9600);
}

//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
Serial.print(keypressed);
}
}
Diese Verbindung verwendet parallele Kommunikation, richtig? Kann ich die Ausgabe auf einem LCD mit serieller Kommunikation haben?
@NewInEverything Alle Pins der Matrix müssen verbunden werden, damit der Tastaturscan richtig funktioniert. Der Beispielcode gibt das Ergebnis nur über die serielle Schnittstelle (an ein Terminal) aus, aber Sie können den Code ändern, um das Ergebnis auf einem Display anzuzeigen.
Also kann ich die Ausgabe nur im seriellen Monitor sehen?
@NewInEverything Ja, lesen Sie den Kommentar des Codes für den letzten Teil
OK. D9-D2 ist der digitale Ein-/Ausgang des Aruino, richtig?. Entschuldigung, dass ich zu viel frage, ich bin wirklich ein Anfänger, was Elektronik angeht.
@NewInEverything Für die spezifische Aufgabe arbeiten die Pins als digitale E/A, aber es gibt andere alternative Funktionen für dieselben Pins, die vom verwendeten Modus abhängen.
Wie kann ich den Wert, den ich über die Tastatur eingegeben habe, als Ganzzahl auf das Arduino werfen?
Die @NewInEverything keypressed-Variable enthält den gelesenen Wert als Zeichen, nachdem Sie überprüft haben, ob eine Schaltfläche gedrückt wurde ( if (keypressed != NO_KEY)), können Sie den Wert verwenden, wann immer Sie wollen, aber wenn Sie eine Ganzzahl benötigen, müssen Sie sie konvertieren. Damit die Zeichen "0"-"9" in Ganzzahlen umgewandelt werden können, müssen Sie nur dezimal 48 subtrahieren (das ist 0x30 als Hex)
Sie meinen also, dass ich "Serial.print(keypressed);" ändern muss. zu "Serial.print(keypressed - 48);" um es in ganze Zahlen umzuwandeln?
Also habe ich versucht, diesen Code in "Serial.print (keypressed - 48);" zu ändern. und ich habe immer noch die passende Ausgabe, heißt das, dass die Ausgabe eine ganze Zahl ist?
@NewInEverything, der Zweck dieser Funktion besteht darin, den Wert an die serielle Schnittstelle zu senden. Warum möchten Sie den ganzzahligen Wert über die serielle Schnittstelle senden? Ansonsten ist die Konvertierung des char nach int korrekt (für Werte 0-9). Sie sagten ursprünglich "Eingabe über die Tastatur in das Arduino", die keypressedVariable befindet sich bereits im Arduino-Speicher, Sie müssen sie nirgendwohin senden, verarbeiten Sie sie einfach so, wie Sie es je nach Ihrer Aufgabe beabsichtigen.
Nun, ich brauchte es, weil ich einen Taschenrechner erstelle. also habe ich ein lcd-display mit serieller kommunikation an das arduino angeschlossen, mit deinem code kann ich es auch auf dem lcd anzeigen. das fasst es zusammen.
Wenn ich das "A" umwandeln möchte, muss ich nur diesen Code schreiben if(keypressed == 2A){Serial.print("+");} richtig? "2A" ist der Hexadezimalwert von "A".
@NewInEverything Nein, das ist nicht der 'A'-Hex-Wert, Sie können ihn in jeder ASCII-Tabelle sehen , es ist 0x41. Abgesehen davon sendet Ihr Code +' wenn keypressedgleich 'A' (das ist if(keypressed == 0x41) oder die Alternative if(keypressed == 'A'))
Ich habe eine einfachere Lösung. Ich habe gerade die Keymap bearbeitet und "+" anstelle von "A" eingefügt. haha. Trotzdem danke
und Sie meinen if(keypressed - 48)eher if(keypressed == 0x41, weil das die Anzeige "0" zurückgibt.
@NewInEverything Dies if(keypressed == 0x41ist dasselbe wie if(keypressed == 'A', es wird wahr sein, wenn die gedrückte Taste gleich dem Zeichenwert 'A' ist. Der -48-Trick hat nur Sinn, wenn die Zeichen '0'..'9' in Ganzzahlen 0..9 umgewandelt werden sollen
Das muss ich tun. Um es '0'-'9' in Ganzzahlen umzuwandeln. BTW, ich habe es nur zusätzlich zum Laufen bekommen. Ich überlege immer noch, was ich als nächstes tun soll, wenn ich es nicht hinbekomme. ich bitte nochmal um eure hilfe

Das Herausfinden der Matrixverdrahtung der 4x4-Tastatur ist mit einem Ohmmeter kinderleicht. Schließen Sie die Messleitungen an ausgewählte Leiterpaare im Anschlusskabel an. Drücken Sie dann nacheinander die Tasten, um zu sehen, welcher Schalter die Verbindung zwischen den ausgewählten Leitern schließt. Wenn Sie die Verbindungsnummern als 1 bis 8 aufschreiben und dann eine Tabelle der ausgewählten Paare der Reihe nach erstellen und welcher Schalter jedes Paar schließt. Bei einigen Paaren werden keine Schließungen registriert. In diesem Fall wissen Sie, dass es sich bei dem ausgewählten Paar von Verbindungsdrähten entweder um Zeilendrähte in der Schaltmatrix oder um Spaltendrähte handelt.

Ich habe über das Internet gesucht, aber ich kann die Pin-Konfiguration nicht sehen.

Ich nehme an, ich sehe einen 8-Draht-Schwanz.
Vielleicht 9. Nur vielleicht 7.

Die Tastatur hat wahrscheinlich die Anschlüsse als 4 Zeilen und 4 Spalten herausgebracht. Wenn es einen 9. Draht gibt, kann es eine Abschirmung sein.

Verwenden Sie ein Ohmmeter-Set, um so etwas wie einen Bereich von 100k (oder 199,9k oder was auch immer) zu sagen. Dadurch können Sie sehr hochohmige Kontakte nicht verpassen. Eine Reichweite von 20.000 KÖNNTE OK sein, aber 200.000 ist sicherer.

Kontakt mit dem leitfähigen Ende des Endes mit Messsonden herstellen. Versuchen Sie, 2 Sonden am selben Ende anzubringen und stellen Sie sicher, dass Sie leicht sehen können, wie das Messgerät reagiert – die meisten Enden sind bis kurz vor dem Ende isoliert und einige können auf den leitfähigen Oberflächen oxidiert sein und müssen VORSICHTIG mit der Sondenspitze des Messgeräts gerieben werden, um Kontakt herzustellen. Schwänze können durch Aufbringen von leitfähiger Tinte hergestellt werden, sind also normalerweise nicht sehr stark, also gehen Sie beim Herstellen des Kontakts mit angemessener Sorgfalt vor. Sie sind normalerweise nicht besonders empfindlich - seien Sie einfach vernünftig.

Wenn Sie einen Anschluss für die Tastatur haben, verwenden Sie ihn. Ich gehe von 8 Leitern aus, die unten von 1 bis 8 nummeriert sind. Passen Sie nach Bedarf an.

Einen Assistenten zu haben ist nicht unbedingt erforderlich, aber hilfreich.
Halten Sie eine Taste gedrückt und platzieren Sie eine Sonde auf Kontakt 1 (1. Draht) und gehen Sie mit der Sonde an allen anderen Drähten 2-8 entlang, um zu sehen, ob ein Kontakt gefunden werden kann.
Wenn nicht, platzieren Sie eine Sonde am 2. Draht (Kontakt 2) und gehen Sie entlang 3-8. Dann
3 + 4-8
4 +
5-8 5
+ 6-8 6 + 7-8
7 + 8

Wenn Sie bei IRGENDEINEM der oben genannten Punkte keine Kontaktschließung erhalten, stellen Sie (höchstwahrscheinlich) keinen richtigen Kontakt her oder die Tastatur ist tot (weniger wahrscheinlich).

Notieren Sie das Ergebnis und versuchen Sie es mit einer anderen Taste.

Nach ein paar Versuchen erscheint ein Muster. Wahrscheinlich 4 x Zeile und 4 x Spalte wie oben.

Eine alternative Methode besteht darin, zwei Kontakte für Zählersonden zu wählen und die Tasten der Reihe nach zu drücken, bis eine Schließung erfolgt, z. B. Kontakte auf 2 + 5 KÖNNEN auf Taste 4 reagieren. (2. Reihe, 5-4 = 1 = 1. Spalte), müssen es aber nicht.

Diese Methode MUSS funktionieren, wenn sie richtig durchgeführt wird, wenn die Matrix nur Schalter hat.

EINIGE Tastaturen haben interne Dioden, aber das ist bei Ihrer Tastatur äußerst unwahrscheinlich. Bei Tastaturen mit Dioden ist die Polarität des Messgeräts von Bedeutung.


Kajaks, die Ihrem sehr ähnlich sehen, finden Sie unter:

Hier - siehe unten

Geben Sie hier die Bildbeschreibung ein


Und hier für 6,99 $ - gleiche Anordnung.
Hersteller: Parallax
Produktcode: Dev-4x4Key-01


Vielleicht hier für $ weniger.

Datenblatt

Geben Sie hier die Bildbeschreibung ein