


Der APDS-9960 analysiert mit Hilfe einer Infrarot-LED Bewegungen in seinem Sichtbereich. Dabei kann er vier Richtungen (links, rechts, nach vorn, nach hinten) 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.

Die LEDs sollen als Lauflicht arbeiten:
- 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
Benötigte Bauteile:
- 5 LEDs
- 5 Widerstände > 100 Ω
- 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:
Arduino IDE 1.8x:
Sketch → Bibliothek einbinden → Bibliotheken verwalten

Arduino IDE 2.x:

Binde die benötigte Bibliothek ein und definiere die Variablen:
# include <Arduino_APDS9960.h>
// Array mit 5 Elementen und den zugehörigen Ports
int LED[5] = {3, 4, 5, 6, 7, 8};
// Anzahl der LEDs ermitteln
int LEDMax = sizeof(LED) / sizeof(LED[0]);
int Leuchtdauer = 200;
bool Status;
Der setup-Teil. Beachte die Kommentare.
void setup()
{
for (int zaehler = 0; zaehler <= LEDMax; zaehler++)
{
pinMode(LED[zaehler], 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(80);
Serial.println("Gesten entdecken ...");
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// wenn der APDS-9660 erkannt wird
if (APDS.gestureAvailable())
{
// Geste lesen
int Geste = APDS.readGesture();
/*
Konstanten für die Gesten:
GESTURE_UP -> nach oben
GESTURE_DOWN -> nach unten
GESTURE_LEFT -> nach links
GESTURE_RIGHT -> nach rechts
*/
switch (Geste)
{
case GESTURE_UP:
Serial.println("oben");
LEDSchalten(true);
break;
case GESTURE_DOWN:
Serial.println("unten");
LEDSchalten(false);
break;
case GESTURE_LEFT:
Serial.println("links");
// alle LEDs ausschalten
LEDSchalten(false);
for (int zaehler = 0; zaehler < LEDMax; zaehler++)
{
digitalWrite(LED[zaehler], HIGH);
delay(Leuchtdauer);
digitalWrite(LED[zaehler], LOW);
}
break;
case GESTURE_RIGHT:
Serial.println("rechts");
// alle LEDs ausschalten
LEDSchalten(false);
for (int zaehler = LEDMax - 1; zaehler >= 0; zaehler--)
{
digitalWrite(LED[zaehler], HIGH);
delay(Leuchtdauer);
digitalWrite(LED[zaehler], LOW);
}
break;
}
}
}
Jetzt fehlt nur noch die Methode LEDSchalten(). Ihr wird als Parameter true oder false übergeben. Alle LEDs werden entweder eingeschaltet (true) oder ausgeschaltet (false).
void LEDSchalten(bool Status)
{
for (int zaehler = 0; zaehler < LEDMax; zaehler++)
{
digitalWrite(LED[zaehler], Status);
}
}
Verwandte Aufgaben:
- Alarmanlage mit einem Bewegungsmelder
- Alarmanlage mit einer Fotozelle
- Alarmanlage mit einem Gesten-Sensor
- Alarmanlage mit dem Hall-Sensor 3144
- Alarmanlage mit einer Lichtschranke
- Klopfzeichen mit einem piezoelektrischen Keramik-Sensor
- LEDs mit einem 4-Tasten Berührungssensor schalten
- Licht schalten mit einem Berührungssensor
- Licht schalten mit dem Hall-Sensor 1881
- Licht schalten mit einem Soundsensor
- Morsegerät mit einem Berührungssensor
Letzte Aktualisierung: