Дисплей выводит данные за пределами map

regboxao

✩✩✩✩✩✩✩
15 Дек 2019
3
0
Добрый день! Дисплей LCD1602 (с контроллером) выводит данные переменных больше, чем задано map, несмотря на constrain.

val_trg_count = analogRead(potent_trg_count_pin);
val_trg_count = map(val_trg_count, 0, 1023, 1, 20);
val_trg_count = constrain(val_trg_count, 1, 20);

Причём выбросы возникают на середине поворота потенциометра. При этом в мониторе порта выводятся ожидаемые значения.
Что я делаю не так?
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,704
417
Москва
Тоже сталкивался с подобным.. просто не стал использовать constrain. Сделал так
C++:
  p = map(s / 20, MinP, MaxP, 0, 100);
  p = max(0, p); p = min(100, p);
 

regboxao

✩✩✩✩✩✩✩
15 Дек 2019
3
0
Тоже сталкивался с подобным.. просто не стал использовать constrain. Сделал так
C++:
  p = map(s / 20, MinP, MaxP, 0, 100);
  p = max(0, p); p = min(100, p);
Спасибо! Я тут обнаружил другую проблему: на экран выводятся нули, если разрядов меньше. То есть вместо 1 выводится 10, вместо, 100 и т.д. Это как-то лечится?
 

regboxao

✩✩✩✩✩✩✩
15 Дек 2019
3
0
Всем спасибо, действительно, надо было затереть нули.