MODE 4 — RANGEFINDER
Easy · 1h · Fast kostenlos
Ziel & Anwendung
Der Ultraschall-Sensor wird zum Distanzmessgerät mit drei Skalen: S1 zeigt den Grobbereich 0–200 cm, S2 den zyklischen Feinbereich (jede 20-cm-Dekade wiederholt), S3 den kritischen Nahbereich. Der Stepper fährt wie ein mechanisches Maßband proportional zur Distanz — und DC-Motor plus Buzzer warnen bei Annäherung unter 10 cm.
- Ultraschall-Distanzmessung auf drei Servo-Zeigern mit unterschiedlichen Skalen darstellen.
- Stepper als mechanisches Maßband (1 cm = 5 Schritte) proportional zur Distanz bewegen.
- Mehrstufige Nähewarnung (30 cm und 10 cm) mit Buzzer und DC-Vibration implementieren.
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Grobskala 0–200 cm |
| S2 | 180°-Servo | Zyklische Feinskala (20-cm-Dekade) |
| S3 | 180°-Servo | Nahbereichs-Zeiger |
| S4 | 360°-Servo | Annäherungsgeschwindigkeits-Rotor |
| S5 | 360°-Servo | Trend-Anzeige (nähert sich / entfernt sich) |
| S6 | 180°-Servo | Markierung der kürzesten gemessenen Distanz |
| STEPPER | Schrittmotor | Mechanisches Maßband, folgt der gemessenen Distanz |
| DC | DC-Motor | Vibrations-Warnung bei sehr naher Distanz |
Materialliste
- Kartonstreifen je ca. 12 × 2 cm als Zeiger (3 Stück)
- Langes Karton-Maßband (Streifen 30 × 3 cm) als Stepper-Tape
- Halbkreis-Karton je Ø 14 cm als Skalenblatt (3 Stück)
- Filzstift für Distanzmarkierungen
- Klebeband und Heißkleber
Step-by-Step Tutorial
Drei-Skalen-Panel aufbauen
Drei Halbkreise (Ø 14 cm) nebeneinander auf einer Kartonplatte aufstellen. Entsprechende Servos darunter montieren. Skala S1 (Grob): 0 links bis 200 cm rechts. Skala S2 (Fein): 0–20 cm, wiederholt sich jede Dekade. Skala S3 (Nah): 0–30 cm mit roter Zone unter 10 cm.
Check: Drei Halbkreis-Skalen nebeneinander — links Grobskala (0–200 cm), Mitte Feinskala (0–20 cm Modul), rechts Nahbereich
Tipp: Grobskala hat 10 Teilstriche (20 cm je Strich), Feinskala hat 10 Teilstriche (2 cm je Strich) — Strichbreite unterschiedlich für leichte Unterscheidung.
Servo-Zeiger montieren
Für jeden Servo Plastik-Servo-Horn aufschrauben. Zeiger-Karton flächig auf Horn kleben. S1 nutzt mapDistanceCMlong (0–200 cm). S2: map(distanceCM % 20, 0, 20, 1000, 2000) — zyklisch alle 20 cm. S3 nutzt mapDistanceCMshort (0–30 cm Feinbereich).
Check: Alle drei Zeiger drehen von 1000 µs bis 2000 µs frei ohne Klemmen
Tipp: Zeiger für S2 (Fein) kann dünner sein — er bewegt sich schneller da sich die Skala alle 20 cm wiederholt.
Stepper als mechanisches Maßband aufbauen
Schmales Karton-Band (30 × 1 cm) mit Zentimeter-Markierungen beschriften. Band auf Stepper-Mitnehmer-Rad aufwickeln. Code: distDelta = distanceCM - lastDist. Bei |delta| >1 cm: stepper.move(delta × 5). Band scrollt sichtbar vor/zurück.
Check: Stepper bewegt Karton-Maßband-Streifen proportional zur Distanz (1 cm = 5 Schritte)
Tipp: Maßband-Streifen mit Zentimeter-Markierungen beschriften und auf Stepper-Rad aufwickeln — sichtbares Abrollen bei Distanzänderung.
Leichtgängigkeits-Test ohne Strom
Jeden Zeiger von Hand vollständig drehen: kein Klemmen? Stepper-Rad von Hand langsam drehen: Band rollt ab ohne zu reißen? Dann ProtoPeaks einschalten.
Check: Alle drei Zeiger drehen frei. Stepper-Maßband-Rad dreht ohne Abreißen des Karton-Bandes.
Tipp: Maßband-Band locker genug lassen — zu straff gespannt reißt es beim Stepper-Schritt. Ein leichtes Durchhängen ist erwünscht.
MODE 4 aktivieren — Distanz messen
Messgeräte → MODE 4. Objekt vor Ultraschall-Sensor halten: S1 Grobzeiger bewegt sich. Objekt näher: S2 dreht schnell durch (zyklisch). Unter 30 cm: Buzzer.setValue(80) Dauerton. Unter 10 cm: DC-Motor Vibration + Buzzer SHORT_BLINK + Stepper stoppt.
Check: Alle drei Zeiger folgen der Distanz. Stepper-Band scrollt. Nähewarnung bei <30 cm und <10 cm.
Tipp: Hand langsam auf den Ultraschall-Sensor zubewegen: alle drei Zeiger bewegen sich gleichzeitig — S2 dreht mehrmals durch wenn S1 noch langsam läuft.
Kalibrierung mit bekannter Distanz
ProtoPeaks auf exakt 50 cm von einer Wand aufstellen (Lineal messen). Display-Wert mit Zeiger-Ablesung vergleichen. Bei Abweichung >5 cm: Ultraschall-Sensor-Ausrichtung korrigieren — muss exakt senkrecht zur Wand zeigen. Dann bei 100 cm und 20 cm wiederholen.
Check: Zeiger-Ablesung stimmt mit gemessenem Abstand überein (±5 cm Toleranz)
Tipp: Lineal anlegen: ProtoPeaks auf genau 50 cm Abstand zu Wand stellen. Display zeigt 50 cm? Zeiger auf 25 % der Skala? Passt.
Troubleshooting
- Stepper dreht ständig hin und her obwohl Abstand konstant ist — Ultraschall liefert leicht schwankende Werte (±2 cm). Totband erhöhen: if(abs(distDelta) > 2.0f) statt 1.0f. Alternativ: Mittelwert über 3 Messungen bilden.
- S2 (Feinzeiger) dreht sprunghaft statt gleichmäßig — Modulo-Operation (% 20) erzeugt Sprünge bei Übergang von 20 auf 0. Das ist korrekt — S2 ist eine zyklische Feinskala. Skala entsprechend beschriften: '0/20/40...' am Nullpunkt.
Modifikationen & Sicherheit
- Pro-Tipp: Stepper-Maßband mit echten Zentimeter-Markierungen bedrucken für professionelles Aussehen.
- Erweiterung: Encoder-Drehung passt die Alarm-Schwellen an (z.B. 5 cm statt 10 cm für Roboter-Hinderniserkennung).
- Sicherheit: Ultraschall-Sensor hat Totzonen unter 3 cm — in diesem Bereich sind Messwerte unzuverlässig und Alarm bleibt aktiv.
Wichtige Code-Teile
// S1 (180°): Grobskala 0–200 cm
servocontroller.setServoPulse(1, mapDistanceCMlong);
// S2 (180°): Feinskala zyklisch alle 20 cm
servocontroller.setServoPulse(2, map(constrain((int)distanceCM % 20, 0, 20), 0, 20, 1000, 2000));
// S3 (180°): Nahbereich
servocontroller.setServoPulse(3, mapDistanceCMshort);
// Stepper: Maßband (1 cm = 5 Schritte)
static float lastDist3 = 0;
float distDelta = distanceCM - lastDist3;
if(abs(distDelta) > 1.0f) { stepper.move((int)(distDelta * 5)); lastDist3 = distanceCM; }
// Alarm-Stufen
setMotorspeed(distanceCM > 0 && distanceCM < 10 ? 60 : 0);
if(distanceCM > 0 && distanceCM < 10) Buzzer.setMode(SHORT_BLINK);
else if(distanceCM > 0 && distanceCM < 30) Buzzer.setValue(80);
else Buzzer.setValue(0);Ähnliche Projekte
- MODE 2 — KLIMA LAB — Fünf Servo-Zeiger zeigen gleichzeitig Temperatur, Luftdruck und Luftfeuchte des BME280 an. Zwei 360°-Servos fungieren als lebendige Trend-Indikatoren: steigt die Temperatur, dreht S4 nach rechts — fällt der Druck, schlägt S5 nach links. Bei Extremwerten (>35 °C oder >85 % Feuchte) löst der Buzzer automatisch Alarm aus.
- MODE 5 — LUX METER — Drei Servo-Zeiger arbeiten gleichzeitig: S1 zeigt den Live-Lichtwert, S2 hält den Spitzenwert (Schleppzeiger-Prinzip wie ein analoges Maximum-Thermometer) und S3 friert den aktuellen Wert auf Knopfdruck ein. touch2 löscht den Peak-Wert, touch1 aktiviert den Hold-Modus. Der Stepper dreht bei sehr hellem Licht automatisch weg — als Sonnenschutz-Simulation.
- MODE 7 — DIFF METER — Zwei Sensor-Kanäle werden verglichen: S1 zeigt die Differenz von Sensor A zu einem gesetzten Referenzpunkt (touch1 = Nullpunkt setzen), S2 zeigt Sensor A live, S3 zeigt Sensor B live. EncoderButton wechselt Sensor A, touch2 wechselt Sensor B. Der DC-Motor warnt wenn die Differenz zwischen A und B einen Schwellwert überschreitet.