Hallo, ich würde gerne herausfinden mit welcher Logic die Steuereinheit eines Dartautomaten die Matrix abscannt. Kann mir dabei jemand behilflich sein?
Martin H. schrieb: > Hallo, ich würde gerne herausfinden mit welcher Logic die Steuereinheit > eines Dartautomaten die Matrix abscannt. Kann mir dabei jemand > behilflich sein? Jedes Feld hat einen eigen Tastkontakt. Die fragt man der Reihe nach, umlaufend ab. Wie jede andere (Matrix-)Tastatur auch.
Martin H. schrieb: > mit welcher Logic die Steuereinheit eines Dartautomaten die Matrix > abscannt. hatten wird doch erst vor Kurzem .. Beitrag "Dart Matrix auslesen" > Kann mir dabei jemand behilflich sein? danke, gerne PS: Warum einen separaten Thread?
:
Bearbeitet durch User
STK500-Besitzer schrieb: > Martin H. schrieb: >> Hallo, ich würde gerne herausfinden mit welcher Logic die Steuereinheit >> eines Dartautomaten die Matrix abscannt. Kann mir dabei jemand >> behilflich sein? > > Jedes Feld hat einen eigen Tastkontakt. > Die fragt man der Reihe nach, umlaufend ab. > Wie jede andere (Matrix-)Tastatur auch. Wie meinst du der Reihe nach. Es sind 16x4 Felder. Kann ich das irgendwie überprüfen? Könntest du mir ein Bespiel dafür geben? Wegstaben V. schrieb: > Martin H. schrieb: >> mit welcher Logic die Steuereinheit eines Dartautomaten die Matrix >> abscannt. > > hatten wird doch erst vor Kurzem .. > > Beitrag "Dart Matrix auslesen" > >> Kann mir dabei jemand behilflich sein? > > danke, gerne > > PS: Warum einen separaten Thread? So ähnliches ist es.
Martin H. schrieb: > Wie meinst du der Reihe nach. Es sind 16x4 Felder. Kann ich das > irgendwie überprüfen? > > Könntest du mir ein Bespiel dafür geben? Ich habe das mal für dich gegoogelt: Beitrag "Matrix-Tastatur"
Martin H. schrieb: > Kann ich irgendwie den Scanrhytmus überprüfen? versuche mal genauer zu beschreiben, was dein Problem ist (also was du genau NICHT weisst)
Konkret habe ich Arduino und möchte gleichzeitig das Signal der Dartmatrix an das Steuergerätes des Dartautomaten und den Arduino hängen. Dafür müsste ich den Arduino mit dem Scanrhytmus des Steuergerätes synchronisieren. Ich habe dafür auch einen Logic Analysator zur Verfügung. Leider sind all meine Versuche bisher ohne 100%igen Erfolg gewesen. Deshalb muss ich herausfinden wann und wie oft das Steuergerät die Pins abfragt und mich daran synchronisieren.
Martin H. schrieb: > Deshalb muss ich herausfinden wann und wie oft das Steuergerät die Pins > abfragt und mich daran synchronisieren. Normalerweise werden bei einer Matrix Zeilen und Spalten gebildet. Man kann zwar von außen sehen, welche Spalte gerade aktiv geschaltet ist, wann aber welcher Taster (Zeile) eingelesen wird sieht man nicht. Hast du denn den Schaltplan von dem Ding? Wenigstens von der Matrix? Vorher geht sowieso nichts.
https://www.darts1.de/dartautomat/Royal-Dart-Profi-1988-03.pdf hier hätte ich eine Doku zur Verfügung.
https://www.darts1.de/dartautomat/Royal-Dart-Profi-1988-03.pdf hier hätte ich eine Doku zur Verfügung. Cyblord -. schrieb: > Man kann zwar von außen sehen, welche Spalte gerade aktiv geschaltet ist, > wann aber welcher Taster (Zeile) eingelesen wird sieht man nicht. Das ist der springende Punkt. Wie finde ich das heraus ?
:
Bearbeitet durch User
Martin H. schrieb: > Das ist der springende Punkt. Wie finde ich das heraus ? Gar nicht. Musst du aber auch nicht. Sobald die Spalte aktiv geschaltet wurde, kannst du selbst alle Taster einlesen. Wann der Automat das tut kann dir egal sein. Wenn es sich überhaupt um eine Matrix handelt.
Könntest du mir erläutern wie das funktioniert? Ohne ein Output Befehl zu nutzen.
:
Bearbeitet durch User
ich hätte folgendes Beispiel parat:
1 | for (int x=0; x<4; x++) { |
2 | digitalWrite(PO_[0], HIGH); |
3 | digitalWrite(PO_[1], HIGH); |
4 | digitalWrite(PO_[2], HIGH); |
5 | digitalWrite(PO_[3], HIGH); |
6 | digitalWrite(PO_[x], LOW); |
7 | |
8 | for (int y=0; y<16; y++) { |
9 | bI[x][y] = digitalRead(PI_[y]); |
10 | // Wenn getroffen dann
|
11 | if (bI[x][y] == 0) { |
12 | WurfSchicken(x, y); |
13 | }
|
14 | }
|
15 | }
|
somit würde ich immer alles empfangen, jedoch ist es random welcher dieser 4 Pins gerade auf LOW ist.
Martin H. schrieb: > Könntest du mir erläutern wie das funktioniert? Ohne ein Output Befehl > zu nutzen. Ich glaube das wird bei dir nichts....
Ist es möglich ohne ein Output befehl zu nutzen ? Denn: Wenn ich Output Befehl nutze, störe ich das Steuergerät der Dartscheibe. Auf diesem Weg, wie oben im Beispiel habe ich das Problem bereits beschrieben. Etwas hilfe wäre nett :)
:
Bearbeitet durch User
Wäre es den nur über Output möglich? Ich habe dir eine Nachricht gesendet und hoffe sehr das du sie beantworten könntest :)
1 | int masterLines = 8; //Change here to the number of lines of your Master Layer |
2 | int slaveLines = 8; //Change here to the number of lines of your Slave Layer |
3 | int matrixMaster[] = {13, 12, 11, 10, 9, 8, 7, 6}; //Put here the pins you connected the lines of your Master Layer |
4 | int matrixSlave[] = {5, 4, 3, 2, A5, A4, A3, A2}; //Put here the pins you connected the lines of your Slave Layer |
5 | void setup() { |
6 | Serial.begin(9600); |
7 | Serial.println("OpenDarts"); //This line is not necessary, is just here for debug purposes |
8 | for(int i = 0; i < slaveLines; i++){ |
9 | pinMode(matrixSlave[i], INPUT_PULLUP); |
10 | }
|
11 | for(int i = 0; i < masterLines; i++){ |
12 | pinMode(matrixMaster[i], OUTPUT); |
13 | digitalWrite(matrixMaster[i], HIGH); |
14 | }
|
15 | }
|
16 | void loop() { |
17 | for(int i = 0; i < masterLines; i++){ |
18 | digitalWrite(matrixMaster[i], LOW); |
19 | for(int j = 0; j < slaveLines; j++){ |
20 | if(digitalRead(matrixSlave[j]) == LOW){ |
21 | Serial.print(j); |
22 | Serial.print(","); |
23 | Serial.println(i); |
24 | delay(500); |
25 | break; |
26 | }
|
27 | }
|
28 | digitalWrite(matrixMaster[i], HIGH); |
29 | }
|
30 | }
|
Das wäre eine Möglichkeit mit Output. Wenn ich diese nutze, funktioniert aber leider das Steuergerät des Automaten nicht mehr. Kennst du eine andere Lösung?
Hallo, du müsstest statt eines Output im loop die Werte einlesen statt ausgeben und damit feststellen, welche masterLine vom Steuergerät gerade auf high gezogen wird. Dann kannst du entweder direkt mit der nächsten masterLine weitermachen(continue), wenn diese masterLine nicht auf HIGH ist, oder die innere Schleife ablaufen lassen, wenn sie gerade auf HIGH ist. Hast du mit dem Logicanalyzer sehen können, nach welchem Muster das Steuergerät die masterLines selektiert? Einfach nacheinander? Sonst funktioniert es nicht ganz so einfach. Gruß Kilian
Martin H. schrieb: > Das wäre eine Möglichkeit mit Output. Wenn ich diese nutze, funktioniert > aber leider das Steuergerät des Automaten nicht mehr. Kennst du eine > andere Lösung? du musst mit einem Beobachtungs-Controller (fast) genau das nachbilden was das herkömmliche Steuergerät bzw der Haupt-Controller macht. Überlege, wie eine herkömmliche Matrix-Anordnung arbeitet: Sie besteht aus Zeilen und Spalten, und an dessen Kreuzungspunkt(en) kann ein Kontakt betätigt werden. "Typischerweise" werden nun z.B. in der Schaltung die Zeilen und Spalten mit einem Pullup-Widerstand permanent auf HIGH angehoben. Durch den auslesenden Haupt-Controller wird dann jeweils für eine kurze Zeit eine nach der anderen Zeile auf LOW runter gezogen. Dann werden die Spalten eingelesen. Sollte nun an einem (oder mehreren) Kreuzungspunkten "die Taste gedrückt sein" (oder durch deinen Dart-Pfeil ein Kontakt realisiert sein), dann kann man das feststellen: der oder die entsprechenden Spalten sind dann nämlich auch LOW. Mit "ein bichen Zauberei" werden nun noch ein paar Dinge softwaremäßig abgefangen: a) Tasten oder entsprechende Kontakte können Prellen. --> Man muss also eine Entprell-Routine haben b) Es können quasi Zeitgleich auch mehrere Tasten gedrückt sein (oder eine Taste ist gedrückt, dann wird noch eine weitere gedrückt) -> Diese Situation muss entsprechend "irgendwie" berücksichtigt werden. Stichwort: "n-key-rollover". WAS nun genau ein Kreuzungspunkt von Zeile oder Spalte "bedeutet", das muss der Haupt-Controller natürlich selber definieren (und entsprechende Aktionen einleiten): z.B. wurde die durch Betätigung von Zeile 3, Spalte 7 die Taste mit dem Buchstaben "A" gedrückt, oder das "Bulls Eye" Feld wurde getroffen. Nun sollte dir der Schritt "ohne Ausgabe" mit etwas nachdenken "klar sein": 1. Klemme an deinen Zeilen und Spalten der Dartscheiben-Matrix einfach parallel deinen "Beobachtungs-Controller" an. 2. lese und werte Zeilen und Spalten-Werte "geeignet" aus, z.B. so: a. lese regelmäßig die Zeilen-Werte ein. Wenn ein Wert ungleich "alle Zeilen-Bits sind HIGH" vorkommt, dann wird wohl der Haupt-Controller grade anfangen wollen, die Matrix abzuscannen b. warte ein Weilchen, und lese dann die Spaltenwerte ein. Danach geht es eigentlich weiter wie die Routine im Hauptcontroller. Mach dir Gedanken darüber, wie du die "mehrfach-Kontaktbetätigung" behandeln möchtest. Und mache dir Gedanken über die Deutung der eingelesenen Werte des Beobachtungs-Controllers (z.B. durch Betätigung von Zeile 3, Spalte 7 wurde die Taste mit dem Buchstaben "A" gedrückt, oder das "Bulls Eye" Feld wurde getroffen. WAS du mit dieser Erkenntniss machst in deinem Beobachtungs-Controller, ist dann die nächste Frage (z.B. über eine serielle Schnittstelle irgendwohin übertragen, oder einen Zähler hochsetzen etc.) Martin H. schrieb: > Kann ich irgendwie den Scanrhytmus überprüfen? Möglicherweise meinst du damit das Verfahren "überprüfen", wie eine Matrix eingescannt wird. Das hab ich grade beschrieben. Die Information darüber, das dieses Einscannen im Rythmus von 300 Millisekunden statt findet, ist hingegen eher wertlos.
:
Bearbeitet durch User
Martin H. schrieb: > Konkret habe ich Arduino und möchte gleichzeitig das Signal der > Dartmatrix an das Steuergerätes des Dartautomaten und den Arduino > hängen. Zwei Katzen sehen dieselbe Maus aber wie soll man mit den Augen einer Katze das Gehirn der anderen synchronisieren? Gar nicht - inkompatibel.
Mausen schrieb: > Zwei Katzen sehen dieselbe Maus aber wie soll man mit den Augen einer > Katze das Gehirn der anderen synchronisieren? ein nettes "Bild" (mit Katzen, Mäusen und Augen) welches du da aufspannst. Es stimmt jedoch nicht, dass die technische Aufgabenstellung "inkompatibel" ist, sofern du dieses "übertragen" mitteilen wolltest. Vielleicht kannst du dich eher mit Tieren als mit Technik aus, und gelangst daher zu deiner Einschätzung. Hier geht es darum, dass 2 Mikro-Controller "gemeinsam" eine Matrixanordnung auswerten. Dieses geht ohne weiteres in der Weise wie ich es beschrieben habe. Der zweite Controller "rennt" dabei in seiner Programmausführung/Matrixauswertung los, sobald der erste aktiv wird. Damit ist automatisch eine "Synchronisierung" gegeben. Beide Controller sollten zum selben Ergebnis gelangen, welcher Kreuzungspunkt der Matrix verbunden ist.
:
Bearbeitet durch User
Danke. Ich dachte eigentlich nicht das mir jemand antwortet. Folgendes Problem: Ich hänge mich direkt an die Pins, die die Matrix abfragen sollen, sprich den "Hauptcontroller". Nur Leider sind die 16 Pins dauerhaft HIGH und die 4 Pins der Matrix dauerhaft LOW. Was hat das zu bedeuten? Ich kann nicht feststellen, wie der Hauptcontroller die Pins abscannt.
Beitrag #6295122 wurde vom Autor gelöscht.
Martin H. schrieb: > Ich hänge mich direkt an die Pins Womit? Martin H. schrieb: > die 16 Pins > dauerhaft HIGH und die 4 Pins der Matrix dauerhaft LOW Manche Matrixauswertung legt statische Pegel an und wartet auf mindestens 1 Kontakt, bevor der Scan losläuft. Also mal einen Pfeil stecken.
Martin H. schrieb: > Danke. Ich dachte eigentlich nicht das mir jemand antwortet. > Folgendes > Problem: Ich hänge mich direkt an die Pins, die die Matrix abfragen > sollen, sprich den "Hauptcontroller". Nur Leider sind die 16 Pins > dauerhaft HIGH und die 4 Pins der Matrix dauerhaft LOW. Was hat das zu > bedeuten? Ich kann nicht feststellen, wie der Hauptcontroller die Pins > abscannt. Funktioniert denn der Automat ohne den angeschlossenen Arduino? Falls nicht hast du evtl mit deinen Experimenten die Logik des Automaten zerstört.
Mario M. schrieb: >> Ich hänge mich direkt an die Pins > > Womit? Mit dem Arduino. Ich hätte auch einen LA parat, der gibt mir aber auch die selben Ergebnisse zurück. Mario M. schrieb: > Manche Matrixauswertung legt statische Pegel an und wartet auf > mindestens 1 Kontakt, bevor der Scan losläuft. Also mal einen Pfeil > stecken. Das hört sich interessant an, ich glaube das ist genau mein Problem. Hättest du eine Idee wie ich das "Messen" kann? kenny schrieb: > Funktioniert denn der Automat ohne den angeschlossenen Arduino? > Falls nicht hast du evtl mit deinen Experimenten die Logik des Automaten > zerstört. Natürlich funktioniert er (zum glück) noch :) Mario M. ist glaube ich auf der richtigen Spur. Aber wie kann ich mich daran synchronisieren?
Gibt es evtl. zu diesem statischen Pegel irgendwelche Tutorials oder Beispiele?
https://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm Die Spaltentreiber werden alle auf Low gesetzt und der Controller in den Sleep-Mode geschickt. Die Zeilen werden über Pull-ups auf High gezogen. Wird jetzt irgendeine Taste gedrückt, geht eine der Zeilen auf Low, ein Interrupt wird ausgelöst und der Controller erwacht. Dann werden die Spaltentreiber auf High gesetzt und der Reihe nach immer eine Spalte auf Low gelegt und die Zeilen gelesen, bis die gesamte Matrix gescannt ist.
Martin H. schrieb: > Nur Leider sind die 16 Pins > dauerhaft HIGH und die 4 Pins der Matrix dauerhaft LOW. Was hat das zu > bedeuten? Also nach dem was ich aus der Beschreibung des Automaten, insbesondere aus der Fehlersuchtafel, so rauslese, dann würde ich vermuten, daß die Scheibenmatrix überhaupt nur dann abgescannt wird, wenn im korrekten Spielverlauf auch tatsächlich ein Pfeil geworfen (da sind nämlich auch noch Mikrofone und ein Ultraschallsensor mit im Spiel) wurde; außerdem gibts nach einen ein Selbsttest für die Scheibe, da dürfte die Matrix unabhängig von Wurfgeräuschen usw. gescannt werden. Also würde ich mal den Scheiben-Selbsttest aktivieren, dann sollte der Controller im Automaten eintlich die Scheibe abscannen und auf den 4 Pins die bisher dauernd LW waren müßte sich mal was tun. Wenn Du dann versuchst einzelne Segmente zu aktivieren dann sollte auch auf den anderen 16 Leitungen eine Aktivität erkennbar sein.
kann das tatsächlich eine einfache N mal N Matrix sein? Es kann ja mehr als ein Pfeil in einem Feld stecken und alle müssen erkannt werden.
Mario M. schrieb: > Die Spaltentreiber werden alle auf Low gesetzt und der Controller in den > Sleep-Mode geschickt. Die Zeilen werden über Pull-ups auf High gezogen. > Wird jetzt irgendeine Taste gedrückt, geht eine der Zeilen auf Low, ein > Interrupt wird ausgelöst und der Controller erwacht. Dann werden die > Spaltentreiber auf High gesetzt und der Reihe nach immer eine Spalte auf > Low gelegt und die Zeilen gelesen, bis die gesamte Matrix gescannt ist. Die Spaltentreiber sind in meinem Falle die 4 Pins richtig? Sprich: Wird eine der 16 Pins auf LOW gezogen, fängt die Steuereinheit an, die 4 restlichen Pins zu scannen richtig? Hättest du eine Idee wie ich mich daran synchronisieren kann? Ich hätte ein LA parat und könnte die alle möglichen Messungen durchführen. mIstA schrieb: > Also nach dem was ich aus der Beschreibung des Automaten, insbesondere > aus der Fehlersuchtafel, so rauslese, dann würde ich vermuten, daß die > Scheibenmatrix überhaupt nur dann abgescannt wird, wenn im korrekten > Spielverlauf auch tatsächlich ein Pfeil geworfen (da sind nämlich auch > noch Mikrofone und ein Ultraschallsensor mit im Spiel) wurde; außerdem > gibts nach einen ein Selbsttest für die Scheibe, da dürfte die Matrix > unabhängig von Wurfgeräuschen usw. gescannt werden. > > Also würde ich mal den Scheiben-Selbsttest aktivieren, dann sollte der > Controller im Automaten eintlich die Scheibe abscannen und auf den 4 > Pins die bisher dauernd LW waren müßte sich mal was tun. Wenn Du dann > versuchst einzelne Segmente zu aktivieren dann sollte auch auf den > anderen 16 Leitungen eine Aktivität erkennbar sein. Die Frage ob es sich um so eine Matrix handelt wie Mario M. beschrieben hat ist schon geklärt, er hat recht. Deshalb müsste ich im richtigen Betrieb herausfinden wie der Scanrhytmus stattfindet. ThomasW schrieb: > kann das tatsächlich eine einfache N mal N Matrix sein? Es kann ja mehr > als ein Pfeil in einem Feld stecken und alle müssen erkannt werden. Das ist unmöglich, du kannst 2 Pfeile gleichzeigt werfen, er wird dir nur eine Zahl zählen. Nach jedem erkannten Wurf hat die Steuereinheit ein delay von Ca. 100-200 ms, damit so etwas nicht vorkommt. Bleibt ein Feld stecken verlangt der Automat dieses zu entprellen bevor es weiter geht.
Hubii schrieb: > Das ist unmöglich, du kannst 2 Pfeile gleichzeigt werfen, er wird dir > nur eine Zahl zählen. Nach jedem erkannten Wurf hat die Steuereinheit > ein delay von Ca. 100-200 ms, damit so etwas nicht vorkommt. Bleibt ein > Feld stecken verlangt der Automat dieses zu entprellen bevor es weiter > geht. hab mich wohl blöd ausgedrückt: der erste Pfeil bleibt ja in der Scheibe, dieses Feld also belegt. Der wird vor dem zweiten Wurf auch nicht entfernt. Wie aber wird ein weiterer Pfeil in einer bereits belegten Koordinate/Kreuzung erkannt?
ThomasW schrieb: > Hubii schrieb: >> Das ist unmöglich, du kannst 2 Pfeile gleichzeigt werfen, er wird dir >> nur eine Zahl zählen. Nach jedem erkannten Wurf hat die Steuereinheit >> ein delay von Ca. 100-200 ms, damit so etwas nicht vorkommt. Bleibt ein >> Feld stecken verlangt der Automat dieses zu entprellen bevor es weiter >> geht. > > hab mich wohl blöd ausgedrückt: der erste Pfeil bleibt ja in der > Scheibe, dieses Feld also belegt. Der wird vor dem zweiten Wurf auch > nicht entfernt. Wie aber wird ein weiterer Pfeil in einer bereits > belegten Koordinate/Kreuzung erkannt? Der Kontakt der Spalten und Zeilen erfolgt nur solange die Bewegungsenergie den Pfeil in die Kunststoff Segmente drückt. Hängt ein geworfener Pfeil im Segment wird kein Kontakt ausgelöst. Wird ein Segment später von einem zweiten Pfeil getroffen, wird wieder der Kontakt zwischen Spalte und Zeile ausgelöst. Um dies zu ermöglichen ist eine Gummimatte zwischen den Segmenten und der Matrix angebracht. Ps: @hubi meld dich mal per pn bei mir
Martin H. schrieb: > Nur Leider sind die 16 dauerhaft HIGH und die 4 Pins der > Matrix dauerhaft LOW. Wenn davon nur 4 Pins zur Matrix gehören, wozu dienen dann die anderen 12 Pins? Und wo sind die restlichen Pins der Matrix (es müssen logischerweise mehr als 4 sein). > Was hat das zu bedeuten? Das du dir noch gar nicht über die Schaltung im Klaren bist und wie die Matrix arbeitet. Und dass du mit deiner Software schon 5 Schritte zu weit bist. Baust du beim Haus zuerst das Dach, und zum Schluss das Fundament?
ThomasW schrieb: > hab mich wohl blöd ausgedrückt: der erste Pfeil bleibt ja in der > Scheibe, dieses Feld also belegt. Der wird vor dem zweiten Wurf auch > nicht entfernt. Wie aber wird ein weiterer Pfeil in einer bereits > belegten Koordinate/Kreuzung erkannt? Weißt du eigentlich wie das Prinzip einer Dartscheibe ist? Es werden ja nicht nicht die Pfeile auf die Matrix gedrückt, sondern ein Feld. Die Pfeile drücken also ein Feld in die Matrix. Somit können 100 Pfeile in einem Feld stecken, das macht kein unterschied, da es immer entprellt wird.
Die Matrix hat 4 Eingänge, die auf Low liegen. Alle 16 Ausgänge der Matrix liegen über Pullups auf High. Einige Ausgänge gehen auf ein NAND, dessen Ausgang auf die INT-Leitung des Prozessors geht. Darüber wird der Prozessor über einen Treffer informiert. Dann scannt er die Matrix und liest die Daten über die LS244 ein.
4 Reihen (aktiv getrieben) 16 Spalten (mit Pull-Up, also Low bei Betätigung) Also hast du 16 Leitungen, die du beobachten musst. Geht eine davon auf Low, schaust du nach, welche der vier Reihen gerade aktiv (Low) ist. Dann hast du beide nötigen Infos: Reihe und Spalte. Die Idee mit den Nand Gattern und dem Interrupt kannst du 1:1 übernehmen. Vorausgesetzt natürlich, dass diese Schaltung die Mario gezeigt hat mit Martins Gerät überein stimmt.
Die Schaltung ist aus oben verlinktem Handbuch. Bei genauerer Betrachtung scheint der zweite Teil mit dem NAND-Gatter nicht zur Matrixauswertung zu gehören, also fällt die Erklärung mit dem Interrupt weg. @hubii: Klemm doch mal den Logikanalysator an P1.0 bis P1.3 und drücke auf die Matrix.
:
Bearbeitet durch User
Hier hast du mal ein paar Bilder die mit einem LA aufgezeichnet wurden. Darauf sieht mal welche Pins ich angeschlossen habe und was bei einem Impact passiert.
Ich habe so etwas vor langer zeit mehrfach mit 74LS574 gelöst. Tastatur abetrennt. Selbst ausgelesen. 574er gefüllt. Mit den 574er Matrix simuliert. Mit dem Spaltenimpuls an der Matrix auf /OC die jeweils passenden Daten auf den Zeilenbus gegeben. Also quasi ein dual port RAM nachgebildet. Hatte damals 8 Stück verbaut da 8x8 Matrix. Bei 4x16 kann man wohl Analog vorgehen. Bei deiner Sleep und Interruptgesteuerten Variante müssen die Ausgänge der 574er wohl noch per Dioden entkoppelt werden.(hatte ich auch einmal).
Einer schrieb: > Ich habe so etwas vor langer zeit mehrfach mit 74LS574 gelöst. > Tastatur abetrennt. > Selbst ausgelesen. Das ist das, was ich vermeiden möchte. Ich möchte nichts abtrennen sondern eigentlich nur die Logik des Automaten kopieren, sodass das Arduino einfach nur zuhören kann, falls das überhaupt möglich ist mit dieser Logik, denn bisher habe ich schon einiges gehört, aber eine Lösung wusste keiner.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.