MODE 9 — SPOTLIGHT

Medium · 1h · Fast kostenlos

Ziel & Anwendung

Ein rotierender Überwachungs-Scheinwerfer: Stepper dreht in 45°-Sektoren von Sektor zu Sektor, S2 zeigt die aktuelle Scan-Phase und S3 den LDR-Helligkeitswert. Sobald der PIR-Sensor Bewegung erkennt, bleibt der Stepper für 3 Sekunden auf der Alarm-Position fixiert — SHORT_BLINK warnt.

  • Stepper als Sektor-Scanner implementieren der 45°-Sektoren (8 Positionen) abfährt.
  • PIR-Bewegungserkennung die Stepper für 3 Sekunden auf Alarm-Position einfriert.
  • S1 PIR-Alarm-Zeiger, S2 aktuelle Scan-Phase und S3 LDR-Helligkeit synchronisieren.

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoPIR-Alarm-Zeiger, schlägt bei Treffer aus
S2180°-ServoZeigt die aktuelle Scan-Phase
S3180°-ServoZeigt die gemessene Raumhelligkeit
S4360°-ServoDreht synchron zum Scan, stoppt bei PIR-Treffer
S5360°-ServoGegenläufig zu S4 für verstärkten Suchlicht-Effekt
S6180°-ServoMarkiert den Sektor des letzten PIR-Treffers
STEPPERSchrittmotorDreht die Spotlight-Plattform durch die Sektoren
DCDC-MotorKurze Vibration bei jedem PIR-Treffer

Materialliste

  • Kleiner Karton-Spotlight-Turm ca. 8 × 8 × 15 cm
  • Taschenlampe oder LED auf Stepper-Plattform als 'Scheinwerfer' (optional)
  • LDR frei sichtbar als Helligkeits-Sensor
  • Karton-Sektor-Scheibe Ø 10 cm mit 8 Sektoren als Positions-Anzeige
  • Klebeband und Heißkleber

Step-by-Step Tutorial

  1. Spotlight-Turm mit Stepper aufbauen

    Karton-Turm (8 × 8 × 15 cm). Stepper im Inneren. Spotlight-Plattform (8 × 8 cm) auf Mitnehmer. Optionale LED oder Taschenlampe aufkleben. Kabel mit 20 cm Schlaufe: ermöglicht mehrere Umdrehungen ohne Aufwickeln. Sektor-Scheibe (Ø 10 cm, 8 Felder) als sichtbare Positions-Anzeige unter Turm.

    Check: Stepper dreht Spotlight-Plattform. Kabel der LED (optional) nicht aufwickeln.

    Tipp: Taschenlampe/LED auf Plattform ist optional — der Effekt des rotierenden Turms ist auch ohne Licht beeindruckend. Kabel-Schlaufe für ±180° Rotation einplanen.

  2. 8-Sektoren Scan-Sequenz programmieren

    scanSector von 0 bis 7 (8 Sektoren). scanPos = scanSector × 45. stepper.moveTo(scanPos). Wenn distanceToGo() == 0: 1 Sekunde warten (Verweilzeit), dann scanSector = (scanSector + 1) % 8. Volle Rotation in 8 Sekunden bei 1s Verweilzeit.

    Check: Stepper dreht zu Position 0, 45, 90, 135, 180, 225, 270, 315 — dann wieder von vorne.

    Tipp: scanPos += 45 nach jeder Verweilzeit. moveTo(scanPos). Wenn scanPos >= 360: scanPos = 0. Stepper dreht immer in eine Richtung (kein Zurück).

  3. PIR-Alarm mit 3-Sekunden-Einfrierung

    PIR-Trigger: pirLocked = millis() + 3000. Während pirLocked > millis(): kein Sektor-Wechsel, S1=2000 (Alarm-Zeiger), SHORT_BLINK. Nach 3s: pirLocked = 0, S1=1000, Scan läuft weiter. Stepper hält exakt auf Alarm-Position — Scheinwerfer zeigt direkt auf Eindringling.

    Check: PIR löst: pirLocked = millis() + 3000. Stepper bleibt auf aktueller Position eingefroren.

    Tipp: Während pirLocked aktiv: kein scanSector-Wechsel. Nur stepper.run() aufrufen (für Halten). Nach 3000ms: pirLocked = 0, Scan geht weiter.

  4. Leichtgängigkeits-Test ohne Strom

    Stepper von Hand auf +360 Schritte drehen: Plattform dreht ohne Kabelzug? Kabel-Schlaufe noch locker? Dann rückwärts: frei? Spotlight-Plattform hat genug Spielraum nach oben? Erst dann einschalten.

    Check: Stepper dreht Spotlight-Plattform frei. Volle 360°-Drehung ohne Kabelzug.

    Tipp: 360°-Drehung bedeutet: Kabel muss volle Umdrehung mitmachen. Kabel-Schlaufe nach unten aus Turm-Basis führen.

  5. MODE 9 aktivieren — Spotlight im Betrieb

    Safe-Einbruch → MODE 9. Spotlight dreht automatisch durch 8 Sektoren. S2 zeigt aktuelle Phase (0–7). S3 zeigt Raumlicht. Vor PIR treten: Spotlight friert für 3s ein, S1 Alarm-Zeiger hoch, Buzzer SHORT_BLINK. Nach 3s: Spotlight dreht weiter.

    Check: Stepper dreht Sektoren. S2 zeigt Scan-Phase. S3 zeigt LDR. PIR: Einfrierung für 3s.

    Tipp: Test: Vor PIR gehen → Stepper friert ein, S1 auf Alarm, SHORT_BLINK für 3s. Dann weiter scannen.

  6. Verweilzeit und Scan-Geschwindigkeit anpassen

    sectorWait = 1000ms Standard. Stepper.setSpeed() für Dreh-Geschwindigkeit zwischen Sektoren. Schneller Scan: sectorWait = 500ms, hohe Stepper-Geschwindigkeit. Langsamer Scan: sectorWait = 3000ms für dramatischere Wirkung. PIR-Einfrierung immer 3000ms — unabhängig von Verweilzeit.

    Check: Verweilzeit pro Sektor anpassen. Stepper-Geschwindigkeit für sichtbare Drehung einstellen.

    Tipp: Verweilzeit 1s pro Sektor: volle Rotation in 8s. Für langsamen mysteriösen Scan: 3s Verweilzeit = 24s pro Umdrehung.

Troubleshooting

  • Stepper dreht nicht in Sektoren — dreht kontinuierlich — distanceToGo() == 0 prüfen: gibt true wenn Zielposition erreicht. Wenn Stepper.run() nicht aufgerufen: Stepper bewegt sich nicht. Wenn moveTo() in jedem Loop-Durchlauf aufgerufen: Ziel wird ständig neu gesetzt. moveTo() nur einmal pro Sektor-Wechsel aufrufen.
  • PIR-Einfrierung dauert nicht 3 Sekunden — pirLocked = millis() + 3000. Wenn pirLocked als int16_t statt uint32_t: Überlauf nach 32s. Als uint32_t deklarieren: static uint32_t pirLocked = 0. Vergleich: millis() > pirLocked (nicht millis() - pirLocked > 3000).

Modifikationen & Sicherheit

  • Pro-Tipp: LED auf Spotlight-Plattform (über ProtoPeaks-GPIO) bei PIR-Alarm aufblinken lassen — echte Scheinwerfer-Simulation.
  • Erweiterung: LDR-basierte Helligkeitssteuerung — Spotlight dreht nur bei Dunkelheit (LDR < 500) für Nachtwächter-Modus.
  • Sicherheit: Kabel-Management bei rotierendem Stepper ist kritisch — regelmäßig prüfen dass keine Kabelaufwicklung entsteht.

Wichtige Code-Teile

// PIR-Alarm: 3 Sekunden einfrieren
if(isButtonPressed(PIRHigh, lastPIR8)) pirLocked = millis() + 3000;
bool scanActive = (millis() > pirLocked);
// Sektor-Scanner (nur wenn kein PIR-Alarm)
if(scanActive && stepper.distanceToGo() == 0) {
    if(millis() - sectorTimer > 1000) {   // 1s Verweilzeit pro Sektor
        scanPos += 45;                     // Nächster 45°-Sektor
        stepper.moveTo(scanPos);
        sectorTimer = millis();
    }
}
stepper.run();
// Servo-Ausgaben
servocontroller.setServoPulse(1, scanActive ? 1000 : 2000);     // S1: PIR-Alarm
servocontroller.setServoPulse(2, map(scanPos%360, 0,360, 1000,2000));  // S2: Scan-Phase
servocontroller.setServoPulse(3, mapLDR);                        // S3: Helligkeit
// Buzzer bei PIR-Alarm
if(!scanActive) Buzzer.setMode(SHORT_BLINK);
else            Buzzer.setValue(0);

Ähnliche Projekte

  • MODE 4 — SCANNER — Ein tastender Scan-Turm mit Ultraschall-Sensor: der Stepper dreht den Sensor in kleinen Schüben hin und her wie ein Radar-Scanner. Bei zu nahem Objekt steigt die Alarm-Stufe — S1 zeigt den Abstand, S2 die Warn-Fahne und S3 die Kritisch-Fahne, bei der höchsten Stufe surrt auch der DC-Motor.
  • MODE 1 — LASER TRAP — Eine echte Lichtschranke aus Laser-Pointer und LDR: sobald der Laserstrahl unterbrochen wird, schlägt der Alarm an — S1 hebt die Alarm-Fahne, S2 verriegelt einen Servo-Riegel, der Stepper dreht die Alarm-Fläche und der DC-Motor surrt. Perfekt als Diebstahlsicherung für die Schreibtischschublade oder als Einbruch-Spielzeug.
  • MODE 10 — SEISMIC — Ein Mini-Seismograph fürs Regal: Der Bewegungssensor spürt jede Erschütterung, ein Pendel am Schrittmotor schwingt live mit und zwei Zeiger zeigen die Richtung des Wackelns. Wird es zu heftig, bleibt ein Alarmfenster fünf Sekunden offen — der ideale stille Wächter für Tresor oder Vitrine.