Как написать код arduino в скрипте ac/c++

Я новичок в arduino. Но у меня есть некоторые познания в программировании на c/c++. Я знаю, что ардуино написано на c. Но его нельзя использовать как обычный код c/c++. Например , вместо того, чтобы включать некоторые библиотеки и писать такой код..

#include "arduino.h"


int main(){

    pinMode(13, OUTPUT);

    while(1){
    digitalWrite(13, HIGH);
    .....
    }
}

Мы должны написать его, используя функции, определенные в arduino.

void setup(){
    pinMode(13, OUTPUT);
}

void loop(){
    digitalWrite(13, HIGH);
    .....
}

Но у меня есть некоторые другие библиотеки, программы и прочее, написанное на C и C++, и мне нужно использовать в них некоторый код Arduino и скомпилировать. Итак, мой вопрос: есть ли способ написать arduino на чистом c/c++, как в первом фрагменте кода.

*Мне может не понадобиться Arduino для этого. Моя основная цель — использовать сервоприводы, датчики в программах, написанных на c/c++. Но я хотел бы знать, как лучше.

, 👍-1

Обсуждение

Мне непонятно, в чем именно у вас проблема. Код Arduino — это код C++. Единственная разница заключается в том, что IDE делает перед компиляцией (автоматически включает arduino.h и записывает прототипы функций для определенных вами функций, чтобы их можно было разместить где угодно). «Функции Arduino» определены в файлах заголовков, которые подключаются через arduino.h. Вы пытаетесь запрограммировать Arduino без фреймворка Arduino? Или вы просто хотите знать, как избежать pinMode() и digitalWrite()?, @chrisl

Примечание. Ваш первый код просто недействителен для C/C++, потому что вы выполняете код вне какой-либо функции (в данном случае это функция pinMode()), @chrisl

Спасибо не заметил. Что мне нужно сделать, так это объединить код Arduino с другими моими программами на С++, которые в некоторых случаях используют сервоприводы и некоторые датчики. Когда я использую ide, мне приходится использовать функции setup() и loop(). Что мне нужно знать, так это могу ли я написать код, как в первом фрагменте, и загрузить его на плату. Если возможно, то как? Потому что arduino ide поддерживает только файлы .ino. не .cpp . Что я имел в виду под «лучшим способом», так это то, что я должен использовать Arduino для управления сервоприводами и датчиками или найти какой-то другой способ подключить их к моим программам., @Alien5516788

Итак, ваш вопрос больше касается общего плана проекта? Какие еще у вас есть программы на C++, которые необходимо интегрировать с Arduino? При наличии программ на ПК и необходимости взаимодействия с периферийными устройствами, такими как датчики и сервоприводы, обычно используется Arduino (или любой другой микроконтроллер), напишите для него программу для использования датчиков и сервоприводов и связи с ПК через Serial / USB. Это то, что вы хотите?, @chrisl

Да, это именно то, что я хочу. Если мне нужно загрузить код на плату, чтобы использовать датчики. Это, конечно, невозможно. Собираю устройство для чтения и копирования книг. У меня есть несколько библиотек С++, написанных с помощью opencv для обработки изображений и вычислений. Я планировал использовать arduino для устройства обработки книг. Я не уверен, что это возможно, как описано в вопросе., @Alien5516788

Вы не будете запускать код OpenCV на Arduino: он недостаточно мощен для этого. Скорее всего, вам придется написать несколько программ, которые взаимодействуют и работают вместе: одна работает на Arduino для работы с книгами, другая — на вашем компьютере для обработки изображений., @Edgar Bonet


1 ответ


2

IDE Arduino использует C++, а не C.

Вы не обязаны использовать setup и loop. Это действительный скетч Arduino:

#include <Arduino.h>

int main ()
  {
  init ();  // инициализируем таймеры
  Serial.begin (115200);
  Serial.println ("Hello, world");
  Serial.flush (); // завершаем последовательную печать
  }  // конец основного

Но я хотел бы знать, как лучше всего.

Способ, который лучше всего подходит для вас. В среде IDE есть несколько удобных функций. Вам не обязательно их использовать. Вы можете посмотреть таблицу данных и напрямую обратиться к аппаратным регистрам.

Дополнительную информацию см. здесь.

,

Но как мне загрузить это на плату. Если это невозможно, как подключить плату к моим программам на С++. ide совместим только с файлами .ino., @Alien5516788

@ Alien5516788: вы можете легко преобразовать программу C++ в программу .ino: просто измените расширение файла на .ino., @Edgar Bonet

Вы используете IDE для загрузки того, что я разместил на плате. Это был «скетч» Arduino. Кроме того, вы можете поместить файлы C++ в ту же папку, что и файлы .INO., @Nick Gammon

Вы читали ссылку, которую я упомянул в своем ответе? Это показывает использование файлов C++., @Nick Gammon

@ Alien5516788, Чтобы было ясно, *только* файлы .ino/.pde подлежат такой предварительной обработке, которая отличает «язык» Arduino от обычного C ++. Ядро, основные библиотеки и системные библиотеки написаны в виде смеси файлов .c/.cpp/.h (как правило, не файлов INO), как и большинство (если не все) большинства неосновных библиотек. Основной код, входящий в любой типичный проект Arduino, на самом деле написан на обычном коде C++ (или C), независимо от того, понимает это конечный пользователь или нет. Вы также не обязаны писать большую часть своего собственного кода в файлах .ino., @timemage

Спасибо, я прочитал вашу статью. Я пытался загрузить файлы .cpp на плату arduino. Теперь все понятно. Также мне нужно знать, как работают файлы .ino. Как описано в статье, Arduino.h включен в файл .cpp, а файл .ino пуст. Как это сработает., @Alien5516788

Среда IDE компилирует **все** файлы .cpp и связывает их вместе. Так что пустой файл .ino не имеет большого значения. Директивы #include в файле .ino сообщают IDE, какие библиотеки следует включать (ссылка)., @Nick Gammon

@Nick Gammon: Решение, которое вы дали здесь http://www.gammon.com.au/forum/bbshowpost.php?id=12625, хорошо, но обоснование меньше, поскольку все 3 ваших примера создания плохого прототипа имеют, в исправлено, по крайней мере, в IDE 1.8.19 и, возможно, ранее. Если вам все еще нужно проиллюстрировать это на примере, который в настоящее время не работает, вот один из них: https://github.com/arduino/arduino-builder/issues/362., @6v6gt

@ 6v6gt А, это было написано 8 лет назад. Как и многое другое в компьютерной индустрии, старый код не всегда хорошо переносится., @Nick Gammon

Верно. Единственная положительная сторона функции автоматического создания прототипов Arduino заключается в том, что есть простые обходные пути, позволяющие избежать ее непреднамеренного использования. Я уверен, что если бы мы могли вернуться в прошлое с нашими нынешними знаниями, эта функция не появилась бы в ее нынешнем виде., @6v6gt