Выбор адреса i2c для lcd дисплея (0x27 | 0x3F) перемычкой
- Войдите на сайт для отправки комментариев
Сб, 20/08/2022 - 15:08
Пришли два дисплея 1602 от разных продавцов, так вот у одного стоит PCF8574 у другого PCF8574A. Понятно, что адреса разные.
Вот я подумал - А можно ли путём соединения пинов меги к + или gnd выбрать соответсвующий адрес?
Идея отличная, но у меня ничего не получилось. Объект дисплея создаётся до блока Setup, адрес передаётся в конструктор. Использовать digitalRead() до блока setup ide не даёт.
Вопрос: Как-то это можно все-таки сделать? Или «дохлый номер»?
ты че маленький?
вынеси в библе адрес в паблик и меняй как хошь.
или допиши функцию которая будет это делать.
То есть вмешаться в код библиотеки предлагаешь? Ну как вариант...
А больше вариантов нет?
я не помню пусть меня поправят
унаследуй свой класс от библиотечного, и вот тут я не помню, приваты будут доступны или нет...
На сколько я знаю - не должны.
Ладно, не принципиально - перепишу библиотеку - добавлю метод.
А с чем связано, что ide не даёт вне блоков setup и loop использовать digitalRead, if и т.д.? Религия?
А с чем связано, что ide не даёт вне блоков setup и loop использовать digitalRead, if и т.д.? Религия?
С тем, что то, что "вне блоков setup и loop" из main не вызывается.
А с чем связано, что ide не даёт вне блоков setup и loop использовать digitalRead, if и т.д.? Религия?
у меня дает
А с чем связано, что ide не даёт вне блоков setup и loop использовать digitalRead, if и т.д.? Религия?
Каким образом?
А с чем связано, что ide не даёт вне блоков setup и loop использовать digitalRead, if и т.д.? Религия?
С тем, что то, что "вне блоков setup и loop" из main не вызывается.
Но глобальные переменные создаются. Была мысль на main переделать, но уже все решил. Три строчки кода в библиотеке (новая функция setAddr(uint8_t addr) ).
На МК все происходит немного по-другому, чем на ПК.
Если на ПК сначала происходит инициализация железа и загрузка драйверов, и только потом запуск прикладной программы, работа которой начинается с инициализации глобальных переменных и только потом идет первый исполняемый оператор [прикладной программы], то на МК инициализация переменных происходит также до первого исполняем ого оператора, но дело в том, что инициализацию железа также выполняют исполняемые операторы, т.е. конструкторы отрабатывают раньше инициализации железа и об этом надо помнить при написании конструкторов. Недаром кроме конструктора основную роль в настройке зачастую играют методы, называемые setup или init. Вот они уже явно вызываются из программы после того, как железо самого МК уже инициализировано.