PWM с дисплеем 1602a

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
Всем добрый вечер. Нигде на просторах интернета не смог найти команду или пример как отображать данные по шиму на экране.
Код:
void loop() {
 
pwm = analogRead(0);   // read in resistor
pwm = map(pwm, 1023, 0, 0, 255);
pwm = constrain(pwm, 0, 255);
analogWrite(3, pwm);
Примитивный код сваял, а как завязать дисплей не представляю.
Дисплей привязан, если вписать строку дисплейпринт, то пишет то что укажешь, а что указать чтобы показывало хоть что то по PWM не понятно.
подскажите люди добрые)
 

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
Действительно все гениальное просто. Спасибо.
Но оно пишет на всю строку данные. И постоянно обновляясь. Задержку если ставить, то регулировка тоже становится с дискретностью задержки, не плавно.
 

Вложения

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

★★★★★★★
14 Авг 2019
4,317
1,317
Москва
Ну если просто измениться , то скорее всего толку не будет, мне почему то кажется, что значение с аналогового входа будет немного гулять.. Надо выводить если изменится существенно. Или просто выводить раз в секунду.
 

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
Всем доброго вечера.
Вписал в конце строку очистки дисплея, все лишние цифры ушли. Единственное он показывает не % заполнения шима от 0 до 100, а изменение от 0 до 255. как написать ему конвертировать или понимать 0-100?
и возможно ли обновлять информацию на дисплей реже не задевая при этом кода на регулировку?
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
714
173
показывает не % заполнения шима от 0 до 100, а изменение от 0 до 255
Так и должно быть, вы же передаете в функцию analogWrite значение от 0 до 255 и это же значение передаете в функцию отображения на дисплей.
как написать ему конвертировать или понимать 0-100
С помощью функции map()
C++:
дисплей.принт(map(pwm, 0, 255, 0, 100))
и после дисплей. принт(%).
возможно ли обновлять информацию на дисплей реже не задевая при этом кода на регулировку?
Конечно, функция millis() в этом поможет. Здесь довольно подробно и с примерами про неё расписано.
 

bort707

★★★★★★✩
21 Сен 2020
3,220
941
Единственное он показывает не % заполнения шима от 0 до 100, а изменение от 0 до 255. как написать ему конвертировать или понимать 0-100?
пипец вы вопросы задаете.
А код в первом сообщении кто писал, не вы? - там же в 4й строке черным по белому указано - выводить ШИМ от 0 до 255
Если вам надо от 0 до 100 - то зачем вы до 255 написали?
 

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
Ну потому что 255 максимально получается. Если поменять 255 на 100, то на дисплее максимально показывает 100, но светодиод не горит на "всю катушку", следовательно что то делаю не так.
прошу извинить, я только недавно "вылупился" в эту среду) и вопросы у меня тупые и детские)
 

bort707

★★★★★★✩
21 Сен 2020
3,220
941
Сделайте две переменные - одну для экрана, от 0 до 100, другую для светодиода - от 0 до 255

Или еще проще - пересчитывайте 0 - 255 в проценты. В каком вы классе? - проценты проходят, по-моему, в пятом...
 
Изменено:

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
В обоих случаях регулятор на максимум, интенсивность света- разная
 

Вложения

Friendee

✩✩✩✩✩✩✩
30 Май 2025
6
0
@bort707, Напишите пожалуйста пример, или на каких ресурсах посмотреть. я еще не нашел :rolleyes:
 

bort707

★★★★★★✩
21 Сен 2020
3,220
941
пример чего? как проценты вашего ШИМ посчитать? Не стыдно?

C++:
pwm_procent = (pwm * 100) / 255;
В формуле:
pwm - величина ШИМ от 0 до 255
pwm_procent - этот же ШИМ в процентах (0-100)