Могу ли я вызывать функции из другого скетча?

Я новичок в программировании с Arduino и не уверен, как мне вызвать функции (например, getData()) для сенсорного ЖК-дисплея, чтобы отобразить эти данные. Цель моего устройства — прослушивать обмен данными между датчиками и контроллером, поэтому у меня есть одна плата RedBoard с шилдом CAN-BUS и скетчем dataComms.ino, который инициализирует функции получения данных из полученных пакетов данных и анализирует их.

Нужно ли мне создавать еще один скетч для отображения? Если да, то как мне вызывать функции из другого скетча, чтобы display.ino имел доступ к полученным значениям? Или есть какие-то лучшие способы отображения данных?

, 👍1


1 ответ


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

1

Вы можете использовать только один скетч одновременно, то есть один скетч может быть сохранен внутри Arduino для выполнения.

Это означает, что весь ваш код (и функциональность для всех устройств, к которым вы хотите получить доступ) должны находиться в пределах одного эскиза.

Итак, в основном вам нужно сделать следующее:

  • Добавьте библиотеку для каждого устройства, которое вы хотите использовать.
  • Вызовите функции из этой библиотеки в вашем .ino-файле.
  • Если вы хотите добавить функции, которые не являются частью библиотеки, вы добавляете как код функции, так и вызов (там, где это необходимо) в свой файл .ino.

Кроме того, если вы новичок, не начинайте со всего одновременно.

  • Сначала найдите пример управления дисплеем (это, вероятно, проще, чем CAN shield).
  • Добавить библиотеку для отображения
  • Измените (или скопируйте из примера) код для отображения
  • Запустите и отладьте, пока не заработает.
  • Создайте новый эскиз для CAN-шилда.
  • Добавьте библиотеку для CAN-шилда.
  • Вызовите функции из этой библиотеки (или используйте пример, если он доступен).
  • Как только вы убедитесь, что знаете, как использовать оба устройства (дисплей + CAN), объедините эскизы (создайте новый эскиз, добавьте обе библиотеки, скопируйте код и сделайте его одним эскизом).
,

Спасибо огромное! Означает ли это, что мой .ino файл выступает в качестве основного, через который мне нужно настроить CAN Shield и LCD? Также, полагаю, мне нужно будет создать .cpp и .h файлы для создания библиотек для обоих устройств, не так ли? (Для прототипов и объявлений переменных), @Henrikas

Надеюсь, у вас уже есть библиотеки (или они существуют).. Создание библиотеки для новичка — задача не из легких. Arduino IDE уже имеет механизм для добавления библиотек (Manage/Add libraries или что-то в этом роде, у меня нет IDE под рукой). Ваш файл .ino имеет две функции: setup (инициализация) и loop (непрерывный запуск). Main скрыта в фреймворке, который генерирует Arduino IDE, и он вызывает setup и loop. Проверьте наличие некоторых базовых примеров., @Michel Keijzers