Lauf­licht Gestensensor

# 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: 25. Jul 2023 @ 18:58