Moin
Ich habe es hinbekommen.
IR Sensor löst mein Lauflicht für 10 Sekunden aus ![]()
Danke an alle die mir geholfen haben.
Ich hatte ein bisschen Hilfe. Chat GTP ![]()
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);
}