Как написать код 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++. Но я хотел бы знать, как лучше.
@Alien5516788, 👍-1
Обсуждение1 ответ
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
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
- Разница между массивом char и массивом unsigned char
- Arduino UNO + Ethernet Shield + ЖК-дисплей + RFID, но RFID не работает
- Firmata: как установить определенный PIN на высокий уровень при загрузке?
- Arduino wrap или подкласс print() для работы с несколькими Serial
- Считывание данных нескольких датчиков из текстового файла, расположенного на SD-карте в Arduino/ESP32
- Строка в массив динамических байтов
- Проблемы с Serial.read()
Мне непонятно, в чем именно у вас проблема. Код 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