Menu
CoddyTech

Ограничение значений диапазоном

Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 11 из 22.

Иногда нужно учитывать только часть диапазона. Допустим, важна только середина хода ручки — показания от 200 до 800, и этот диапазон должен соответствовать 0–100 процентам:

int percent = map(reading, 200, 800, 0, 100);

При 200 это даст 0, а при 800 — 100, но map() не останавливается на концах диапазона. Показание 0 дает -33, а 1023 — 137. Процент меньше 0 или больше 100 не имеет смысла.

constrain(x, low, high) удерживает число в пределах диапазона: значение меньше low становится равным low, значение больше high становится равным high, а все значения между ними остаются без изменений.

percent = constrain(percent, 0, 100);
challenge icon

Задание

Легко

Потенциометр подключён к A0. Выводите процент: значения от 200 до 800 соответствуют диапазону от 0 до 100:

  • преобразуйте показание из диапазона от 200 до 800 в диапазон от 0 до 100 с помощью map
  • ограничьте его диапазоном от 0 до 100 с помощью constrain()
  • выведите его, затем подождите 100 мс

Нажмите Run, поверните потенциометр до упора в обе стороны, затем нажмите Check.

Попробуйте сами

void setup() {
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(A0);
  // Преобразуй диапазон 200..800 в 0..100, удерживай результат в пределах 0..100, выведи его и подожди 100 мс
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Входные сигналы

Потренируйтесь самостоятельно: Песочница Arduino