12 Button-Board von Leiterkartenpiraten Integration in meinem Fork

Hallo,
ich habe jetzt die drei Taster jetzt mal eingebaut. Es wird aber immer ShortCut 3 abgespielt.
Für R1 habe ich 51kOhm, R2 5,1kOhm und R2 12kOhm verwendet.
Bei Taste 1 wird der Wert 0 angezeigt, bei Taste 2 der Wert 92 und bei Taste 3 der Wert 9.
In Circuit habe ich das mal Simuliert und da sollte für Taste 3 ein Wert von 195 raus kommen. Also mal gemessen und siehe da, Reichelt hat mir falsche Widerstände geschickt.
Aber die Taste 2 sollte ja funktionieren, was sie nicht macht.
Ich habe dann noch andere Widerstände und Werte probiert und mit 33kOhm wurde der Wert 401 angezeigt und Taste D.
Welche Werte muss ich haben für die Tasten? Im Code habe ich keine Werte gefunden.

Ich bin im Moment nicht zu Hause und kann da jetzt nichts nachprüfen. Ich melde mich wenn ich wieder zu Hause bin.

Danke - mach dir kein Stress :slight_smile:
Ich habe den ganzen Tage getestet, mit unzähligen Kombinationen von Widerständen.
Auf dem Steckboard habe ich auch mal 9 Taster aufgebaut um die Werte zu testen.
Wie es scheint, liegt es an der Map-Funktion. Ich habe die Werte von Button Board 3×3 – Quick Start Guide aufgebaut und die fangen mit 0,92,… an.
Bei deiner Funktion Matrix = map(Wert, 0, 1023, 1, 10) fangen die Werte aber mit 0,113,… an.
Wenn ich also bei Taste 2 den Widerstand für den Wert 92 genommen habe, bin ich immer noch im Bereich für Taste 1.
Der Wertebereich für Taste 2 ist von 113-227 und da wäre dann doch ein Wert in der Mitte um 170 besser oder?
Ich habe keine Ahnung davon aber so würde ich mir das erklären.
Auf dem Steckboard habe ich das mal getestet und es hat dann funktioniert.

Mir ist noch aufgefallen, dass die Werte im Button Board 3×3 – Quick Start Guide bei der AiO gleichmäßiger aufgeteilt sind im gegensatz zur Classic Version.

Also es ist so, dass die Mapfunktion den gesamten Wertebereich zwischen zwei Grenzwerten in gleich große Abschnitte aufteilt. Die Grenzwerte werden durch die ersten beiden Angaben festgelegt. Beim Arduino Nano kann dass von 0 bis maximal 1023 sein. 0 entspricht keine Eingangsspannung am Analogeingang ( Ground Potential) und 1023 der maximalen Referenzspannung ( 5 V beim Nano). Diese 1023 Werte werden jetzt in Bereiche aufgeteilt, die in den nächsten 2 Angaben festgelegt werden. In unserem Fall heißt das mögliche Anzahl der Tasten plus Zustand keine Taste gedrückt, also bei 9 Tasten plus Zustand keine Taste gedrückt , 10. Die map Funktion gibt jetzt nur den Bereich aus, der der gedrückten Taste entspricht, bzw bei keiner gedrückten Taste den Wert 10. Der direkte Auslesewert des Analogeingangs wird also hier nicht ausgegeben. Den kann der Code nur direkt ausgeben. Wenn also eine Taste gedrückt wird, ermittelt die Mapfunktion aus dem gelesenen Wert den Bereich, in dem der Wert liegt und gibt nur die Nummer des Bereiches aus. Liegt z.B der gelesene Wert bei z.B zwischen 0 und 100, entspricht das dem Bereich 1 und es wird 1 für Taste 1 (bei meinem Code Taste A) ausgegeben. Was dann passiert legt der Code für den Fall 1 fest.

1 „Gefällt mir“

Genau
Mit R1 100kOhm, R2 12kOhm und R3 22kOhm komme ich auf die Werte 0, 110 und 184. Die Bereiche sind aber rund 102 Groß, also funktionieret Taster 1 und 2, aber Taster 3 ist immer noch im Bereich für Taster 2.
Ich habe dann einfach 33kOhm genommen und damit funktioniert es :grinning:.
Danke für die Hilfe und die unendlichen Zeilen an Code :+1:.

Ja, sehr schön. War dir meine Erklärung denn eine Hilfe?

Eine Bestätigung …
Ich habe schon den ganzen Freitag das Internetz durchwühlt und dadurch auch wieder dazu gelernt.
Ich war mir dann aber nicht ganz sicher ob ich es richtig verstanden habe. Im der Simulation habe ich ja nur die Werte sehen können und wie es in deinem Code funktioniert war ich mir nicht ganz sicher.
Wenn man es aber verstanden hat, ist es viel einfacher :grinning:.

1 „Gefällt mir“