- Какой язык программирования на Ардуино
- Другие языки программирования, подходящие для Ардуино
- Команды языка программирования Ардуино С++
- Пример простой программы на Ардуино
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Язык программирования Ардуино – прикладной язык. Используется для работы с микроконтроллерами. Это яркий пример того, как код может быть воплощен не просто в какую-то потенциальную программу, а в действие в прямом смысле этого слова. Всё, что вы запрограммируете, будет двигаться, выполняя определенные функции.
Основой для Ардуино является язык C/C++, однако для работы с микроконтроллерами используются и другие. О том, что собой представляет эта интересная среда разработки, вы узнаете из нашего материала.
Какой язык программирования на Ардуино
Стать хорошим специалистом в сфере IT бывает непросто из-за трудности с первоначальным выбором конкретного направления деятельности. Речь о многообразии современных технологий, и о том, что приходится определяться, к чему сильнее ваш интерес, к «железу» или всё-таки к программному обеспечению.
Ардуино, как язык программирования, предназначен для непрофессионального использования в роботостроении и для создания простейших автоматических систем управления. Спектр задач, которые будет способно выполнять готовое устройство, определяется набором входящих в его состав плат.
Самый простой пример – автоматическая кормушка для домашних питомцев из подобных плат, а вообще с вариантами их применения можно фантазировать до бесконечности.
Говоря прямо, микроконтроллер сам по себе «глуп». Он не наделен способностями мыслить или импровизировать, действует строго по инструкциям, для написания которых как раз и используется язык программирования со строгим синтаксисом и нормами оформления. Это упрощает работу и программистов, и тех, кто будет устранять возможные синтаксические ошибки, из-за которых нарушается компиляция кода, либо прошитое им устройство начинает работать некорректно.
На каком языке программирования работает Ардуино? На давно заработавшем себе популярность С++, который на сегодняшний день один из самых мощных (официальная среда разработки — Arduino IDE). Используемому новому языку разработчики дали название Arduino Wiring, потому что в стандартную библиотеку Arduino.h включен инструментарий и функционал из фреймворка Wiring. Что касается синтаксиса, то он берется именно из языка С++, поэтому если берётесь за язык программирования Ардуино с нуля, то придется изучить не только стандартные функции, но ещё какие-то справочники по С++.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Именно в них вы почерпнете кучу полезных сведений о языке, а конкретно — о его синтаксисе (а не о функционале Wiring). Даже в специальных уроках по Ардуино не найдётся столько ценной информации.
Другие языки программирования, подходящие для Ардуино
Какие ещё языки программирования используются в Ардуино? Есть среды разработки, в которых можно задействовать JavaScript (для него среда — Espruino WEB IDE), либо Basic (среда — B4R). А в XOD программы пишутся с помощью специальных блоков.
Ardublock
По сути, Ardublock – детский язык, представляющий собой адаптированный Scratch. Всё, что тут есть – подстроено под вашу платформу (блоки разных цветов, названия на русском языке, конструктор, упрощённые блоки). Данной адаптацией может пользоваться кто угодно, не имея вообще никаких представлений о программировании. В Logo, например, вы задаёте движение для виртуальной черепашки по виртуальной плоскости. Так и здесь можно показать ребенку, каким образом интерпретируются те либо иные действия в программе.
Для стандартной среды Arduino IDE потребуется установка плагина. Выбирайте версии примерно конца 2013 года, потому что более поздние – гораздо сложнее. Как устанавливать? Скачать файл, переименовать его на «ardublock-all» и положить в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если изначально такой нет, значит нужно создать.
Snap!
Тут уже есть возможности использования функций, списков, имеются дополнительные блоки, которые отсутствуют в Ardublock. В общем, по своему функционалу уже более «взрослый» язык программирования для использования в Ардуино, хотя по сути – это всё тот же конструктор.
Чтобы его задействовать, придется дополнить свою операционку необходимыми компонентами (скачать на snap4arduino.org). Как устанавливать и пользоваться – смотрите на этом же сайте, там же есть и видеопримеры.
Скачать файлSnap! подходит для младшей возрастной группы, либо тех, кто обучался программированию, но успел многое подзабыть. Либо если вам хочется вовлечь ребенка в ITсферу посредством знакомства с Scratch и Snap!.
Python
Ардуино работает на любом языке программирования, формально – даже на Piet можно скомпилировать любые операции в машинный код.
на курсы от GeekBrains до 01 декабря
Однако всё-таки Python лучше сбалансирован с точки зрения сложности и возможностей, недаром он считается одним из самых популярных языков. И, разумеется, он применяется в Arduino.
Читайте также!
Что для этого нужно? Собственно, vPython и библиотеки PySerial (может они у вас уже есть, и вы применяли их для взаимодействия с портами компьютера).
Go и другие языки
Посредством библиотеки PySerial Аурдино может общаться не только с Python, но вообще с чем угодно, в частности, с Go, Java, HTML и проч. Платформа Arduino пользуется большой популярностью, и необходимость выбирать язык вряд ли остановит тех, кто хочет ею пользоваться. И уж если у вас в руках оказалась эта небольшая плата, придумайте с ней действительно нечто интересное. А инструментария для этого — предостаточно.
Команды языка программирования Ардуино С++
В состав языка входят операторы, данные, функции и библиотеки.
Язык | Пример | Описание |
Операторы | ||
setup() | void setup() { pinMode(3, INPUT); } |
Функция идентифицирует переменные, задает выводам на плате режим работы и т.д. Функция запускается в работу один раз, всегда, когда на микроконтроллер подается питание. |
loop() | void loop() { digitalWrite(3, HIGH); delay(1000); digitalWrite(3, LOW); delay(1000); } |
Функция loop – циклическая, по её управлением программа в нужный момент совершает вычисления и выдает на них запрограммированную реакцию. Наличие функций setup() и loop() в каждом скетче обязательно, даже если они вообще нигде не задействованы в программе. |
Операторы управления | ||
if | … if (x > 100) digitalWrite(3, HIGH); if (x < 100) digitalWrite(3, LOW); … |
Это оператор if применяется вместе с операторами сравнения и проверяет, является ли указанное условие истинным. В примере: если значение переменной х больше 100, то на выходе 13 срабатывает светодиод, а если это значение меньше – то светодиод гаснет. |
if..else | … if (x > 100) digitalWrite(3, HIGH); else digitalWrite(3, LOW); … |
Данный оператор запускает проверку, отличную от той, которую делает оператор if. Это нужно для того, чтобы не выполнять повторяющиеся взаимоисключающие проверки. Если по результату одной из проверок не получилась ИСТИНА, то выполняются действия, прописанные в блоке else. |
switch…case | … switch (x) { case 1: digitalWrite(3, HIGH); case 2: digitalWrite(3, LOW); case 3: break; default: digitalWrite(4, HIGH); } … |
Оператор switch работает по аналогии с if, то есть задает порядок действий при выполнении того или иного условия. Break – команда выхода из оператора switch. А в default прописываются действия на случай, если ни одна из альтернатив не окажется выбранной. |
for | void setup() { pinMode(3, OUTPUT); } void loop() { for (int i=0; i <= 255; i++){ analogWrite(3, i); delay(10); } } |
for запускает повторения операций, описанных внутри фигурных скобок. Это может, например, быть плавное угасание затемнение светодиода. В заголовке цикла for имеется три раздела: for (initialization; condition; increment).
Initialization запускается на выполнение один раз. Затем идет проверка условия condition. Если оно выполняется, то запускается приращение increment. Все эти действия повторяются до тех пор, пока condition не станет ложным. |
while | void loop() { while (x < 10) { x = x + 1; Serial.println(x); delay(200); } } |
while запускает цикличное выполнение определенных операций до тех пор, пока остается истинным условие, указанное внутри круглых скобок. В приведенном примере заданные действия будут выполняться циклично бессчетное количество раз всё время, пока переменная х меньше десяти. |
do…while | void loop() { do { x = x + 1; delay(100); Serial.println(x); } while (x < 10); delay(900); } |
По принципу работы do…while схож с предыдущим. С той лишь разницей, что если условие, описанное в круглых скобках, оказывается выполненным, то осуществляется не выход из цикла, а продолжение его работы. Здесь приведен пример, в котором если х становится больше 10, все равно буде выполняться сложение, но с паузой 1000мс. |
break continue |
switch (x) { case 1: digitalWrite(3, HIGH); case 2: digitalWrite(3, LOW); case 3: break; case 4: continue; default: digitalWrite(4, HIGH); } |
Оператор break в принудительном порядке выводит программу из циклов switch, do, for и while, даже если они не закончены.
Оператор continue выявляет в текущем шаге цикла операторы, оставшиеся невыполненными, и пропускает их. |
Синтаксис | ||
; (точка с запятой) |
… digitalWrite(3, HIGH); … |
Точка с запятой ставится в конце оператора. В компиляции произойдет ошибка, если точку с запятой поставить в конце строки случайно. |
{} (фигурные скобки) |
void setup() { pinMode(3, INPUT); } |
Фигурные скобки ставятся только в паре, то есть, должно быть и открытие “{” и закрытие “}”. Если стоит лишь одна из скобок, это станет причиной скрытых ошибок. |
// (комментарий) |
x = 5; // комментарий | Комментарии – это пояснения к программе. Компилятор их не воспринимает, в память они не экспортируются и место там не занимают. |
#define | #define ledPin 3 | Задает имя константе. Это нужно лишь для того, чтобы программа лучше читалась. |
#include | // библиотека для серво #include <Servo.h> |
С помощью данной директивы становится возможным введение в скетч сторонних библиотек. Важно: после #include и #define точка с запятой не ставится. |
Типы данных | ||
boolean | boolean val = false; | Любая переменная типа boolean занимает в памяти устройства один байт и может принимать значение true либо false. |
char | // оба значения эквивалентны char val = ‘A’; char val = ’65’; |
Это обозначение для символьных типов данных. В памяти занимает 1 байт. Символ заключается в одинарные кавычки (‘А’), но в памяти хранятся в виде числовых значений. |
byte | byte val = 255; | Цифровой тип данных для чисел от 0 до 255. Размер одной переменной – один байт. |
int | int val = 32767; | Этим типом данных обозначаются целые числа. Имеются в иду целочисленные 16-битные значения, по величине – от -32768 до 32767. |
unsigned int | unsigned int val = 65535; | Эта переменная предназначена для хранения еще и двухбайтовых значений. Но только не отрицательных, а лишь положительных, зато в большем диапазоне, от 0 до 65535. |
float | float val = 25.1547; | Это переменная которой заименовываются числа с десятичным разделителем. Благодаря числам с плавающей точкой удается точнее (по сравнению с целыми числами) описывать аналоговые величины. Допускается использование дробных чисел, состоящих из 6-7 знаков (не после запятой, а всех вместе). |
Пример простой программы на Ардуино
Процесс реализации проекта с использованием языка программирования Ардуино складывается из 3 основных этапов: написание кода, прототипирование (создание макета), прошивка. Для написания кода и прошивки платы нужна среда разработки.
Набросок программы, написанный на Ардуино, называется скетчем. Структура кода выглядит так:
main(){
void setup(){
}
void loop(){
}
}
Важный момент: процессор Arduino сам создаёт функцию main() , которая в С++ является обязательной. И вот что видит в итоге разработчик:
void setup(){
}
void loop(){
}
Обязательная функция setup() используется единожды лишь при запуске микроконтроллера. Она же и задает базовые настройки.
Обязательная функция loop() является циклической. В процессе работы микроконтроллера обращение к ней происходит постоянно.
Читайте также!
Принцип работы платформы понятнее выглядит на примере. Пусть это будет два варианта простейшей программы (Blink), которые отличаются лишь сборкой.
int Led = 13; // объявляем переменную Led на 13 пин (выход)
void setup(){
pinMode(Led, OUTPUT); // определяем переменную
}
void loop(){
digitalWrite(Led, HIGH); // подаём напряжение на 13 пин
delay(1000); // ожидаем 1 секунду
digitalWrite(Led, LOW); // не подаём напряжение на 13 пин
delay(1000); // ожидаем 1 секунду
}
Это работает так: светодиод горит в течение 1 секунды, а потом на 1 секунду потухает. Для реализации первого варианта придется собрать макет, потому что в платформе Arduino в 13-м пине есть встроенный светодиод.
Из всего вышесказанного становится ясно, что плата Arduino дает широкие возможности для экспериментов. Причем тут не понадобится ни сложное программирование, ни какие-то серьёзные материальные расходы. Имея представление о том, что такое Ардуино, вы можете решить для себя, хотите ли вы заниматься электроникой, действительно ли это вам интересно.