Mantenere i valori entro l'intervallo
Fa parte della sezione Ingressi del percorso Arduino di Coddy. Lezione 11 di 22.
A volte dovrebbe essere considerata solo una parte di un intervallo. Supponiamo che conti solo la parte centrale della corsa della manopola, con letture da 200 a 800, e che questa debba corrispondere da 0 a 100 percento:
int percent = map(reading, 200, 800, 0, 100);Questo restituisce 0 a 200 e 100 a 800, ma map() non si ferma agli estremi dell'intervallo. Una lettura di 0 restituisce -33 e 1023 restituisce 137. Una percentuale inferiore a 0 o superiore a 100 non ha senso.
constrain(x, low, high) mantiene un numero entro un intervallo: qualsiasi valore inferiore a low diventa low, qualsiasi valore superiore a high diventa high e tutto ciò che sta nel mezzo rimane invariato.
percent = constrain(percent, 0, 100);Sfida
FacileLa manopola è collegata ad A0. Stampa una percentuale in cui le letture da 200 a 800 corrispondono a valori da 0 a 100:
- mappa la lettura da 200 a 800 nell’intervallo da 0 a 100
- mantienila tra 0 e 100 con
constrain() - stampala, poi attendi 100 ms
Premi Run, ruota la manopola completamente in entrambe le direzioni, poi premi Check.
Provalo tu
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// mappa 200..800 a 0..100, mantieni il valore nell'intervallo 0..100, stampalo, attendi 100 ms
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Ingressi
2Ingressi analogici
Leggere una manopolaConvertire la lettura della manopola in voltConvertire in percentualeMantenere i valori entro l'intervalloSoglia della manopolaLuce notturna automaticaPin di commutazione del sensore di luceEsercitati da solo: Playground Arduino