kk logo

Mit einem "Daumen" Joystick kann man viel machen, Spiele spielen, Ferngesteuerte Autos fahren lassen und vieles vieles mehr.  In Arudblock in den Blocks von "seeed studio grove" finden sich zwei Blocks mit denen der Daumen Joystick von Grove ausgelesen werden kann. Natürlich kann man in der Arduino IDE noch mehr mit dem Joystick machen aber die Blöcke in Ardublock können alle Grundlegende dinge.

0 grove thum stick tutorial led

 

 Funktion des Joystick

Wird der Joystick in eine Richtung bewegt, dann ändert sich der Widerstand des Poti im Joystick. Dadurch ändert sich die Spannung am analogen PIN. Diese Änderung kann dann über eine Variable gespeichert und kann dann angezeigt und weiterverarbeitet werden.

Der Joystick ist in X und Y aufgeteilt. Wird er zum Beispiel nach oben gedrückt ändert sich der Wert Y von ca. 510 bis 790. Das kann aber in jede Richtung um 5-10 Punkte variieren. Über diese Änderung weiß der Arduino in welche Richtung der Joystick bewegt wird. Für den Preis ist der Stick völlig in Ordnung. Allerdings kann sich Wert eben geringfügig unterscheiden.

1 ardublock tutorial grove joystick arduino

Anschluss und auslesen des grove Joystick

Um die X und die Y Achse des Joystick auszulesen und zu speichern. Muss der Block zwei mal in eine Variable mit anderem Namen eingefügt werden. Ich nenne sie der Einfachheit wegen immer XXX und YYY so weiß ich immer gleich in welche Richtung der Stick bewegt werden muss.

Im Beispiel unten wird X Achse in der X Variablen gespeichert und die Y Achse in der Y Variablen gespeichert. Um zu sehen welche Werte der Stick liefert und um zu sehen wie so ein Stick funktioniert lasse ich die Werte im serial Monitor anzeigen. Da das viel zu schnell geht habe ich eine delay Zeit von 1000ms mit in den Code gemacht. Besser ist es die Ergebnisse auf einem Display anzuzeigen. Hier kann das Ergebnis in zwei Zeilen dargestellt werden. Habt ihr hier ein bischen rumprobiert dann die delay Zeit auf 100ms verkürzen.

2.1 ardublock tutorial grove joystick arduino

Der Joystick wird an einen der analogen PINs angeschlossen, da ich das Grove Shild verwende muss ich nur einen Stecker einstecken wenn ein Breadbord verwendet muss zwei analoge PINs verwenden. Das wird deutlich wenn man sich den Sketch anschaut den Ardublock erzeugt. Es ist nur ein Block und man kann auch nur einen analogen PIN auswählen, da der grove Stecker automatisch zwei analoge PINs verwendet. Verwendet man das shild nicht muss eben A0 und A1 eingesteckt werden.

1.1 ardublock tutorial grove joystick arduino

Hier die Anzeige auf dem OLED Display, leider habe ich der X Variablen den falschen Namen geben und das erst auf dem Bild gesehen :-).... 

2.2 ardublock tutorial grove joystick arduino

 Im Beispiel unten muss die X Variable ganz unten natürlich auch X heißen.  Rechts im serial Monitor schön die Werte zu sehen, die sich bei einer Bewegen des Joystick ergeben. !!! Die 1000ms sind nur damit im serial Monitor etwas zu sehen ist. Später ruhig mal mit 100ms probieren und dann in der Praxis ganz weg lassen. Besser ist immer ein Display mit zwei Zeilen.

3 ardublock tutorial grove joystick arduino

 Taster des grove Joystick auslesen

Drückt man in Nullstellung des Joystick den nach unten hat man einen Taster. Für diese Aktion gibt es einen separaten Block im Programm. Einen Taster Block. In der Halbmond Form kann man schon erkenne dass dieser Block in an einen "falls" Block gehört. Damit wird er wie ein Taster an einem digitalen PIN verwendet.
Allerdings ist es, wenn der Taster gedrückt wird, das die X Achse dann einen Wert von 1023 ausgibt. Zu sehen rechts im serial Monitor. Im wenn der Taster gedrückt wird erscheint nicht nur der EIN Text sonder auch die 1023, das sollte im Falle einer Verwendung von Stick und Taster ggf. bedacht werden.

4 ardublock tutorial grove joystick arduino

 Projekt RGB LED mit Joystick steuern

Als Beispiel habe ich mir ein kleiner Bespiel bzw. eine kleine Übung ausgedacht um den Joystick besser zu verstehen. Da die Werte in der Variablen ja immer "umgerecht" werden müssen um damit etwas anzufangen. Der Joystick steuert die drei Farben der RGB LED so an dass sie von dunkel nach hell blenden und der vierte Weg des Tasters blendet die RGB LED dann weiß ein. 

5.1 ardublock tutorial grove joystick arduino

 Im SETUP Teil gibt es nur die beiden Blöcke für die RGB LED. Die an PIN D7 und D8 angeschlossen wird.
Im LOOP Teil dann beginnt es damit dass ich die beiden Taster auslesen, wie ich es schon eben gemacht habe. Das Ergebnis zeige ich auf einem OLED Display an, hier kann aber auch dier serial Monitor verwendet werden.

5.2 ardublock tutorial grove joystick arduino

 Im nächsten schritt beginnt nun das eigentlich auslesen. Das bestimmen der Achse ist nicht schwer, da ich einfach den Namen der Variablen abgeben muss. Damit im Programm aber klar wird ob der Taster nach oben oder unten bewegt wird muss ich eine Abfrage haben ob ich zwischen 500&800 oder zwischen 490&220 bin. Das mache ich indem ich in einen "teste" Block die kleiner als Bedingung verwende. Ist X größer als 490 dann bewege ich mich nach oben. Ist X kleiner als 490 dann bewege ich mich nach unten. So kann ich nun bestimmen in welche Richtung mein Stick bewegt wird. Nun muss ich nur noch meine LED Farbe auswählen die gedimmt werden soll und dort den Wert des Stick über einen zuordnen Block auf den Ausgang von 0-255 bringen. Nach dieser Zuordnung kann die LED den Wert dann in eine "Helligkeit" umsetzen.

6 ardublock tutorial grove joystick arduino

 Das ganze mache ich nun für die beiden anderen 2 Farben auch noch. Für das weiß muss ich alle Farben gleich wählen, da alle Farben zusammen weiß ergeben.
Ist der Joystick in Nullstellung sorgt der letze Block dafür dass die RGB LED aus geht.

7 ardublock tutorial grove joystick arduino

 Zum Schluss noch das immer wieder eingefügte Unterprogramm. Ich habe die "solange" Blöcke verwendet da die LED sonst flackern würde. Muss ich in jedem solange Block natürlich auch meinen Joystick abfragen. Sonst würde die LED einmal angehen und sich dann nie wieder etwas verändern. Diese Abfrage ist in jedem Block gleich und deshalb in einem Unterprogramm, genau so wie die Anzeige der Variablen.

8 ardublock tutorial grove joystick arduino

King of my heart

Let the King of my heart
Be the mountain where I run
The fountain I drink from
Oh, He is my song

Ronnie

schwäbischer tüftler und bastler, kraftsportler, ADHS power, 43 Jahre, 1 Frau, 5 Kinder und 1003 Ideen. 

ronnie berzins at mee