Startampel mit Arduino R3 und der Software Z-Round

Moin

Ich habe es hinbekommen.

IR Sensor löst mein Lauflicht für 10 Sekunden aus :grinning:

Danke an alle die mir geholfen haben.

Ich hatte ein bisschen Hilfe. Chat GTP :face_with_monocle:

Hier mein Sketch. Vielleicht nicht der Beste aber er funktioniert.

#include <Adafruit_NeoPixel.h>

// Pin für WS2812-Streifen
#define LED_PIN 6
// Anzahl der LEDs im Streifen
#define NUM_LEDS 60
// Initialisierung des WS2812-Streifens
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

// Pin für TCRT5000-Sensor
#define SENSOR_PIN 2

// Variablen für Timing und Zustand
bool is_running = false;
unsigned long start_time = 0;
unsigned long duration = 10000; // 10 Sekunden !! GEÄNDERT //

void setup() {
  strip.begin();
  strip.show(); // Alle LEDs ausschalten
  pinMode(SENSOR_PIN, INPUT); // Sensor-Pin als Eingang setzen
}

void loop() {
  // Sensor lesen
  int sensor_value = digitalRead(SENSOR_PIN);

  // Lauflicht aktivieren, wenn der Sensor ausgelöst wird
  if (sensor_value == LOW && !is_running) {  // GEÄNDERT auf LOW statt HIGH
    is_running = true;
    start_time = millis(); // Zähler starten
  }

  // Wenn das Lauflicht aktiviert ist und die 10 Sekunden nicht überschritten sind
  if (is_running && millis() - start_time < duration) {
    runChaseLight(); // Lauflicht aktivieren
  } else if (is_running) {
    // Lauflicht stoppen
    strip.clear(); // Alle LEDs ausschalten
    strip.show();
    is_running = false; // Status zurücksetzen
  }
}

void runChaseLight() {
  // Anzahl der LED-Pixel
  static int pixel = 0;

  // LEDs ausschalten
  strip.clear();

  // Ein Lauflicht-Effekt
  for (int i = 0; i < 3; i++) {
    int led_pos = (pixel + i) % NUM_LEDS;
    strip.setPixelColor(led_pos, strip.Color(255, 0, 0)); // Rot als Beispiel
  }

  strip.show(); // Aktualisieren

  // Zur nächsten LED für das Lauflicht
  pixel = (pixel + 1) % NUM_LEDS;

  // Kurze Verzögerung, um das Lauflicht zu verlangsamen
  delay(20);
}