Вы начали использовать динамическое выделение памяти. Это значит, что контроль за свободной памятью у вас теперь чуть сложнее. Если раньше (при статическом объявлении дисплеев) вы при компиляции видели, сколько у вас осталось, то теперь эта информация недостоверна. Очередной new может и не получиться.
В динамической памяти для этой задачи нет необходимости. Все осуществимо без new. Хотите получать удовольствие от хобби - изучайте предметную область. Делать по указке - радости мало, с каждым шагом все больше неизвестного.
Как-то начинал на Action-script, даже деньги получалось зарабатывать на этом.
Потом познакомился с ЦПП плюс, языки высокого уровня стали непонятны совершенно, как так?
Вот и отлично. А то Ваши ошибки они же не такие, что “прям ошибки” – просто абсолютное незнание языка. Вот, смотрите, аналогия какая … как-то в китайском магазине на озоне увидел
Если ты считаешь, что увлекаешься музыкой, но т.к. не являешься в этой области профессионалом, то тебе достаточно всего двух нот, не удивляйся, что тебя никто не хочет слушать.
И еще:
Хобби - это то, что никто не заставляет делать, а делается исключительно для собственного удовольствия.
Позволю себе процитировать Понтрягина: Только качественно выполненная работа доставляет удовольствие.
Другими словами, халтура никак не может быть хобби.
О том и речь: Вам только что намекнули, что эта диагностика для динамического выделения памяти не соответствует действительности.
То есть опять халтура по принципу “и так сойдет”.
Какое же это хобби?
Вот это замечание нуждается в комментарии.
В системе Ардуино не зря широко применяются методы init(), begin() и им подобные вместо того, чтобы использовать конструктор класса. Это не случайно.
Дело в том, что инициализация всех статических переменных происходит до выполнения первого оператора программы. При этом, как известно, название программы на Си предопределено: main(). Но в Ардуино ее не видно. А она есть!
Для разных МК она различается, но в общем имеет примерно следующую структуру:
То есть первый выполняемый оператор находится в блоке system_init() и настраивает “железо” МК для работы в системе Ардуино.
Но код конструктора статического класса выполняется до инициализации “железа” МК. Поэтому его работоспособность зависит от того, используются ли в конструкторе класса какие-либо обращения к системным функциям Ардуино.
Соответственно, если это так, инициализацию внешнего “железа” следует вынести из конструктора класса в отдельный метод init(), вызываемый из setup().
Наличие метода init() в классе LiquidCrystal_I2C как бы само по себе намекает на наличие такой зависимости.
Поэтому и вызывать метод init() любого постороннего из конструктора собственного класса не следует. Во избежание трудно отлавливаемых ошибок.