Werte im Bereich halten
Teil des Abschnitts Eingaben der Arduino-Journey von Coddy. Lektion 11 von 22.
Manchmal soll nur ein Teil eines Bereichs berücksichtigt werden. Angenommen, nur der mittlere Teil des Bewegungsbereichs des Knopfs ist relevant, also Messwerte von 200 bis 800, und dieser soll 0 bis 100 Prozent entsprechen:
int percent = map(reading, 200, 800, 0, 100);Das ergibt 0 bei 200 und 100 bei 800, aber map() begrenzt die Werte nicht auf die Enden des Bereichs. Ein Messwert von 0 ergibt -33 und 1023 ergibt 137. Ein Prozentwert unter 0 oder über 100 ergibt keinen Sinn.
constrain(x, low, high) hält eine Zahl innerhalb eines Bereichs: Alles unter low wird zu low, alles über high wird zu high, und alles dazwischen bleibt unverändert.
percent = constrain(percent, 0, 100);Aufgabe
EinfachDer Drehknopf ist an A0 angeschlossen. Gib einen Prozentwert aus, wobei Messwerte von 200 bis 800 als 0 bis 100 zählen:
- Ordne den Messwert mit map von 200 bis 800 auf 0 bis 100 ab
- Halte ihn mit
constrain()zwischen 0 und 100 - Gib ihn aus und warte dann 100 ms
Drücke Run, drehe den Knopf ganz in beide Richtungen und klicke dann auf Check.
Probier es selbst
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// 200..800 auf 0..100 abbilden, den Wert im Bereich 0..100 halten, ihn ausgeben, 100 ms warten
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Eingaben
Übe selbstständig: Arduino-Playground