Arduino ide, какой язык программирования

Обновлено: 21.11.2024

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

Плата Arduino подключается к компьютеру через USB, где она подключается к среде разработки Arduino (IDE). Пользователь пишет код Arduino в среде IDE, а затем загружает его в микроконтроллер, который выполняет код, взаимодействуя с входами и выходами, такими как датчики, двигатели и источники света.

Как начинающие, так и опытные пользователи имеют доступ к множеству бесплатных ресурсов и вспомогательных материалов. Пользователи могут найти информацию о том, как настроить свою плату или даже как программировать на Arduino. Открытый исходный код Arduino сделал его особенно удобным для новых и опытных пользователей. В Интернете доступны тысячи примеров кода Arduino. В этом посте мы познакомим вас с некоторыми основными принципами кодирования для Arduino.

Среда кодирования Arduino и основные инструменты

На каком языке Arduino?

Код Arduino написан на C++ с добавлением специальных методов и функций, о которых мы поговорим позже. C++ — человекочитаемый язык программирования. Когда вы создаете «скетч» (название, данное файлам кода Arduino), он обрабатывается и компилируется в машинный язык.

IDE Arduino

Интегрированная среда разработки Arduino (IDE) — это основная программа редактирования текста, используемая для программирования Arduino. Здесь вы будете набирать свой код перед загрузкой на доску, которую хотите запрограммировать. Код Arduino называется скетчами.

Примечание. Важно использовать последнюю версию Arduino IDE. Время от времени проверяйте наличие обновлений здесь.

Пример кода Arduino

Как видите, IDE имеет минималистичный дизайн. В строке меню всего 5 заголовков, а также ряд кнопок под ними, которые позволяют вам проверять и загружать свои эскизы. По сути, IDE переводит и компилирует ваши скетчи в код, понятный Arduino. После компиляции кода Arduino он загружается в память платы.

Все, что нужно сделать пользователю, чтобы начать компиляцию эскиза, — это нажать кнопку (руководство по этому вопросу можно найти ниже).

Если в коде Arduino есть какие-либо ошибки, появится предупреждающее сообщение, предлагающее пользователю внести изменения. Большинство новых пользователей часто испытывают трудности с компиляцией из-за строгих требований к синтаксису Arduino. Если вы сделаете какие-либо ошибки в пунктуации при использовании Arduino, код не будет скомпилирован, и вы увидите сообщение об ошибке.

Последовательный монитор и последовательный плоттер

Последовательный монитор Arduino можно открыть, щелкнув значок увеличительного стекла в верхней правой части IDE или под инструментами. Последовательный монитор используется в основном для взаимодействия с платой Arduino с помощью компьютера и является отличным инструментом для мониторинга и отладки в реальном времени. Чтобы использовать монитор, вам нужно использовать класс Serial.

Код, который вы загружаете с Circuito.io, содержит тестовый раздел, который поможет вам протестировать каждый компонент с помощью монитора последовательного порта, как показано на снимке экрана ниже:

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

Отладка кода и оборудования Arduino

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

Используя класс Serial, вы можете печатать на последовательном мониторе, отлаживая комментарии и значения переменных. На большинстве моделей Arduino для этого будут использоваться последовательные контакты 0 и 1, которые подключены к порту USB.

Структура кода

Библиотеки

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

Чтобы импортировать новую библиотеку, выберите Sketch > Import Library

Определения контактов

Чтобы использовать выводы Arduino, необходимо определить, какой вывод используется, и его функции. Удобный способ определить используемые контакты — использовать:

Функции ввода или вывода определяются с помощью метода pinMode() в разделе настройки.

Декларации

Переменные

Всякий раз, когда вы используете Arduino, вам нужно объявить глобальные переменные и экземпляры, которые будут использоваться позже. В двух словах, переменная позволяет вам назвать и сохранить значение, которое будет использоваться в будущем. Например, вы можете сохранить данные, полученные с датчика, чтобы использовать их позже. Чтобы объявить переменную, вы просто определяете ее тип, имя и начальное значение.

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

Экземпляры

В программировании программного обеспечения класс – это набор функций и переменных, которые хранятся вместе в одном месте. Каждый класс имеет специальную функцию, известную как конструктор, которая используется для создания экземпляра класса. Чтобы использовать функции класса, нам нужно объявить для него экземпляр.

Настройка()

Каждый скетч Arduino должен иметь функцию настройки. Эта функция определяет начальное состояние Arduino при загрузке и запускается только один раз.

Здесь мы определим следующее:

  1. Функции закрепления с помощью функции pinMode
  2. Исходное состояние булавок
  3. Инициализировать классы
  4. Инициализировать переменные
  5. Логика кода

Цикл()

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

Примечание. Использование термина "недействительно" означает, что функция не возвращает никаких значений.

Как программировать Arduino

Основная логика кода Arduino представляет собой структуру «если-то» и может быть разделена на 4 блока:

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

Ввод — в начале цикла считываются вводы. Эти значения будут использоваться в качестве условий («если»), таких как показания окружающего освещения из LDR с использованием AnalogRead().

Управление данными — этот раздел используется для преобразования данных в более удобную форму или выполнения расчетов. Например, функция AnalogRead() дает значение от 0 до 1023, которое может быть преобразовано в диапазон от 0 до 255 для использования в ШИМ (см. AnalogWrite())

Вывод — в этом разделе определяется окончательный результат логики («тогда») в соответствии с данными, рассчитанными на предыдущем шаге. Глядя на наш пример LDR и PWM, включайте светодиод только тогда, когда уровень окружающего освещения падает ниже определенного порога.

Библиотеки кода Arduino

Структура библиотеки

Библиотека – это папка, состоящая из файлов с файлами кода C++ (.cpp) и заголовочными файлами C++ (.h).

Файл .h описывает структуру библиотеки и объявляет все ее переменные и функции.

Файл .cpp содержит реализацию функции.

Импорт библиотек

Первое, что вам нужно сделать, это найти библиотеку, которую вы хотите использовать, среди множества библиотек, доступных в Интернете. После загрузки на компьютер вам просто нужно открыть Arduino IDE и щелкнуть Sketch > Include Library > Manage Libraries. Затем вы можете выбрать библиотеку, которую хотите импортировать в IDE. После завершения процесса библиотека будет доступна в меню эскиза.

От программного обеспечения к аппаратному обеспечению

Можно многое сказать о программных возможностях Arduino, но важно помнить, что платформа состоит как из программного, так и из аппаратного обеспечения. Они работают вместе, чтобы запустить сложную операционную систему.

Код → Компилировать → Загрузить → Выполнить

В основе Arduino лежит возможность компилировать и запускать код.

После написания кода в среде IDE его необходимо загрузить в Arduino.Нажатие кнопки «Загрузить» (значок со стрелкой вправо) скомпилирует код и загрузит его, если он прошел компиляцию. После завершения загрузки программа запустится автоматически.

Вы также можете сделать это пошагово:

Как видите, значок галочки находится в левом верхнем углу под тегом «Файл» в разделе меню.

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

Как видите, зеленая строка внизу страницы говорит о том, что компиляция завершена. Если ваш код не запустится, вы получите уведомление в том же разделе, а проблемный код будет выделен для редактирования.

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

  1. Выберите последовательный порт, к которому в данный момент подключена ваша Arduino. Для этого нажмите «Инструменты»> «Последовательный порт» в меню, чтобы указать выбранный вами последовательный порт (как показано ранее выше). Затем вы можете загрузить скомпилированный эскиз.
  2. Чтобы загрузить эскиз, нажмите значок загрузки рядом с галочкой. В качестве альтернативы вы можете перейти в меню и нажать «Файл»> «Загрузить». Ваши светодиоды Arduino будут мигать во время передачи данных.

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

Настройка IDE

Чтобы подключить плату Arduino к компьютеру, вам понадобится USB-кабель. При использовании Arduino UNO USB передает данные программы непосредственно на вашу плату. USB-кабель используется для питания Arduino. Вы также можете подключить Arduino к внешнему источнику питания.

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

Выберите плату. Вам нужно указать, какую плату Arduino вы собираетесь использовать. Для этого нажмите Инструменты > Доска > Ваша доска.

Выберите свой процессор — есть определенные платы (например, Arduino pro-mini), для которых вам нужно указать, какая у вас модель процессора. В разделе инструменты > процессор > выберите модель, которая у вас есть.

Выберите свой порт. Чтобы выбрать порт, к которому подключена ваша плата, выберите «Инструменты» > «Порт» > COMX Arduino (это последовательный порт Arduino).

Как установить сторонние платы (например, NodeMCU)

Некоторые модели плат не предустановлены в Arduino IDE, поэтому вам необходимо установить их перед загрузкой кода.

Чтобы установить стороннюю плату, такую ​​как NodeMCU, необходимо:

  1. Нажмите "Инструменты" > "Доски" > "Диспетчер досок".
  2. Найдите доску, которую хотите добавить, в строке поиска и нажмите «Установить».

Некоторые доски нельзя найти в Менеджере досок. В этом случае вам нужно будет добавить их вручную. Для этого:

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

Примечание: процесс может немного отличаться для разных досок.

Arduino: чрезвычайно универсальная платформа

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

По мере того, как вы совершенствуете свои навыки, вы можете столкнуться с проблемами, требующими отладки, что является слабым местом Arduino IDE. К счастью, существует несколько инструментов и методов для отладки аппаратного и программного обеспечения Arduino. В следующей статье мы рассмотрим, как отлаживать Arduino (и как тестировать код Arduino), а также как использовать симуляторы и эмуляторы.

Как написать программу для платы Arduino? Arduino изначально поддерживает язык, который мы называем языком программирования Arduino или языком Arduino.

Опубликовано 24 января 2020 г.

Как вы можете писать программы для своей платы Arduino?

Arduino изначально поддерживает язык, который мы называем языком программирования Arduino или языком Arduino.

Этот язык основан на платформе разработки Wiring, которая, в свою очередь, основана на Processing, на котором, если вы не знакомы, лежит p5.js. Это длинная история проектов, основанных на других проектах, с очень открытым исходным кодом. Arduino IDE основана на Processing IDE и Wiring IDE, которая надстраивается над ней.

Когда мы работаем с Arduino, мы обычно используем Arduino IDE (интегрированная среда разработки), программное обеспечение, доступное для всех основных настольных платформ (macOS, Linux, Windows), которое дает нам 2 вещи: редактор программирования с поддержкой встроенных библиотек. , а также способ легко компилировать и загружать наши программы Arduino на плату, подключенную к компьютеру.

Язык программирования Arduino — это, по сути, фреймворк, созданный на основе C++. Вы можете возразить, что это не настоящий язык программирования в традиционном понимании, но я думаю, что это помогает новичкам избежать путаницы.

Программа, написанная на языке программирования Arduino, называется эскизом. Эскиз обычно сохраняется с расширением .ino (от Ardu ino ).

Основное отличие от «обычного» языка C или C++ заключается в том, что весь код помещается в две основные функции. Конечно, у вас может быть больше 2, но любая программа для Arduino должна обеспечивать хотя бы эти 2.

Один называется setup() , другой — loop() . Первый вызывается один раз при запуске программы, второй вызывается многократно во время работы вашей программы.

У нас нет функции main(), к которой вы привыкли в C/C++, в качестве точки входа в программу. Как только вы скомпилируете эскиз, среда IDE проследит за тем, чтобы конечный результат был корректной программой на C++, и в основном добавит недостающее связующее вещество путем предварительной обработки.

Все остальное — это обычный код C++, а поскольку C++ — это надмножество C, любой допустимый C также является допустимым кодом Arduino.

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

Частью языка программирования Arduino являются встроенные библиотеки, которые позволяют легко интегрироваться с функциями, предоставляемыми платой Arduino.

Ваша первая программа для Arduino наверняка будет включать в себя включение светодиода, а затем его выключение. Для этого вы будете использовать функции pinMode() , delay() и digitalWrite() вместе с некоторыми константами, такими как HIGH , LOW , OUTPUT .

Вот так, канонический первый проект Arduino («Hello, World!»):

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

Поддержка другого языка

Напоминаю, что вы не ограничены использованием этого языка и IDE для программирования Arduino. Среди прочего существуют проекты, позволяющие запускать на нем код Node.js с помощью проекта Johnny Five, код Python с использованием pyserial и код Go с Gobot, но язык программирования Arduino, безусловно, является тем, на котором вы увидите большинство руководств, основанных на нем. поскольку это стандартный и канонический способ работы с этими устройствами.

Встроенные константы языка программирования Arduino

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

HIGH соответствует высокому уровню напряжения, которое может различаться в зависимости от аппаратного обеспечения (> 2 В на платах 3,3 В, таких как Arduino Nano,> 3 В на платах 5 В, таких как Arduino Uno). LOW соответствует низкому уровню напряжения. Опять же, точное значение зависит от используемой платы

Тогда у нас есть 3 константы, которые мы можем использовать в сочетании с функцией pinMode():

  • INPUT устанавливает контакт как входной.
  • OUTPUT устанавливает контакт как выходной.
  • INPUT_PULLUP устанавливает контакт как внутренний подтягивающий резистор

Другая константа, которая у нас есть, это LED_BUILTIN , которая указывает на номер встроенного контакта, который обычно соответствует числу 13 .

Кроме того, у нас есть константы C/C++ true и false .

Математические константы Arduino

  • M_PI - константа числа пи ( 3,14159265358979323846 )
  • M_E константа e
  • M_LN10 — натуральный логарифм числа 10.
  • M_LN2 – натуральный логарифм числа 2.
  • M_LOG10E логарифм e по основанию 10.
  • M_LOG2E – логарифм e по основанию 2.
  • M_SQRT2 — квадратный корень из 2.
  • NAN — константа NAN (не число).

Встроенные функции языка программирования Arduino

В этом разделе я собираюсь сделать ссылку на встроенные функции, предоставляемые языком программирования Arduino.

Жизненный цикл программы

  • setup() эта функция вызывается один раз при запуске программы, а также при выключении и перезапуске Arduino.
  • loop() эта функция многократно вызывается во время работы программы Arduino.

Обработка ввода-вывода

Следующие функции помогают обрабатывать ввод и вывод с вашего устройства Arduino.

Цифровой ввод-вывод

  • digitalRead() считывает значение с цифрового контакта. Принимает номер вывода в качестве параметра и возвращает константу HIGH или LOW.
  • digitalWrite() записывает значение HIGH или LOW на контакт цифрового выхода.Вы передаете номер вывода и HIGH или LOW в качестве параметров.
  • pinMode() устанавливает контакт как вход или выход. Вы передаете номер вывода и значение INPUT или OUTPUT в качестве параметров.
  • pulseIn() считывает цифровой импульс от LOW до HIGH, а затем снова до LOW, или от HIGH до LOW и снова до HIGH на выводе. Программа будет блокироваться до тех пор, пока не будет обнаружен пульс. Вы указываете номер вывода и тип импульса, который хотите обнаружить (LHL или HLH). Вы можете указать необязательный тайм-аут, чтобы прекратить ожидание этого импульса.
  • pulseInLong() аналогична pulseIn(), за исключением того, что она реализована по-другому и ее нельзя использовать, если отключены прерывания. Прерывания обычно отключаются, чтобы получить более точный результат.
  • shiftIn() считывает байт данных по одному биту за раз с контакта.
  • shiftOut() побитно записывает байт данных на вывод.
  • tone() отправляет прямоугольную волну на контакт, используемый для зуммеров/динамиков для воспроизведения тонов. Вы можете указать пин и частоту. Он работает как с цифровыми, так и с аналоговыми выводами.
  • noTone() останавливает сгенерированную тоном() волну на булавке.

Аналоговый ввод/вывод

  • analogRead() считывает значение с аналогового контакта.
  • analogReference() настраивает значение, используемое для верхнего диапазона аналогового входа, по умолчанию 5 В для плат 5 В и 3,3 В для плат 3,3 В.
  • analogWrite() записывает аналоговое значение на вывод
  • analogReadResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogRead() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)
  • analogWriteResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogWrite() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)

Функции времени

  • delay() приостанавливает выполнение программы на количество миллисекунд, указанное в качестве параметра
  • delayMicroseconds() приостанавливает выполнение программы на количество микросекунд, указанное в качестве параметра
  • micros() количество микросекунд с момента запуска программы. Сбрасывается примерно через 70 минут из-за переполнения.
  • millis() количество миллисекунд с момента запуска программы. Сбрасывается примерно через 50 дней из-за переполнения.

Математические функции

  • abs() абсолютное значение числа
  • constrain() ограничивает число в диапазоне, см. использование
  • map() повторно отображает число из одного диапазона в другой, см. использование
  • max() максимум два числа
  • min() минимальное из двух чисел
  • pow() значение числа, возведенного в степень
  • sq() квадрат числа
  • sqrt() квадратный корень числа
  • cos() косинус угла
  • sin() синус угла
  • tan() тангенс угла

Примечание. Если вам нужны встроенные математические функции, они описаны здесь.

Работа с буквенно-цифровыми символами

  • isAlpha() проверяет, является ли символ альфа-каналом (буквой)
  • isAlphaNumeric() проверяет, является ли символ буквенно-цифровым (буквой или цифрой)
  • isAscii() проверяет, является ли char символом ASCII
  • isControl() проверяет, является ли char управляющим символом
  • isDigit() проверяет, является ли char числом
  • isGraph() проверяет, является ли char печатаемым символом ASCII и содержит ли он содержимое (например, это не пробел)
  • isHexadecimalDigit() проверяет, является ли char шестнадцатеричной цифрой (A-F 0-9)
  • isLowerCase() проверяет, является ли char буквой нижнего регистра
  • isPrintable() проверяет, является ли char печатаемым символом ASCII
  • isPunct() проверяет, является ли символ пунктуацией (запятая, точка с запятой, восклицательный знак и т. д.)
  • isSpace() проверяет, является ли char пробелом, переводом страницы \f , новой строкой \n , возвратом каретки \r , горизонтальной табуляцией \t или вертикальной табуляцией \v .
  • isUpperCase() проверяет, является ли char буквой в верхнем регистре
  • isWhitespace() проверяет, является ли символ пробелом или горизонтальной табуляцией \t

Генерация случайных чисел

  • random() генерирует псевдослучайное число
  • randomSeed() инициализирует генератор псевдослучайных чисел произвольным начальным числом

В Arduino, как и в большинстве языков, невозможно получить действительно случайные числа, и последовательность всегда одна и та же, поэтому вы задаете ее текущим временем или (в случае Arduino) вы можете прочитать ввод из аналоговый порт.

Работа с битами и байтами

  • bit() вычисляет значение бита (0 = 1, 1 = 2, 2 = 4, 3 = 8…)
  • bitClear() очищает (устанавливает в 0) часть числовой переменной. Принимает число и номер бита, начиная справа
  • bitRead() считывает часть числа. Принимает число и номер бита, начиная справа
  • bitSet() устанавливает в 1 бит числа.Принимает число и номер бита, начиная справа
  • bitWrite() записывает 1 или 0 в определенный бит числа Принимает число, номер бита, начиная справа, и значение для записи (0 или 1)
  • highByte() получает старший (самый левый) байт словарной переменной (которая имеет 2 байта)
  • lowByte() получает младший (самый правый) байт словарной переменной (которая имеет 2 байта)

Прерывания

  • noInterrupts() отключает прерывания
  • interrupts() снова включает прерывания после того, как они были отключены
  • attachInterrupt() позволяет цифровому входу быть прерыванием. Разные доски имеют разные разрешенные контакты, проверьте официальные документы.
  • detachInterrupt() отключает прерывание, включенное с помощью attachInterrupt()

Хотите стать лучшим веб-разработчиком? Присоединяйтесь к учебному лагерю веб-разработки 2022!

Готовы попробовать что-то новое с Arduino? Вам не нужно ограничиваться программированием на C. Попробуйте эти альтернативные языки.

Готовы попробовать что-то новое с Arduino? Вам не нужно ограничиваться программированием на C, когда вы можете протестировать эти альтернативные языки Arduino.

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

Важно найти язык, который говорит с вами и с целями, которых вы хотите достичь.

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

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

XOD – это загружаемый инструмент, работающий в качестве дополнения к официальной среде разработки Arduino IDE. Также доступна версия для быстрого запуска браузера. Конечный продукт ничем не будет отличаться от программы, созданной с использованием обычного процесса, так что это отличный первый шаг, если вы только начинаете. Для тех, кто еще не совсем готов к изучению языка программирования, это отличный способ изучить ключевые понятия, не вдаваясь в технические тонкости кодирования.

Snap4Arduino

Основанный на языке визуального программирования с функцией перетаскивания, разработанном в Беркли, Snap4Arduino предлагает несколько иной опыт, чем XOD. Метод создания набросков в визуальном дизайнере остается почти таким же, но ясно, что это программное обеспечение предназначено для более старшей аудитории.

С более заниженным пользовательским интерфейсом и меньшим вниманием к наворотам, Snap4Arduino решительно не покровительствует. Нет никакого смысла в том, что это более простой метод программирования; это просто отличается от нормы.

Одна из хитростей при установке Snap4Arduino заключается в том, что для этого требуется, чтобы StandardFirmata была установлена ​​на вашем Arduino. Если на вашем компьютере уже установлена ​​среда разработки Arduino IDE, в этом легко разобраться. Просто откройте его и перейдите к Examples > Firmata > StandardFirmata. Загрузите его на свою доску, и вы сможете взаимодействовать с ним изнутри Snap4Arduino. Обратите внимание, что вы не можете компилировать программы, созданные в Snap, с помощью Firmata, просто взаимодействуйте с Arduino, когда он подключен к вашему компьютеру.

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

Питон

Хотя ваш Arduino не может сразу запускать код, написанный на Python, можно использовать Python для связи с устройством через последовательный ввод. Это очень просто в Unix-подобной системе, но если вы используете ПК или Mac, pySerial может заполнить пробел.Вы можете загрузить pySerial с веб-сайта его разработчика, на котором также содержится множество информации о запуске программного обеспечения в различных операционных системах — убедитесь, что у вас также есть копия Python в вашей системе.

Дополнительную информацию о чтении и записи данных в Arduino через pySerial можно найти на странице документации Arduino, но имейте в виду, что это довольно продвинутый метод. Если вы уже хорошо разбираетесь в Python, то, скорее всего, у вас будет хорошее представление о том, как его настроить и запустить, но если вы относительно новичок в языке или Arduino, существует множество отличных проектов Arduino. для начинающих, с которыми вы можете начать работать первыми.

При этом Python очень хорошо подходит для использования в сочетании с Arduino. Это язык кодирования, разработанный для интуитивного понимания, и поэтому его часто рекомендуют в качестве трамплина к другим формам кодирования. Более того, если вам когда-нибудь доведется перейти от Arduino к аналогичному Raspberry Pi, вы обнаружите, что ваш опыт работы с Python вам очень пригодится.

Попробуйте другой язык программирования Arduino сегодня

Если по какой-то причине Arduino IDE вам не подходит, существует множество альтернативных языков программирования на выбор. Если у вас уже есть опыт программирования, возможно, вы даже сможете продолжить работу на своем любимом языке.

Как написать программу для платы Arduino? Arduino изначально поддерживает язык, который мы называем языком программирования Arduino или языком Arduino.

Опубликовано 24 января 2020 г.

Как вы можете писать программы для своей платы Arduino?

Arduino изначально поддерживает язык, который мы называем языком программирования Arduino или языком Arduino.

Этот язык основан на платформе разработки Wiring, которая, в свою очередь, основана на Processing, на котором, если вы не знакомы, лежит p5.js. Это длинная история проектов, основанных на других проектах, с очень открытым исходным кодом. Arduino IDE основана на Processing IDE и Wiring IDE, которая надстраивается над ней.

Когда мы работаем с Arduino, мы обычно используем Arduino IDE (интегрированная среда разработки), программное обеспечение, доступное для всех основных настольных платформ (macOS, Linux, Windows), которое дает нам 2 вещи: редактор программирования с поддержкой встроенных библиотек. , а также способ легко компилировать и загружать наши программы Arduino на плату, подключенную к компьютеру.

Язык программирования Arduino — это, по сути, фреймворк, созданный на основе C++. Вы можете возразить, что это не настоящий язык программирования в традиционном понимании, но я думаю, что это помогает новичкам избежать путаницы.

Программа, написанная на языке программирования Arduino, называется эскизом. Эскиз обычно сохраняется с расширением .ino (от Ardu ino ).

Основное отличие от «обычного» языка C или C++ заключается в том, что весь код помещается в две основные функции. Конечно, у вас может быть больше 2, но любая программа для Arduino должна обеспечивать хотя бы эти 2.

Один называется setup() , другой — loop() . Первый вызывается один раз при запуске программы, второй вызывается многократно во время работы вашей программы.

У нас нет функции main(), к которой вы привыкли в C/C++, в качестве точки входа в программу. Как только вы скомпилируете эскиз, среда IDE проследит за тем, чтобы конечный результат был корректной программой на C++, и в основном добавит недостающее связующее вещество путем предварительной обработки.

Все остальное — это обычный код C++, а поскольку C++ — это надмножество C, любой допустимый C также является допустимым кодом Arduino.

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

Частью языка программирования Arduino являются встроенные библиотеки, которые позволяют легко интегрироваться с функциями, предоставляемыми платой Arduino.

Ваша первая программа для Arduino наверняка будет включать в себя включение светодиода, а затем его выключение. Для этого вы будете использовать функции pinMode() , delay() и digitalWrite() вместе с некоторыми константами, такими как HIGH , LOW , OUTPUT .

Вот так, канонический первый проект Arduino («Hello, World!»):

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

Поддержка другого языка

Напоминаю, что вы не ограничены использованием этого языка и IDE для программирования Arduino. Среди прочего существуют проекты, позволяющие запускать на нем код Node.js с помощью проекта Johnny Five, код Python с использованием pyserial и код Go с Gobot, но язык программирования Arduino, безусловно, является тем, на котором вы увидите большинство руководств, основанных на нем. поскольку это стандартный и канонический способ работы с этими устройствами.

Встроенные константы языка программирования Arduino

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

HIGH соответствует высокому уровню напряжения, которое может различаться в зависимости от аппаратного обеспечения (> 2 В на платах 3,3 В, таких как Arduino Nano,> 3 В на платах 5 В, таких как Arduino Uno). LOW соответствует низкому уровню напряжения. Опять же, точное значение зависит от используемой платы

Тогда у нас есть 3 константы, которые мы можем использовать в сочетании с функцией pinMode():

  • INPUT устанавливает контакт как входной.
  • OUTPUT устанавливает контакт как выходной.
  • INPUT_PULLUP устанавливает контакт как внутренний подтягивающий резистор

Другая константа, которая у нас есть, это LED_BUILTIN , которая указывает на номер встроенного контакта, который обычно соответствует числу 13 .

Кроме того, у нас есть константы C/C++ true и false .

Математические константы Arduino

  • M_PI - константа числа пи ( 3,14159265358979323846 )
  • M_E константа e
  • M_LN10 — натуральный логарифм числа 10.
  • M_LN2 – натуральный логарифм числа 2.
  • M_LOG10E логарифм e по основанию 10.
  • M_LOG2E – логарифм e по основанию 2.
  • M_SQRT2 — квадратный корень из 2.
  • NAN — константа NAN (не число).

Встроенные функции языка программирования Arduino

В этом разделе я собираюсь сделать ссылку на встроенные функции, предоставляемые языком программирования Arduino.

Жизненный цикл программы

  • setup() эта функция вызывается один раз при запуске программы, а также при выключении и перезапуске Arduino.
  • loop() эта функция многократно вызывается во время работы программы Arduino.

Обработка ввода-вывода

Следующие функции помогают обрабатывать ввод и вывод с вашего устройства Arduino.

Цифровой ввод-вывод

  • digitalRead() считывает значение с цифрового контакта. Принимает номер вывода в качестве параметра и возвращает константу HIGH или LOW.
  • digitalWrite() записывает значение HIGH или LOW на контакт цифрового выхода. Вы передаете номер вывода и HIGH или LOW в качестве параметров.
  • pinMode() устанавливает контакт как вход или выход. Вы передаете номер вывода и значение INPUT или OUTPUT в качестве параметров.
  • pulseIn() считывает цифровой импульс от LOW до HIGH, а затем снова до LOW, или от HIGH до LOW и снова до HIGH на выводе. Программа будет блокироваться до тех пор, пока не будет обнаружен пульс. Вы указываете номер вывода и тип импульса, который хотите обнаружить (LHL или HLH). Вы можете указать необязательный тайм-аут, чтобы прекратить ожидание этого импульса.
  • pulseInLong() аналогична pulseIn(), за исключением того, что она реализована по-другому и ее нельзя использовать, если отключены прерывания. Прерывания обычно отключаются, чтобы получить более точный результат.
  • shiftIn() считывает байт данных по одному биту за раз с контакта.
  • shiftOut() побитно записывает байт данных на вывод.
  • tone() отправляет прямоугольную волну на контакт, используемый для зуммеров/динамиков для воспроизведения тонов. Вы можете указать пин и частоту. Он работает как с цифровыми, так и с аналоговыми выводами.
  • noTone() останавливает сгенерированную тоном() волну на булавке.

Аналоговый ввод/вывод

  • analogRead() считывает значение с аналогового контакта.
  • analogReference() настраивает значение, используемое для верхнего диапазона аналогового входа, по умолчанию 5 В для плат 5 В и 3,3 В для плат 3,3 В.
  • analogWrite() записывает аналоговое значение на вывод
  • analogReadResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogRead() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)
  • analogWriteResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogWrite() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)

Функции времени

  • delay() приостанавливает выполнение программы на количество миллисекунд, указанное в качестве параметра
  • delayMicroseconds() приостанавливает выполнение программы на количество микросекунд, указанное в качестве параметра
  • micros() количество микросекунд с момента запуска программы. Сбрасывается примерно через 70 минут из-за переполнения.
  • millis() количество миллисекунд с момента запуска программы. Сбрасывается примерно через 50 дней из-за переполнения.

Математические функции

  • abs() абсолютное значение числа
  • constrain() ограничивает число в диапазоне, см. использование
  • map() повторно отображает число из одного диапазона в другой, см. использование
  • max() максимум два числа
  • min() минимальное из двух чисел
  • pow() значение числа, возведенного в степень
  • sq() квадрат числа
  • sqrt() квадратный корень числа
  • cos() косинус угла
  • sin() синус угла
  • tan() тангенс угла

Примечание. Если вам нужны встроенные математические функции, они описаны здесь.

Работа с буквенно-цифровыми символами

  • isAlpha() проверяет, является ли символ альфа-каналом (буквой)
  • isAlphaNumeric() проверяет, является ли символ буквенно-цифровым (буквой или цифрой)
  • isAscii() проверяет, является ли char символом ASCII
  • isControl() проверяет, является ли char управляющим символом
  • isDigit() проверяет, является ли char числом
  • isGraph() проверяет, является ли char печатаемым символом ASCII и содержит ли он содержимое (например, это не пробел)
  • isHexadecimalDigit() проверяет, является ли char шестнадцатеричной цифрой (A-F 0-9)
  • isLowerCase() проверяет, является ли char буквой нижнего регистра
  • isPrintable() проверяет, является ли char печатаемым символом ASCII
  • isPunct() проверяет, является ли символ пунктуацией (запятая, точка с запятой, восклицательный знак и т. д.)
  • isSpace() проверяет, является ли char пробелом, переводом страницы \f , новой строкой \n , возвратом каретки \r , горизонтальной табуляцией \t или вертикальной табуляцией \v .
  • isUpperCase() проверяет, является ли char буквой в верхнем регистре
  • isWhitespace() проверяет, является ли символ пробелом или горизонтальной табуляцией \t

Генерация случайных чисел

  • random() генерирует псевдослучайное число
  • randomSeed() инициализирует генератор псевдослучайных чисел произвольным начальным числом

В Arduino, как и в большинстве языков, невозможно получить действительно случайные числа, и последовательность всегда одна и та же, поэтому вы задаете ее текущим временем или (в случае Arduino) вы можете прочитать ввод из аналоговый порт.

Работа с битами и байтами

  • bit() вычисляет значение бита (0 = 1, 1 = 2, 2 = 4, 3 = 8…)
  • bitClear() очищает (устанавливает в 0) часть числовой переменной. Принимает число и номер бита, начиная справа
  • bitRead() считывает часть числа. Принимает число и номер бита, начиная справа
  • bitSet() устанавливает в 1 бит числа. Принимает число и номер бита, начиная справа
  • bitWrite() записывает 1 или 0 в определенный бит числа Принимает число, номер бита, начиная справа, и значение для записи (0 или 1)
  • highByte() получает старший (самый левый) байт словарной переменной (которая имеет 2 байта)
  • lowByte() получает младший (самый правый) байт словарной переменной (которая имеет 2 байта)

Прерывания

  • noInterrupts() отключает прерывания
  • interrupts() снова включает прерывания после того, как они были отключены
  • attachInterrupt() позволяет цифровому входу быть прерыванием. Разные доски имеют разные разрешенные контакты, проверьте официальные документы.
  • detachInterrupt() отключает прерывание, включенное с помощью attachInterrupt()

Хотите стать лучшим веб-разработчиком? Присоединяйтесь к учебному лагерю веб-разработки 2022!

Читайте также: