Menu
CoddyTech

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);
challenge icon

Sfida

Facile

La 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
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Ingressi

Esercitati da solo: Playground Arduino