Ограничение значений диапазоном
Часть раздела Входные сигналы путешествия по 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);Задание
ЛегкоПотенциометр подключён к 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 мс
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Входные сигналы
2Аналоговые входы
Считываем показания потенциометраПеревод показаний потенциометра в вольтыПреобразование в процентыОграничение значений диапазономПороговое значение потенциометраАвтоматический ночникВывод переключателя датчика освещённостиПотренируйтесь самостоятельно: Песочница Arduino