MODE 6 — PEAK HOLD
Medium · 1h 30 min · Fast kostenlos
Ziel & Anwendung
Ein universeller Peak-Detektor für fünf verschiedene Sensoren: Encoder-Button wechselt den aktiven Sensor (Temperatur, Distanz, Helligkeit, Spannung, Feuchte), S1 zeigt den Live-Wert, S2 hält das bisherige Maximum und S3 das bisherige Minimum — alle gleichzeitig auf derselben Skala. touch2 löscht alle gespeicherten Extremwerte.
- Universellen Peak-Detektor für fünf Sensor-Quellen mit Encoder-Auswahl aufbauen.
- Maximum- und Minimum-Schleppzeiger (S2, S3) auf gemeinsamer Skala darstellen.
- Sensor-Wechsel per EncoderButton mit automatischem Peak-Reset implementieren.
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Live-Wert-Zeiger |
| S2 | 180°-Servo | Maximum-Zeiger |
| S3 | 180°-Servo | Minimum-Zeiger |
| S4 | 360°-Servo | Sensor-Wechsel-Anzeige links |
| S5 | 360°-Servo | Sensor-Wechsel-Anzeige rechts |
| S6 | 180°-Servo | Zeigt den aktuell gewählten Sensor |
| STEPPER | Schrittmotor | Zählt jeden neuen Rekordwert mechanisch mit |
| DC | DC-Motor | Kurze Vibration bei neuem Rekordwert |
Materialliste
- Kartonstreifen je ca. 10 × 2 cm als Zeiger (3 Stück, verschiedene Farben)
- Beschriftbares Skalenblatt aus Karton ca. 20 × 12 cm
- Klebezettel für Sensor-Beschriftung (wechselbares Label)
- Filzstift für Skaleneinteilung
- Klebeband und Heißkleber
Step-by-Step Tutorial
Universal-Messgehäuse aufbauen
Karton-Gehäuse ca. 20 × 15 cm aufbauen. Drei Servo-Positionen nebeneinander: S1 (Live), S2 (Peak-Max), S3 (Peak-Min). Skalenblatt mit austauschbaren Klebezettel-Beschriftungen für jeden Sensor. Sensor-Name oben auf aktuellem Label angeben.
Check: Drei Servo-Positionen auf einer Skala — Beschriftungsstreifen austauschbar für jeden Sensor
Tipp: Klebezettel-Beschriftung statt fest aufgemalter Skala — bei Sensor-Wechsel einfach neues Label aufkleben.
Drei-Zeiger-System montieren
Jeden Servo mit Plastik-Horn ausstatten. Zeiger in drei Farben (schwarz/rot/blau) flächig auf Horn kleben. Montage gestaffelt in Tiefe: S3 ganz hinten, S2 Mitte, S1 vorn. Alle zeigen auf dieselbe Skala — relative Position (0–100 % des Messbereichs) statt absoluter Einheiten.
Check: S1 (Live) schwarz, S2 (Max) rot, S3 (Min) blau — alle auf derselben Skala, leicht gestaffelt
Tipp: Zeiger in Tiefe staffeln: S3 ganz hinten, S2 in der Mitte, S1 vorn — so überlappen sie ohne sich zu berühren.
Sensor-Auswahl-Logik verstehen
Code nutzt selSensor (0–4) per EncoderButton-Zyklus. Bei Wechsel: peakVal5 = 0, peakMin5 = 9999 werden auto-reset. Skalenblatt austauschen und Klebezettel mit neuem Sensor-Namen aufkleben. touch2 löscht Peaks manuell ohne Sensor-Wechsel.
Check: EncoderButton wechselt aktiven Sensor: 0=Temp, 1=Dist, 2=LDR, 3=Volt, 4=Feuchte
Tipp: Display zeigt Sensor-Nummer (Sns: 0–4) — Klebezettel-Beschriftung entsprechend wechseln: 0=0–50°C, 1=0–200cm, 2=0–100%, 3=0–3,3V, 4=0–100%.
Leichtgängigkeits-Test ohne Strom
Jeden Zeiger einzeln von Hand von Anschlag zu Anschlag drehen: berühren sie sich nicht? Alle drei gleichzeitig auf dieselbe Position drehen (Mitte) — kein Kontakt? Erst dann ProtoPeaks einschalten.
Check: Alle drei Zeiger drehen frei auf derselben Skala ohne Kollision
Tipp: Zeiger in gestaffelter Tiefe montieren — mindestens 3 mm Abstand zwischen den Zeiger-Ebenen.
MODE 6 aktivieren — Peak-Detektor testen
Messgeräte → MODE 6. Sensor 0 (Temp) aktiv. Körperwärme neben BME280: S1 steigt, S2 folgt auf Maximum. Wärme weg: S1 fällt, S2 bleibt. touch2: Peaks auf 0/9999 zurücksetzen. EncoderButton: Sensor wechseln (Distanz, LDR etc.). Klebezettel auf neun Sensor ummelden.
Check: S1 folgt Live-Wert. S2 hält bisheriges Maximum. S3 hält bisheriges Minimum. Sensor-Wechsel funktioniert.
Tipp: Test-Sequenz: Temperatur (Sensor 0) — Hand über BME280 halten und wegnehmen. S2 sollte beim Maximum bleiben.
Peak-Werte für alle fünf Sensoren dokumentieren
Jeden der fünf Sensoren der Reihe nach testen: jeweils Extremwert erzeugen (Hand/Licht/Distanz) und Peak mit Bleistift markieren. Nach allen fünf: EncoderButton wieder auf Sensor 0 stellen. Display zeigt Live, Max und Sensor-Nummer.
Check: Für jeden Sensor wurden Max und Min erfasst und sind auf der Skala ablesbar
Tipp: Bleistift-Markierungen auf dem Skalenblatt: kleine Striche bei Peak-Positionen als manuelle Langzeit-Dokumentation.
Troubleshooting
- S3 (Minimum) bleibt immer bei 9999 — zeigt nie einen sinnvollen Wert — Nach Start ist peakMin5 = 9999. Erst wenn der erste echte Sensor-Messwert kleiner als 9999 ist, wird peakMin5 aktualisiert. Sensor aktiv machen (z.B. Licht auf LDR) und 1–2 Sekunden warten.
- Zeiger springt bei Sensor-Wechsel zu einem falschen Wert — Beim Sensor-Wechsel werden Peaks gelöscht aber liveVal braucht 1–2 Displayzyklen für den neun Wert. Kurz warten nach EncoderButton-Druck bevor man die Anzeige abliest.
Modifikationen & Sicherheit
- Pro-Tipp: Klebezettel laminieren für langlebigere Sensor-Labels bei häufigem Wechsel.
- Erweiterung: Stepper als Alarm-Zeiger bei Überschreitung eines definierten Schwellwertes (über Encoder einstellbar).
- Sicherheit: Bei Sensor-Wechsel immer touch2 drücken um Peaks zu löschen — sonst könnten Peak-Werte vom vorherigen Sensor fälschlich angezeigt werden.
Wichtige Code-Teile
// EncoderButton: Sensor wechseln, Peaks löschen
static uint8_t selSensor = 0;
if(isButtonPressed(EncoderButton, lastEncBtn5)) { selSensor = (selSensor + 1) % 5; peakVal5 = 0; peakMin5 = 9999; }
if(touch2) { peakVal5 = 0; peakMin5 = 9999; }
// Sensorwert je nach Auswahl
float liveVal = 0;
switch(selSensor) {
case 0: liveVal = temperature; break;
case 1: liveVal = distanceCM; break;
case 2: liveVal = LDR / 40.95f; break;
case 3: liveVal = voltPin; break;
case 4: liveVal = humiditiy; break;
}
if(liveVal > peakVal5) peakVal5 = liveVal;
if(liveVal < peakMin5) peakMin5 = liveVal;
// S1 Live, S2 Max, S3 Min (normiert auf Messbereich)
servocontroller.setServoPulse(1, map(constrain((int)(liveVal*10), ...), ..., 1000, 2000));
servocontroller.setServoPulse(2, map(constrain((int)(peakVal5*10), ...), ..., 1000, 2000));
servocontroller.setServoPulse(3, map(constrain((int)(peakMin5*10), ...), ..., 1000, 2000));Ähnliche Projekte
- 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.
- MODE 8 — FORCE METER — touch1 halten simuliert eine Kraftmesszelle: je länger gedrückt, desto mehr Kraft wird angezeigt (0–100 g in 2 Sekunden). Loslassen lässt den Wert langsam abfallen — wie eine Federkraft-Simulation. S1 zeigt die aktuelle Kraft, S2 hält den Spitzenwert. S3 zeigt die Gyro-Y-Neigung als Tara-Korrektur. Über 80 g: DC-Vibration und Buzzer.