Урок №9 Библиотека Button

Обсуждение и вопросы по урокам Ардуино
Dimzon
Сообщения: 11
Зарегистрирован: 04 авг 2017, 02:39

Урок №9 Библиотека Button

Сообщение Dimzon » 04 авг 2017, 03:01

Здравствуйте Эдуард! Не могли бы Вы помочь в решении одной проблемы? Не могу сообразить, как заставить работать библиотеку кнопки на I2C расширителе портов PCF8575. Как правильней сделать, что бы библиотека работала и на пинах микроконтроллера, и на дополнительных пинах расширителя портов? Создать в библиотеке дополнительный класс, с третьим аргументом типа объект "expander"? Или ввести в уже существующий класс третий необязательный аргумент? Например с таким конструктором - "Button(byte pin, byte timeButton, char exp);" Но как тогда выбирать нужный метод между DigitalRead и expander.DigitalRead? Если найдёте в себе капельку душевного тепла и поможете разобраться - буду Вам бесконечно благодарен :)


Dimzon
Сообщения: 11
Зарегистрирован: 04 авг 2017, 02:39

Re: Урок №9 Библиотека Button

Сообщение Dimzon » 04 авг 2017, 03:05

Почему-то попала не в тот раздел - я её в "Уроках" хотел разместить... Если можно, перенесите её туда

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Урок №9 Библиотека Button

Сообщение Эдуард » 04 авг 2017, 22:25

Здравствуйте!
Я бы выбрал вариант - создать другую библиотеку, только для кнопок, подключенных через PCF8575. За универсальность всегда надо платить, а ресурсы контроллеров Ардуино ограничены. Зачем вы будите загружать в контроллер функции обработки кнопок, подключенных через PCF8575 если не собираетесь их использовать в данном проекте. И наоборот, для кнопок подключенных непосредственно к выводам микроконтроллера.

Dimzon
Сообщения: 11
Зарегистрирован: 04 авг 2017, 02:39

Re: Урок №9 Библиотека Button

Сообщение Dimzon » 05 авг 2017, 05:10

Спасибо за совет! А как в таком случае правильней поступить - объявить объект расширителя внутри библиотеки или в основном скетче? Во втором случае Скетч не компилируется, с ошибкой - мол, объект не заявлен в данной области, а в первом - не получится использовать расширитель для других целей... В общем тупик

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Урок №9 Библиотека Button

Сообщение Эдуард » 05 авг 2017, 09:37

Здравствуйте!
А вы включили библиотеку для расширителя в h и cpp файлы вашей библиотеки?

Dimzon
Сообщения: 11
Зарегистрирован: 04 авг 2017, 02:39

Re: Урок №9 Библиотека Button

Сообщение Dimzon » 07 авг 2017, 13:19

Да, включал. Проблема проявляется при компиляции самой библиотеки кнопки - если объявляешь объект экспандера в основном скетче, то компиляция библиотеки завершается с ошибкой, что типа объект не заявлен в данной области. А если объявить объект экспандер внутри библиотеки кнопки - то в этом случае компиляция библиотеки проходит без ошибок, но тогда экспандер не получится использовать для других целей в основном скетче - ибо опять же он не заявлен в данной области. Что-то мне подсказывает, что при создании объекта "кнопка", нужно в качестве третьего аргумента (expander$$) вместо объекта "expander" нужно указывать ссылку на объект (или на адрес объекта - как правильно выразиться?). Вот щас пытаюсь с этим разобраться


Вернуться в «Уроки Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей