Mantener los valores dentro del rango
Parte de la sección Entradas del Journey de Arduino de Coddy. Lección 11 de 22.
A veces solo debe contar una parte del rango. Digamos que solo importa la parte central del recorrido de la perilla, las lecturas de 200 a 800, y que eso debería corresponder a entre 0 y 100 por ciento:
int percent = map(reading, 200, 800, 0, 100);Eso da 0 en 200 y 100 en 800, pero map() no se detiene en los extremos del rango. Una lectura de 0 da -33, y 1023 da 137. Un porcentaje inferior a 0 o superior a 100 no tiene sentido.
constrain(x, low, high) mantiene un número dentro de un rango: cualquier valor inferior a low se convierte en low, cualquier valor superior a high se convierte en high, y todo lo que queda entre ambos permanece igual.
percent = constrain(percent, 0, 100);Desafío
FácilEl mando está conectado a A0. Imprime un porcentaje en el que las lecturas de 200 a 800 correspondan de 0 a 100:
- mapea la lectura de 200 a 800 al rango de 0 a 100
- mantenlo entre 0 y 100 con
constrain() - imprímelo y después espera 100 ms
Pulsa Run, gira el mando completamente en ambas direcciones y después pulsa Check.
Pruébalo tú mismo
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// convierte el rango 200..800 a 0..100, mantén el resultado en 0..100, imprímelo y espera 100 ms
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Entradas
2Entradas analógicas
Leer un potenciómetroConvertir la lectura del potenciómetro a voltiosConvertir a porcentajeMantener los valores dentro del rangoUmbral del potenciómetroLuz nocturna automáticaPin del interruptor del sensor de luzPractica por tu cuenta: Playground de Arduino