Объектно-ориентированное программирование Arduino

Может ли кто-нибудь прислать мне ссылку на учебник по объектно-ориентированному программированию Arduino? Я хочу изучить Arduino, я только новичок.

, 👍1

Обсуждение

Небольшая информация, которая отсутствует в ответах: ООП имеет небольшие накладные расходы из-за некоторой шаблонной пластины и создания объектов. Эти накладные расходы настолько незначительны для настольных компьютеров, серверов и даже мобильных устройств, что мы обычно даже не упоминаем об этом. Однако на arduino, с его жесткими ограничениями на память и вычислительную мощность, и где каждый байт может иметь значение, эти накладные расходы могут стать заметными. В зависимости от вашего варианта использования, это может быть что-то, что следует учитывать., @Douwe

Согласен с @Douwe - Arduino - это не место для использования ООП, потому что это не среда, в которой ООП может действительно использовать свою мощь. ООП — это стратегия проектирования, возникшая из-за необходимости упростить и абстрагировать сложные программы. Arduino настолько мал и настолько прост, что программы никогда не становятся настолько сложными с самого начала . Настольная или мобильная среда — гораздо лучшее место для изучения ООП, потому что все, что вы используете в этой среде, уже является объектами — есть целая структура для обучения. На ардуино нет ничего, кроме того, что вы строите., @J...


4 ответа


Лучший ответ:

8

"Ардуино" это просто старый C++ с удаленными (в некоторых случаях) битами и некоторыми вспомогательными функциями и классами.

Для небольших (например, AVR с меньшим энергопотреблением) в библиотеке C++ нет полной STL, а некоторые функции имеют упрощенную сложность (например, отсутствие поддержки с плавающей запятой в семействе printf функции по умолчанию).

Для ООП вам не нужно ничего знать "Arduino" - это просто С++. Любой учебник C++ по ООП научит вас тому, что вам нужно знать для Arduino OOP.

,

Спасибо, буду разбираться, @Time Gold


3

Вы раньше программировали ООП? Во многих проектах вы можете этого не знать.

Я также отмечу, что если вы только начинаете, я не рекомендую начинать с ООП. Придерживайтесь более простых сценариев (поверьте мне, ООП иногда доставляет много хлопот).

Если вы по-прежнему настаиваете на том, чтобы начать изучение Arduino с ООП, поищите "классы C++" или "С++ ООП" так как язык по умолчанию, который использует IDE arduino, является просто модифицированной версией "C++"

,

Да, я уже делал oop на другом языке, таком как c#, я просто хочу ознакомиться с синтаксисом arduino c++., @Time Gold


1

Я использовал ООП с C++ на Arduino Due в проекте с открытым исходным кодом.

Поскольку я не нашел ни одного учебника по этому же вопросу, пример может быть вам полезен.

https://github.com/eschlot/Box-Joint-Jig-Control

Что касается удобства использования ООП во встроенных системах для сценариев, подобных приведенному выше, есть много веских причин для использования ООП. Хорошим примером является структура меню и элемент управления отображением в проекте. Тем не менее, исходя из моего опыта, важно понимать влияние автоматического создания объектов и предварительной реорганизации памяти на поведение систем реального времени. Это гораздо менее предсказуемо в C++, чем в простом C, и может быть причиной отказа от использования ООП в любой системе реального времени.

,

2

http://paulmurraycbr.github.io/ArduinoTheOOWay.html действительно помог мне понять, что происходит. у меня был некоторый предыдущий опыт работы с java, но мне все еще трудно использовать несколько файлов по сравнению с написанием большего количества методов в одном файле

,