Menu
CoddyTech

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

Desafío

Fácil

El 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
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Entradas

Practica por tu cuenta: Playground de Arduino