# include "Arduino_APDS9960.h"
// Array LEDs mit den jeweiligen Pins
byte LED[8] = {3, 4, 5, 6, 7, 8, 9};
// Anzahl der LEDs ermitteln
byte LEDMax = sizeof(LED);
int Leuchtdauer = 200;
// Status LED: false -> aus, true -> ein
bool Status;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// APDS.begin() -> Sensor starten
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(90);
Serial.println("Gesten entdecken ...");
for (int i = 0; i < LEDMax ; i++)
{
pinMode(LED[i], OUTPUT);
}
}
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;
}
}
}
void LEDSchalten(bool Status)
{
for (int i = 0; i < LEDMax; i++)
{
digitalWrite(LED[i], Status);
}
}
Letzte Aktualisierung: