
Der APDS-9960 analysiert mit Hilfe einer Infrarot-LED Bewegungen in seinem Sichtbereich. Dabei kann er vier Richtungen (links, rechts, nach oben, nach unten) unterscheiden, die Handbewegungen vom Sensor weg und zum Sensor hin erkennen und die Farben Rot, Grün und Blau „sehen“.
Er wird über I2C angesteuert.

- bewegt sich ein Objekt über dem Sensor von links nach rechts, startet das Lauflicht von links nach rechts
- streicht ein Objekt von rechts nach links über den Sensor, bewegt sich das Lauflicht von rechts nach links
- eine Bewegung von unten nach oben schaltet alle LEDs ein
- wird ein Objekt von oben nach unten über den Sensor geführt, werden alle LEDs ausgeschaltet
So sieht es aus:
Benötigte Bauteile:
- 7 LEDs
- 7 Widerstände 220 Ω
- Leitungsdrähte
- APDS-9960
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)

Der Sensor muss zwingend an 3,3 V angeschlossen werden.
Achte auf die Anordnung der Pins, die sich je nach Modell unterscheiden können.
Benötigte Bibliothek:

Binde die benötigte Bibliothek ein und definiere die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include “Arduino_APDS9960.h” // Array für die LEDs mit ihren Pins byte LED[8] = {3, 4, 5, 6, 7, 8, 9}; // Anzahl der LEDs ermitteln byte LEDMax = sizeof(LED); // Leuchtdauer einer LED int Leuchtdauer = 200; // Status der LED: ein -> true, false -> aus bool Status; |
Der setup-Teil. Beachte die Kommentare.
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 | void setup() { for (int i = 0; i < LEDMax; i++) { pinMode(LED[i], OUTPUT); } Serial.begin(9600); // APDS.begin() -> Sensor starten // wenn der Start misslingt -> Mitteilung anzeigen if (!APDS.begin()) { Serial.println(“Sensor nicht entdeckt, bitte Kabel testen!”); } else Serial.println(“Initialisierung erfolgreich!”); /* GestureSensitivity -> Empfindlichkeit: je höher der Wert, desto empfindlicher, allerdings kann dann eine falsche Geste entdeckt werden Standardwwert: 80 */ APDS.setGestureSensitivity(60); Serial.println(“Gesten entdecken …”); } |
Der loop-Teil. Beachte die Kommentare.
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 41 42 43 44 45 46 47 48 49 50 51 52 | void loop() { if (APDS.gestureAvailable()) { /* Konstanten für die Gesten: GESTURE_UP -> nach oben GESTURE_DOWN -> nach unten GESTURE_LEFT -> nach links GESTURE_RIGHT -> nach rechts */ int Geste = APDS.readGesture(); switch (Geste) { case GESTURE_UP: Serial.println(“oben”); LEDSchalten(true); break; case GESTURE_DOWN: Serial.println(“unten”); LEDSchalten(false); break; case GESTURE_RIGHT: Serial.println(“links”); // alle LEDs ausschalten LEDSchalten(false); for (int i = 0; i < LEDMax; i++) { digitalWrite(LED[i], HIGH); delay(Leuchtdauer); digitalWrite(LED[i], LOW); } break; case GESTURE_LEFT: Serial.println(“rechts”); // alle LEDs ausschalten LEDSchalten(false); for (int i = LEDMax - 1; i >= 0; i–) { digitalWrite(LED[i], HIGH); delay(Leuchtdauer); digitalWrite(LED[i], LOW); } break; } } } |
Jetzt fehlt nur noch die Funktion LEDSchalten(). Ihr wird als Parameter true oder false übergeben. Alle LEDs werden entweder eingeschaltet (true) oder ausgeschaltet (false).
1 2 3 4 5 6 7 | void LEDSchalten(bool Status) { for (int i = 0; i < LEDMax; i++) { digitalWrite(LED[i], Status); } } |
Verwandte Anleitungen:
- Alarmanlage mit einem Bewegungsmelder
- Alarmanlage mit einem Fotowiderstand
- Alarmanlage mit einem Gesten-Sensor
- Alarmanlage mit dem Hall-Sensor KY-024
- Alarmanlage mit einer Lichtschranke
- Automatische Tür mit Hall-Sensoren
- Klopfzeichen mit einem piezoelektrischen Keramik-Sensor
Letzte Aktualisierung:






