Im nachfolgenden Artikel wird beschrieben, wie sich mit Hilfe eines Arduino Leonardo (oder kompatiblem Board) und einem analogen Beschleunigungssensor eine einfache Bewegungssteuerung für den PC realisieren lässt, die als Tastatur erkannt wird. Der vorgestellte Sketch ist dabei bewusst sehr einfach gehalten, da hier primär ein Grundgerüst für eine Bewegungssteuerung gezeigt werden soll, das sich einfach erweitern und umbauen lässt.
Mit diesem Beispiel soll gezeigt werden, wie sich die Tastaturfunktion des Arduino Leonardo sinnvoll einsetzen lässt.
1. Benötigte Komponenten
- Arduino Leonardo (oder kompatibles Board): ab ca. 5€
- analoger Beschleunigungssensor; hier verwendet: ADXL335: ab ca. 1,50€
- USB-Kabel, PC
2. Aufbau der Schaltung
Um den Aufbau der Schaltung zu beschreiben, habe ich eine kleine Skizze dazu angefertigt:
Der zugehörige Schaltplan sieht wie folgt aus:
Und in Tabellenform:
Arduino | ADXL335 |
3V3 | VCC |
GND | GND |
A2 | Y |
A3 | X |
3. Software
Wie eingangs erwähnt, ist der Sketch sehr kurz gehalten. Der Code sollte selbsterklärend sein, wo nötig wurden Kommentare verwendet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // variables for x and y values int x, y; // connect x to analog 3 and y to analog 2 const int xpin = A3; const int ypin = A2; // constants for threshold recognizing up, down, left or right movement const int thr_x_down = 310; const int thr_x_up = 340; const int thr_y_left = 350; const int thr_y_right = 320; void setup() { Keyboard.begin(); } void loop() { x = analogRead(xpin); if (x>thr_x_up){ Keyboard.write(KEY_UP_ARROW); } else if (x<thr_x_down){ Keyboard.write(KEY_DOWN_ARROW); } y = analogRead(ypin); if (y>thr_y_left){ Keyboard.write(KEY_LEFT_ARROW); } else if (y<thr_y_right){ Keyboard.write(KEY_RIGHT_ARROW); } delay(50); } |
Die Schwellwerte für die Bewegungen habe ich bei meinem Sensor durch ausprobieren ermittelt, ab wann es sich „natürlich“ anfühlt, dass eine Bewegung ausgeführt wird. Diese Werte können je nach Sensor unterschiedlich sein – je nach Kalibrierung.
Wenn der Arduino mit dem Sensor nun an den PC angeschlossen wird, wird er als Eingabegerät erkannt und der Beschleunigungssensor kann dann als Steuergerät verwendet werden. Durch Neigen des Sensors kann jetzt auf Webseiten gescrollt werden oder 360° Panoramen gesteuert werden.
Viel Erfolg bei der Umsetzung und viel Freude beim Experimentieren mit der HID-Funktion des Arduino Leonardo!
Bei Fragen, Problemen oder Anregungen könnt ihr natürlich wie immer das Kommentarfeld unten verwenden.