Forum: Mikrocontroller und Digitale Elektronik 82 Taster am Arduino


von Holger S. (tuctuc)


Lesenswert?

Ich würde gerne eine Dartscheibe auslesen, diese hat bekanntlich 82 
Felder (mit eigentlich 180 "Tastern").

Jedes Feld ist ein Taster.

Nun überlege ich wie ich diese sinnvoll mit einem Arduino micro auslese.

A mit einer Matrixschaltung (wie bei einem Zahlenkeyboard) 9*9 Matrix 
(81 "Tasten" +1) 9+9+1=19 Pinne.

B Register 74HC 165  8bit also 11 Stück und die brauchen 3 Pinne?

C Matrix mit 2 Registern 2*3Pinne?

Die Pinne werden ja nur sehr sehr kurz gedrückt, also müssen die 
"Taster" sehr schnell abgefragt werden.

Was ist nun die idealste Lösung?





Und ich brauche irgendetwas, das mir die Daten über 10m an den Laptop 
sendet, idealerweise würde ich gerne ein Funkmodul nutzen wenn ich noch 
genug Pinne über hab.

von MaWin (Gast)


Lesenswert?

Holger Schulte schrieb:
> Was ist nun die idealste Lösung?

Man baut eine Matrix, z.B. 8 x 11.

Alle 11 werden Ausgänge und auf Lo geschaltet
die 8 werden Eingänge mit pull up.
Nun wartet man bis irgendein Eingang durch Schliessen des Tasters auf Lo 
gezogen wird, beispielsweise durch pin change Interrupt.
Daraufhin schaltet man alle 11 Ausgänge um auf Eingang mit pull up, die 
8 Eingänge werden ein Ausgang und der, der die Taste bemerkt hat, kommt 
auf Lo, die anderen auf Hi.
Nun schaut man, welcher der 11 Eingänge auf Lo gezogen wird, an der 
Kreuzungsstelle liegt die gedrückte Taste. Die Erkennung dauert bei 
einem 16MHz AVR ca. 2 Mikrosekunden. Erkennt man nach Umschalten keine 
Taste, hat es nur geprellt, fang von vorne an und warte auf die ganze 
Taste.

von Max H. (hartl192)


Lesenswert?

Holger Schulte schrieb:
> Und ich brauche irgendetwas, das mir die Daten über 10m an den Laptop
> sendet, idealerweise würde ich gerne ein Funkmodul nutzen wenn ich noch
> genug Pinne über hab.
Dafür würde ich ein Bluetooth Modul verwenden.

MaWin schrieb:
> Die Erkennung dauert bei
> einem 16MHz AVR ca. 2 Mikrosekunden
Sicher, dass das mit dem Overhead des Arduinos nicht viel länger dauert?
Die Lösung finde ich gut.

P.S. die Mehrzahl von Pin ist Pins

: Bearbeitet durch User
von Reinhard Kern (Gast)


Lesenswert?

Holger Schulte schrieb:
> Ich würde gerne eine Dartscheibe auslesen, diese hat bekanntlich 82
> Felder (mit eigentlich 180 "Tastern").

Sind die nicht schon intern verschaltet? Sonst müssten da ja 360 Kabel 
raushängen.

Gruss Reinhard

von Karl H. (kbuchegg)


Lesenswert?

Max H. schrieb:

> Sicher, dass das mit dem Overhead des Arduinos nicht viel länger dauert?

Wenn du mit digitalRead und digitalWrite rummachst dann schon.
Aber - das muss man ja nicht. Man kann ja auch direkt an die Ports 
gehen.

von Cyblord -. (cyblord)


Lesenswert?

Max H. schrieb:

> Sicher, dass das mit dem Overhead des Arduinos nicht viel länger dauert?
> Die Lösung finde ich gut.

Wen interessierts? Nimmt man ungeeignete Werkzeuge, dann bekommt man 
entsprechende Ergebnisse. Meinst du da hat jemand Mitleid?
Außerdem leist man doch immer, man kann auch direkt alles in C machen. 
Man muss ja die lahmen digitalXXXX Funktionen nicht nehmen. Stimmt. Dann 
soll er mal machen. Wenn er das nämlich könnte, würde er gar keinen 
Arduino nutzen.

gruß cyblord

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Nimm doch einen Tastatur Controller, der kann noch mehr Tasten, ist 
schnell genug und hat auf der anderen Seite eine I2C ähnliche 
Schnittstelle.

Projekte um eine Computer Tastatur an einen AVR zu fummeln gibt es im 
Netz und fertig.

Grüße aus Berlin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Holger Schulte schrieb:
> Die Pinne werden ja nur sehr sehr kurz gedrückt, also müssen die
> "Taster" sehr schnell abgefragt werden.

Wieso? Bleiben die Darts nicht in der Scheibe stecken?

von Cyblord -. (cyblord)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Holger Schulte schrieb:
>> Die Pinne werden ja nur sehr sehr kurz gedrückt, also müssen die
>> "Taster" sehr schnell abgefragt werden.
>
> Wieso? Bleiben die Darts nicht in der Scheibe stecken?

Doch aber dabei bleiben die Taster nicht gedrückt. Zumindest bei allen 
solchen Scheiben die ich je gesehen hab.

von Dominik R. (vision)


Lesenswert?

Ich glaube, dass die Darts stecken bleiben heisst nicht, dass die Taster 
gedrückt bleiben. Die Darts stecken dann nur in einem "Netz"? fest, der 
Taster wird aber nur beim Einschlag des Darts auf der Scheibe kurz 
betätigt. Sonst fürde es ja auch nicht funktionieren, dass man zwei oder 
drei mal auf das gleiche Feld wirft und die Punkte für dieses Feld dann 
zwei oder drei mal gezählt werden.

: Bearbeitet durch User
von Holger S. (tuctuc)


Lesenswert?

Reinhard Kern schrieb:
> Holger Schulte schrieb:
>> Ich würde gerne eine Dartscheibe auslesen, diese hat bekanntlich 82
>> Felder (mit eigentlich 180 "Tastern").
>
> Sind die nicht schon intern verschaltet? Sonst müssten da ja 360 Kabel
> raushängen.
>
> Gruss Reinhard

Ja und nein, normalerweise werden da Folientastaturen verwendet.

Meine Scheibe ist allerdings selbstgebaut.
Ich habe auch schon mal eine Schaltung mit 41 Bi-FlipFlops und LED's 
gebaut, die Folientastatur war da schon nicht so dolle.



cyblord ---- schrieb:
> Max H. schrieb:
> Dann
> soll er mal machen. Wenn er das nämlich könnte, würde er gar keinen
> Arduino nutzen.
>
> gruß cyblord


da liegst du richtig, eine schöne Lösung wenn man das kann aber wenn ich 
so tief in der Materie wäre, würde ich nicht mit dem Arduinoboard 
rumspielen.




Rene Schube schrieb:
> Nimm doch einen Tastatur Controller, der kann noch mehr Tasten,
> ist
> schnell genug und hat auf der anderen Seite eine I2C ähnliche
> Schnittstelle.
>
> Projekte um eine Computer Tastatur an einen AVR zu fummeln gibt es im
> Netz und fertig.
>
> Grüße aus Berlin



Das war mein zweiter Versuch mit einem umgebauten Logitech 
Funktastaturcontroller.

eine Tastatur hat aber nicht 82 unterschiedliche Tasten, deren 
"Tastendruck" ich abfangen kann, ich komme glaub au 76 und da hab ich 
schon welche genutzt die ziehmlich uncool sind wie die Windowstaste

oder wäre der AVR dann nicht als HID angebunden?



Dominik R. schrieb:
> Ich glaube, dass die Darts stecken bleiben heisst nicht, dass die
> Taster
> gedrückt bleiben. Die Darts stecken dann nur in einem "Netz"? fest, der
> Taster wird aber nur beim Einschlag des Darts auf der Scheibe kurz
> betätigt. Sonst fürde es ja auch nicht funktionieren, dass man zwei oder
> drei mal auf das gleiche Feld wirft und die Punkte für dieses Feld dann
> zwei oder drei mal gezählt werden.


genau so ist es ;-)







Also mir gefällt die Matrixlösung eigentlich am besten.

http://arduino.ru/sites/default/files/u1905/spi-keypad.jpg

da ist sogar eine Matrix mit 2 Registern  74HC165 und 74HC595, scheinbar 
den 595 um den internen Pullup verwenden zu können

aber der Artikel ist auf russisch -.-

Grüße

Holger

von innerand i. (innerand)


Lesenswert?

cyblord ---- schrieb:

> Wenn er das nämlich könnte, würde er gar keinen
> Arduino nutzen.

Warum würde er dann gar kein Arduino nutzen?
Mit einem Arduino bekommt man immerhin ein fertig bestücktes Board zu 
einem günstigen Preis (und das auch noch in verschieden Formfaktoren).

Also bei (sehr) geringen Stückzahlen spricht meiner Meinung nach nichts 
dagegen ein Arduino zu verwenden.

von Cyblord -. (cyblord)


Lesenswert?

innerand innerand schrieb:
> cyblord ---- schrieb:
>
>> Wenn er das nämlich könnte, würde er gar keinen
>> Arduino nutzen.
>
> Warum würde er dann gar kein Arduino nutzen?
> Mit einem Arduino bekommt man immerhin ein fertig bestücktes Board zu
> einem günstigen Preis (und das auch noch in verschieden Formfaktoren).

Dieses "Hammerargument" kannst du in den "Arduino bringts das?" Thread 
zu den anderen 50 Postern hinzufügen, die exakt das gleiche sagen. 
Sprich: Echt Originell.
Dort findest du auch genug Entgegnungen darauf. Eine weitere Diskussion 
mit noch einem "Arduino ist doch nur ein Board und man kann es auch so 
nutzen"-Typen steh ich nicht durch ohne Schrotflinte und freiem 
Schußfeld... äh.. ich meine direkten Blickkontakt.

von Ulrich F. (Gast)


Lesenswert?

Dart? Was ist das?
(ok, ich weiß, was das ist, aber mehr auch nicht)

Würde da wohl auch einen Arduino einsetzen.
(zu faul zum ätzen und löten)


Ansonsten, sehe ich da Probleme mit der Zeit. Nicht dass der kleine 
grade die falsche Zeile/Spalte abfragt, wenns links daneben 
einschlägt....
Die Idee mit den Flipflopps ist bestechend!!
Die nimmt einem die Zeitsorgen größtenteils ab.

von innerand i. (innerand)


Lesenswert?

cyblord ---- schrieb:

> Dieses "Hammerargument" kannst du in den "Arduino bringts das?" Thread
> zu den anderen 50 Postern hinzufügen, die exakt das gleiche sagen.
> Sprich: Echt Originell.
> Dort findest du auch genug Entgegnungen darauf. Eine weitere Diskussion
> mit noch einem "Arduino ist doch nur ein Board und man kann es auch so
> nutzen"-Typen steh ich nicht durch ohne Schrotflinte und freiem
> Schußfeld... äh.. ich meine direkten Blickkontakt.

Ok, Sie ranten in einen Thread also einfach mal pauschal gegen Arduinos 
ohne auch nur ein Argument mitzubringen warum die Verwendung eines 
Arduinos falsch sein soll und ohne dass die Plattform irgendwie zu 
Diskussion gestanden wäre.
Und wenn man dann nachfragt, warum es denn falsch sein soll, dann kommen 
Sie mit sowas daher?

Wenn Sie das nicht argumentieren können oder wollen, dann sparen Sie 
sich derartige Beiträge am besten ganz einfach. Dann gibt es auch keine 
weitere Diskussion die sie ja nicht durchstehen können (was ich mir 
übrigens sehr gut vorstellen kann).
Wenn sie das aber trotzdem tun, dann sind sie in meinen Augen ganz 
einfach ein Troll.

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Sollte der Arduino wirklich zu langsam sein, könnte man den Tastendruck 
in einem Kondensator Speicher.
Wenn die Taste gedrückt wird, wird der Kondensator innerhalb von 23µs 
(5t) auf 0V entladen. Der Kondensator, wird dann in 5ms auf 2V, der Typ. 
LOW-level input voltag des 74HC165 @4.5V, geladen. Man hat also viel 
Zeit um die Tasten abzufragen. In 4ms ist es leicht möglich 9*8bits über 
SPI aus den 74HC195 in den µC zu schieben. Und wenn eine Taste gedrückt 
wurde würde ich mit dem UART über ein Bluetooth Modul die Nummer der 
Taste in ASCII oder BCD an den PC senden.

von TucTuc (Gast)


Lesenswert?

Ulrich F. schrieb:
> Dart? Was ist das?
> (ok, ich weiß, was das ist, aber mehr auch nicht)
>
> Würde da wohl auch einen Arduino einsetzen.
> (zu faul zum ätzen und löten)
>
> Ansonsten, sehe ich da Probleme mit der Zeit. Nicht dass der kleine
> grade die falsche Zeile/Spalte abfragt, wenns links daneben
> einschlägt....
> Die Idee mit den Flipflopps ist bestechend!!
> Die nimmt einem die Zeitsorgen größtenteils ab.

man wird irre beim Löten der vielen FlipFlops vom Platz mal ganz 
abgesehen

und entprellen kann man da auch nicht via Software...


Ich benutze den Ardiuno zum testen, je nach dem wie viel Zeit und lust 
ich habe mach ich mir dann wohl noch ne Platine.
sonst wird die Konstruktion wohl sehr dick.

von TucTuc (Gast)


Lesenswert?

Max H. schrieb:
> Sollte der Arduino wirklich zu langsam sein, könnte man den
> Tastendruck
> in einem Kondensator Speicher.
> Wenn die Taste gedrückt wird, wird der Kondensator innerhalb von 23µs
> (5t) auf 0V entladen. Der Kondensator, wird dann in 5ms auf 2V, der Typ.
> LOW-level input voltag des 74HC165 @4.5V, geladen. Man hat also viel
> Zeit um die Tasten abzufragen. In 4ms ist es leicht möglich 9*8bits über
> SPI aus den 74HC195 in den µC zu schieben. Und wenn eine Taste gedrückt
> wurde würde ich mit dem UART über ein Bluetooth Modul die Nummer der
> Taste in ASCII oder BCD an den PC senden.


Hardwarelösung :-)

Die Idee find ich sehr gut

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
Noch kein Account? Hier anmelden.