Ich habe eine 4x4-Matrix für 16 Tasten. Jede Zeile/Spalte ist direkt mit den Pins eines unbekannten Mikrocontrollers verbunden. Wenn ich die Pins direkt miteinander verbinde, verhält sich der Mikrocontroller korrekt, als ob der jeweilige Knopf gedrückt wurde.
Ich möchte die Pins direkt mit einem Arduino ansteuern oder direkt mit GND/VCC verbinden. Wenn ich sie jedoch auf diese Weise einschalte, kann der Mikrocontroller entweder:
Warum das? Übersehe ich etwas, wie Pullup-Widerstände?
Der Mikrocontroller unterstützt gleichzeitig bestimmte Tastendrücke. Ich denke, es hat mit dem Zeilenscannen zu tun. <- Das hat sich bewahrheitet, der Mikrocontroller hat jeweils eine Zeile geprüft. Daher war es notwendig, den Spaltenstift nur dann zu aktivieren, wenn die richtige Zeile ausgewählt wurde.
Die Frage ist: Wie "steuern" Sie die Drähte mit einem Arduino? Der Mikrocontroller zieht wahrscheinlich die Zeilen (oder Spalten) einzeln nach oben (oder unten) und überprüft dann die Spannung auf der anderen Achse, um Tastendrücke in dieser Zeile / Spalte zu erkennen.
Um dies mit einem Arduino zu emulieren, müssten Sie die erregte Achse überwachen und dann synchronisiert an die Erfassungsachse ausgeben. Je nachdem, wie der unbekannte Mikrocontroller programmiert ist, kann dies sehr schwierig sein, da er sehr bald nach dem Einschalten lesen könnte. Vielleicht zu schnell für Ihr Arduino, um zu reagieren.
Es ist auch erwähnenswert, dass es neben Zeile/Spalte noch andere Anordnungen gibt. Sind Sie sicher, dass die Tastatur so angeordnet ist?
Die Tastatur nutzt Multiplexing, siehe hier die Theorie.
Was kannst du tun ?
Zuerst müssen Sie die Ein- und Ausgänge identifizieren und herausfinden, ob der unbekannte Prozessor die Ausgänge in positiver oder negativer Logik ansteuert. Dies sollte einfach sein, da Sie bereits einige Tests durchgeführt haben und das Board immer noch funktioniert. In positiver Logik würde ein mit VDD verbundener Eingang so viele gleichzeitig gedrückte Tasten anzeigen. In negativer Logik zeigt ein mit GND verbundener Eingang so viele gleichzeitig gedrückte Tasten. Ein Ausgang wird nichts tun, wenn er mit VCC oder GND verbunden ist. Da ich annehme, dass Sie die Zeilen und Spalten sehen können, müssen Sie diesen Test nur für jeweils eine Zeile durchführen. Auch wenn Sie noch keinen Ausgang gebrannt haben, verwenden Sie bitte einen kleinen Widerstand für Tests (470 Ohm reichen aus). Das Beispiel im Link ist in positiver Logik (ein aktiver Eingang / Ausgang ist hoch)
Sie können versuchen, das Tastaturverhalten zu simulieren, indem Sie vier Arduino-Eingänge an die Tastaturausgänge des Prozessors und vier Arduino-Ausgänge an die Tastatureingänge des Prozessors anschließen, aber es ist unwahrscheinlich, dass dies zuverlässig funktioniert, da für einen simulierten Tastendruck der Ausgang dem angeschlossenen Eingang sehr schnell folgen sollte. Ein Mikrocontroller mit CLC-Engine wie einige Mikrochip-PICs können das, aber Arduino nicht.
Sie können eine Optokoppler-Matrix verwenden, wenn die Matrix in positiver Logik ist, verbinden Sie den Fototransistor-Kollektor mit dem Ausgang, Emitter mit dem Eingang und umgekehrt, wenn in negativer Logik. Wenn es funktioniert, können Sie auch Multiplexing verwenden, um die Optokoppler anzusteuern, wie Sie am Ende des Artikels unter dem obigen Link sehen. Sie können sehr billige Quad-Optokoppler wie diesen finden , Sie benötigen vier davon, weniger als 10 $ für alle.
Dorian