Написание кода для ардуино. Языки программирования

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

Это наиболее простой и недорогой вариант для начинающих, любителей и профессионалов. Процесс программирования проходит на языке Processing/Wiring, который осваивается быстро и легко и в основе которого лежит язык C++, а благодаря это сделать очень легко. Давайте рассмотрим, что такое Arduino, чем полезна для начинающих, её возможности и особенности.

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

Основой конструктора служит плата ввода-вывода (аппаратная часть), а также программная часть. Программное обеспечение конструктора на основе Ардуино представлено интегрированной средой разработки .

Внешне сама среда выглядит так:

Программная часть Ардуино разработана таким образом, чтобы справиться с ней мог даже начинающий пользователь, не имеющий представления о программировании. Дополнительным фактором успеха в использовании микроконтроллера стала возможность работать с макетной платой, когда к контроллеру подключаются необходимые детали (резисторы, диоды, транзисторы и т.п.) без необходимости в пайке.

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

Как купить Arduino?

Плата и многие детали Ардуино производится в Италии , поэтому оригинальные составляющие отличаются достаточно высокой стоимостью. Но существуют отдельные компоненты конструктора или наборы, так называемые кит-наборы, которые выпускается по итальянской аналогии, однако по более доступным ценам.

Купить аналог можно на отечественном рынке или, к примеру, заказать из Китая. Многие знают про сайт АлиЭкспресс, например. Но начинающим свое знакомство с Ардуино лучше свою первую плату заказать в российском интернет-магазине. Со временем можно перейти на покупку плат и деталей в Китае. Срок доставки из этой страны составит от двух недель до месяца, а, например, стоимость большого кит-набора будет не более 60-70 долларов .

Стандартные наборы включают в себя как правило следующие детали:

  • макетная плата;
  • светодиоды;
  • резисторы;
  • батареи 9В;
  • регуляторы напряжения;
  • кнопки;
  • перемычки;
  • матричная клавиатура;
  • платы расширения;
  • конденсаторы.

Нужно ли знать программирование?

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

После того как программа составлена она загружается (прошивается) на плату. Ардуино в этом случае имеет неоспоримое преимущество – для программирования в большинстве случаев используется USB-кабель. Сразу после загрузки программа готова выполнять различные команды.

Начинающим работать с Arduino нужно знать две ключевые функции:

  • setup() – используется один раз при включении платы, применяется для инициализации настроек;
  • loop() – используется постоянно, является завершающим этапом настройки setup.

Пример записи функции setup() :

Void setup() { Serial.begin(9600); // Открываем serial соединение pinMode(9, INPUT); // Назначаем 9 пин входом pinMode(13, OUTPUT); // Назначаем 13 пин выходом }

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства.

Функция loop() выполняется после функции setup(). Loop переводится как петля, или цикл. Функция будет выполняться снова и снова. Так микроконтроллер ATmega328 (большинстве плат Arduino содержат именно его), будет выполнять функцию loop около 10 000 раз в секунду.

Также вы будете сталкиваться с дополнительными функциями:

  • pinMode – режим ввода и вывода информации;
  • analogRead – позволяет считывать возникающее аналоговое напряжение на выводе;
  • analogWrite – запись аналогового напряжения в выходной вывод;
  • digitalRead – позволяет считывать значение цифрового вывода;
  • digitalWrite – позволяет задавать значение цифрового вывода на низком или высоком уровне;
  • Serial.print – переводит данные о проекте в удобно читаемый текст.

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

  • чтение и запись в хранилище,
  • подключение к интернету,
  • чтение SD карт,
  • управление шаговыми двигателями,
  • отрисовка текста
  • и т. д.

Как настроить Ардуино?

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

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

Алгоритм классической настройки программы Arduino выглядит так:

  • установка IDE, которую можно загрузить ниже или или с сайта производителя ;
  • установка программного обеспечения на используемый ПК;
  • запуск файла Arduino;
  • вписывание в окно кода разработанную программу и перенос ее на плату (используется USB кабель);
  • в разделе IDE необходимо выбрать тип конструктора, который будет использоваться. Сделать это можно в окне «инструменты» - «платы»;
  • проверяете код и жмете «Дальше», после чего начнется загрузка в Arduino.
Версия Windows MacOS Linux
1.6.5 Zip
Installer
Installer 32 bits
64 bits
1.8.2 Zip
Installer
Installer 32 bits
64 bits
ARM
1.8.5 Zip
Installer
App
Installer 32 bits
64 bits
ARM

Набиваем руку

Для того чтобы уверенно реализовывать сложные задумки, пользоваться программной средой и Ардуино начинающим необходимо «набить руку». Для этого рекомендуется для начала освоить более легкие задачи и проекты.

Самый простой проект, который вы можете сделать - заставить светодиод, который расположен на плате Ардуино напротив порта, мигал каждую секунду.

Для этого необходимо:

  • подключить конструктор к ПК,
  • открыть программу, в разделе «сервис» ищем блок «последовательный порт»
  • выбираем необходимый интервал
  • после чего необходимо добавить код, который есть в Arduino IDE в разделе "Примеры".

Первыми проектами в Ардуино для начинающих могут стать:

  • мигающий светодиод;
  • подключение и управление датчиком температуры;
  • подключение и управление датчиком движения;
  • подключение фоторезистора;
  • управление сервоприводом.

Первый проект

Вот мы и дошли до нашего первого проекта. Давайте соединим Ардуино, светодиод и кнопку. Этот проект отлично подойдет начинающим.

Схема у нас будет такая:

Светодиод загорится после нажатия на кнопку, а после следующего нажатия погаснет. Сам скетч или программа для Ардуино будет такой:

// пины подключенных устройств int switchPin = 8; int ledPin = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } // функция для подавления дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } lastButton = currentButton; digitalWrite(ledPin, ledOn); }

Вы могли заметить функцию debounse, о которой мы еще не писали. Она нужна для .

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

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

Итак, у вас есть процессор. Вы наверняка понимаете, что процессор можно как-то запрограммировать, чтобы он делал то, что вы хотите. Для того, чтобы была выполнена полезная работа необходимо (а) написать полезную программу и (б) отдать её процессору для исполнения.

В целом, не важно какой именно у вас процессор: последний Intel Pentium в вашем ноутбуке или микроконтроллер на плате Arduino. Принципы написания программы, т.е. программирования , в обоих случаях одни и те же. Различается лишь быстродействие и объём возможностей по работе с другими устройствами.

Что такое программа и куда её писать

Процессор несмотря на всю сложность производства, по сути своей, довольно простая и прямолинейная вещь. Думать он не умеет. Он умеет лишь слепо, байт за байтом исполнять инструкции, которые ему подсунули. Можно привести грубый пример последовательности инструкций:

Байт инструкции Что он означает для процессора
00001001 означает: взять следующий байт и запомнить его в ячейке №1
00000110 …это как раз следующий байт, который мы запоминаем в ячейке №1: число 5
00011001 означает: отнять от значения в ячейке №1 единицу и оставить там обновлённый результат
00101001 означает: сравнить значение в ячейке №1 с нулём и если оно ноль - перепрыгнуть через столько байт, сколько указано в следующем байте
00000100 …если результат был ноль, мы хотим прыгнуть через 4 байта, к предпоследней инструкции
10000011
01000001 …букве «A» как раз соответствует этот код
00101000 означает, что мы хотим прыгнуть назад на столько байт, сколько указано в следующем байте
00000110 …прыгать будем на 6 байт назад, к инструкции №3
10000011 означает, что мы хотим вывести на экран символ, код которого записан в следующем байте
00100001 …знаку «!» как раз соответствует этот код

В результате исполнения такой последовательности инструкций на экран будет выведена паническая фраза «АААА!».

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

Зачем нужны языки программирования

Для упрощения задачи в миллион раз были придуманы языки программирования. Их очень много и даже из тех, что постоянно на слуху можно быстро вспомнить десяток-другой: Assembler, C, C++, C#, Java, Python, Ruby, PHP, Scala, JavaScript.

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

Проблема в том, что такие языки не понятны процессору и перед тем как отдать ему эту программу, её нужно скомпилировать : перевести с естественного языка в те самые инструкции в виде нулей и единиц. Этим занимаются программы, которые называются компиляторами . У каждого языка, если только он не остался на уровне фантазий, есть свой компилятор. Для популярных языков их обычно несколько на выбор, от разных производителей и для разных платформ. Большинство из них свободно доступно в интернете.

Итак, есть программы на вполне понятном человеку языке: их ещё называют «исходным кодом», просто «кодом» или «исходниками». Они пишутся в простые текстовые файлы с помощью любого текстового редактора, хоть с помощью notepad. Затем они превращаются в понятные процессору наборы нулей и единиц с помощью компилятора: компилятор получает на вход исходный код, а на выходе создаёт бинарный исполняемый файл , тот самый, понятный процессору.

Бинарные файлы не пригодны для чтения и предназначены, в общем, лишь для исполнения процессором. Они могут иметь разный тип в зависимости от того для чего получены: .exe - это программы для Windows, .hex - программы для исполнения микроконтроллером типа Arduino и т.п.

Почему же существует столько языков программирования и в чём разница?

    Почему? Потому что на Земле много людей и компаний, и многие считали, что могут сделать лучше всех: удобнее, понятнее, быстрее, стройнее.

    В чём разница: разные языки - это разный баланс скорости написания, понятности при чтении и скорости исполнения.

Посмотрим на одну и ту же программу, которая выводит на экран песенку про 99 бутылок пива на разных языках программирования.

Например, язык Perl. Пишется быстро; понять, что имел в виду программист невозможно; исполняется медленно:

sub b{ $n = 99 - @_ - $_ || No; "$n bottle" . "s" x!!-- $n . " of beer" } ; $w = " on the wall" ; die map { b. "$w,\n " . b. ",\n Take one down, pass it around,\n " . b(0 ) . "$w.\n \n " } 0 .. 98

Язык Java. Пишется относительно долго; читается просто; исполняется довольно быстро, но занимает много памяти:

class bottles { public static void main(String args ) { String s = "s" ; for (int beers= 99 ; beers>- 1 ; ) { System .out .print (beers + " bottle" + s + " of beer on the wall, " ) ; System .out .println (beers + " bottle" + s + " of beer, " ) ; if (beers== 0 ) { System .out .print ("Go to the store, buy some more, " ) ; System .out .println ("99 bottles of beer on the wall.\n " ) ; System .exit (0 ) ; } else System .out .print ("Take one down, pass it around, " ) ; s = (-- beers == 1 ) ? "" : "s" ; System .out .println (beers + " bottle" + s + " of beer on the wall.\n " ) ; } } }

Язык Assembler. Пишется долго; читается сложно; исполняется очень быстро:

code segment assume cs : code , ds : code org 100h start : ; Main loop mov cx , 99 ; bottles to start with loopstart: call printcx ; print the number mov dx , offset line1 ; print the rest of the first line mov ah , 9 ; MS-DOS print string routine int 21h call printcx ; print the number mov dx , offset line2_3 ; rest of the 2nd and 3rd lines mov ah , 9 int 21h dec cx ; take one down call printcx ; print the number mov dx , offset line4 ; print the rest of the fourth line mov ah , 9 int 21h cmp cx , 0 ; Out of beer? jne loopstart ; if not, continue int 20h ; quit to MS-DOS ; subroutine to print CX register in decimal printcx: mov di , offset numbufferend ; fill the buffer in from the end mov ax , cx ; put the number in AX so we can divide it printcxloop: mov dx , 0 ; high-order word of numerator - always 0 mov bx , 10 div bx ; divide DX:AX by 10. AX=quotient, DX=remainder add dl , "0" ; convert remainder to an ASCII character mov [ ds : di ] , dl ; put it in the print buffer cmp ax , 0 ; Any more digits to compute? je printcxend ; if not, end dec di ; put the next digit before the current one jmp printcxloop ; loop printcxend: mov dx , di ; print, starting at the last digit computed mov ah , 9 int 21h ret ; Data line1 db " bottles of beer on the wall," , 13 , 10 , "$" line2_3 db " bottles of beer," , 13 , 10 , "Take one down, pass it around," , 13 , 10 , "$" line4 db " bottles of beer on the wall." , 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" code ends end start

На чём программируется Arduino

Если говорить об Arduino или о микроконтроллерах от компании Atmel, на каком языке можно писать программы для них? Теоретический ответ: на любом. Но на практике, выбор ограничивается языками Assembler, C и C++. Это связанно с тем, что в сравнении с настольным компьютером у них очень ограниченные ресурсы. Килобайты памяти, а не гигабайты. Мегагерцы на процессоре, а не гигагерцы. Это плата за дешевизну и энергоэффективность.

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

Assembler, как вы видели, нельзя назвать самым простым и элегантным и, как результат, флагманским языком для Arduino является C/C++.

Во многих источниках говорится, что Arduino программируется на языке Arduino, Processing, Wiring. Это не совсем корректное утверждение. Arduino программируется на C/C++, а то, что называется этими словами - это просто удобный «обвес», который позволяет решать многие типичные задачи, не изобретая велосипед каждый раз.

Почему C и C++ упоминаются в одном предложении? C++ - это надстройка над C. Всякая программа на C является корректной программой для C++, но не наоборот. Вы можете пользоваться и тем и другим. Чаще всего вы даже не будете задумываться о том, что используете, решая текущую задачу.

Ближе к делу: первая программа

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

Пойдём по порядку. Напишем исходный код. Можно написать его в блокноте или любом другом редакторе. Однако для того, чтобы работа была удобной, существуют так называемые среды разработки (IDE: Integrated Development Environment). Они в виде единого инструмента предоставляют и текстовый редактор с подсветкой и подсказками, и компилятор, запускаемый по кнопке, и много других радостей. Для Arduino такая среда называется Arduino IDE. Она свободно доступна для скачивания на официальном сайте.

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

Итак, давайте напишем скетч, который ничего не делает. То есть минимально возможную правильную программу на C++, которая просто прожигает время.

void setup() { } void loop() { }

Не будем пока заострять внимание на значении написанного кода. Скомпилируем его. Для этого в Arduino IDE, на панели инструментов есть кнопка «Verify». Нажмите её и через несколько секунд бинарный файл будет готов. Об этом возвестит надпись «Done compiling» под текстовым редактором.

В результате, у нас получился бинарный файл с расширением.hex , который может исполнять микроконтроллер.

Теперь необходимо подсунуть его Arduino. Этот процесс называется загрузкой, прошивкой или заливкой. Для выполнения загрузки в Arduino IDE, на панели инструментов есть кнопка «Upload». Соедините Arduino с компьютером через USB-кабель, нажмите «Upload» и через несколько мгновений программа будет загружена в Arduino. При этом программа, которая была там ранее будет стёрта.

Об успешной прошивке возвестит надпись «Done Uploading».

Если при попытке загрузки вы столкнулись с ошибкой убедитесь, что:

    В меню Tools → Board выбран тот порт, к которому действительно подключена Arduino. Можете повставлять и повынимать USB-кабель, чтобы понять какой порт появляется и исчезает: это и есть Arduino.

    Вы установили необходимые драйверы для Arduino. Это необходимо для Windows, не требуется под Linux и необходимо только для старых плат до Arduino Duemilanove на MacOS.

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

Исторически так сложилось, что программная часть Arduino состоит из интегрированной программной среды (IDE), позволяющей писать, компилировать, а также загружать написанный код в аппаратную часть. Cреда ArduinoIDE, и сам язык Wiring основаны, в первую очередь, на Processing, косвенно – на С/C++. По сути, Arduino IDE являет собой большую сборную солянку, не смеха ради, а удобства для.

Даже внешне и Arduino IDE и Processing похожи


Из чего состоит программа (скетч)?
Каждая программа, какой сложной она не казалась бы, состоит из отдельных наборов блоков кода, который обозначается фигурными скобками {} . Для минимальной программы требуется всего 2 блока: setup и loop . Их присутствие обязательно в любой программе на C++ для Arduino, иначе на стадии компиляции можно получить ошибку.
void setup() { } void loop() { }
В функции setup() происходят начальные установки переменных, регистров. После завершения setup() управление переходит к функции loop() , которая являет собой бесконечный цикл, записанный в теле (между { } ). Именно эти команды и совершают все алгоритмические действия контроллера.

Аппаратный « Hello , world !» - мигание светодиодом.
То, с чего начинается первое знакомство с Arduino на стыке программной и аппаратной части - это мигание светодиодом.


Сперва необходимо дополнить минимальную программу. У Arduino (например UNO), к 12 пину и GND подключим светодиод (цвет самого светодиода выбирается из личных предпочтений).

Void setup() { pinMode(12, OUTPUT); } void loop() { digitalWrite(12, HIGH); delay(100); digitalWrite(12, LOW); delay(900); }
Делаем Ctrl+C -> Ctrl+V, компилируем, загружаем, властвуем. Видим светопредставление, длящееся не более секунды. Разбираемся, почему происходит именно так.

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

Что же происходит между { } ?
Как известно, пины Arduino могут работать как на выход так и на вход. Когда мы хотим чем-то управлять, то нам нужно перевести управляющий пин в состояние работы на выход. Это делается выражением в функции setup :
pinMode(12, OUTPUT); В данной ситуации в выражении осуществляется вызов функции . В pinMode устанавливается заданный по номеру пин в заданный режим (INPUT или OUTPUT). О каком пине и о каком режиме идёт речь, указывается в круглых скобках, через запятую. В нашем случае мы хотим, чтобы 12-й пин работал как выход. OUTPUT означает выход, INPUT - вход. Уточняющие значения, такие как 12 и OUTPUT называются аргументами функции . Сколько у функции аргументов зависит от сути функции и воли ее создателя. Функции могут быть без аргументов вовсе, как это происходит на примере setup и loop.

Далее переходим к блоку loop, по порядку:
-вызов встроенной функции digitalWrite. Она предназначена для подачи на заданный пин логического нуля (LOW, 0 вольт) или логической единицы (HIGH, 5 вольт) В функцию digitalWrite передаётся 2 аргумента: номер пина и логическое значение.
-вызов функции delay. Это, опять же, встроенная функция, которая заставляет процессор «уснуть» на определённое время. Она принимает всего один аргумент: время в миллисекундах, которое следует спать. В нашем случае это 100 мс. Как только 100 мс истекают, процессор просыпается и тут же переходит к следующему выражению.
- вызов встроенной функции digitalWrite. Только на этот раз вторым аргументом является LOW. То есть устанавливаем на 12-м пине логический ноль -> подаём 0 вольт -> гасим светодиод.
- вызов функции delay. На этот раз «спим» чуть подольше – 900 мс.

Как только выполнена последняя функция, блок loop завершается и все происходит снова и снова. На самом деле условия, представленные в примере, достаточно вариативны, и вы можете поиграться со значениями delay, подключить несколько светодиодов и сделать подобие светофора или полицейской мигалки (все зависит от фантазии и воли создателя).

Вместо заключения, немного о чистоте.
На самом деле все пробелы, переносы строк, символы табуляции не имеют большого значения для компилятора. Там, где стоит пробел, может быть перенос строки и наоборот. На самом деле 10 пробелов подряд, 2 переноса строки и ещё 5 пробелов - это всё эквивалент одного пробела.


С помощью пустого пространства можно сделать программу понятной и наглядной, или же наоборот изуродовать до неузнаваемости. Например, программу, указанную в качестве примера можно изменить так:

void setup() { pinMode(12, OUTPUT); } void loop () { digitalWrite(12,HIGH); delay(100) ; digitalWrite(12,LOW); delay(900); }

Чтобы при чтении ни у кого не начала течь кровь из глаз, можно следовать нескольким простым правилам:


1. Всегда, при начале нового блока между { и } увеличивайте отступ. Обычно используют 2 или 4 пробела. Выберите одно из значений и придерживайтесь его всюду.

Void loop() { digitalWrite(12, HIGH); delay(100); digitalWrite(12, LOW); delay(900); }
2. Как и в обычном языке: ставьте пробел после запятых.

digitalWrite(12, HIGH);
3. Размещайте символ начала блока { на новой строке на текущем уровне отступа или в конце предыдущей. А символ конца блока } на отдельной строке на текущем уровне отступа:

void setup() { pinMode(12, OUTPUT); } void setup() { pinMode(12, OUTPUT); }
4. Используйте пустые строки для разделения смысловых блоков:

void loop() { digitalWrite(12, HIGH); delay(100); digitalWrite(12, LOW); delay(900); digitalWrite(12, HIGH); delay(100); digitalWrite(12, LOW); delay(900); }
5. Для того, чтобы Ваше детище было приятно читать существуют так называемые комментарии. Это конструкции в программном коде, которые полностью игнорируются компилятором и имеют значение только для того, кто это читает. Комментарии могут быть многострочными или однострочными:

/* это многострочный комментарий */ // это однострочный

28 09.2016

Вы задумывались облегчить себе жизнь в быту? Чтобы были вещи, которые решали бы за вас повседневные, рутинные задачи. Умное устройство, которое бы осуществляло полезную функцию, например поливало огород, убирало комнату, переносило груз. Эти задачи может решать . Но просто купить её будет недостаточно. Любому промышленному логическому контроллеру или микросхеме нужен “мозг”, чтобы выполнять определённую последовательность действий. Для свершений операций в нашем случае подойдёт язык программирования ардуино.

Из этой статьи вы узнаете:

Приветствую вас, друзья! Для тех, кто меня не знает — меня зовут Гридин Семён. Вы можете прочитать обо мне . Сегодняшняя статья будет посвящена двум основным программам, без которых не будет у нас дальнейшего движения и взаимопонимания.

Общее описание языков программирования

Как я и писал выше, рассматривать мы с вами будем две популярные среды разработки. По аналогии с , можно разделить на графический редактор и “умный блокнот”. Это программы Arduino IDE и FLprog.

Основой среды разработки является Processing/Wiring — это обычный C++, дополненный функциями и различными библиотеками. Существует несколько версий для операционных систем windows, Mac OS и Linux.

В чём их принципиальное различие?? Arduino IDE — это среда разработки, в которой описывается код программы. А FLprog похож на CFC CoDeSyS, позволяющий рисовать диаграммы. Какая среда лучше? Обе хороши и удобны по своему, но если хотите заниматься контроллерами серьёзно, лучше всего изучить языки, похожие на СИ. Их главный плюс в гибкости и неограниченности алгоритма. Мне очень нравится Arduino IDE.

Описание Arduino IDE

Дистрибутив можно скачать на официальном сайте . Скачиваем архив, он занимает чуть более 100 мб. Установка стандартная, как и все приложения для Windows. Драйвера для всех типов плат должны быть установлены в пакете. И вот каким образом выглядит рабочее окно программы.

Среда разработки Arduino состоит из:

  • редактора программного кода;
  • области сообщений;
  • окна вывода текста;
  • панели инструментов с кнопками часто используемых команд;
  • нескольких меню

Настройки Arduino IDE

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

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

Многие библиотеки снабжаются примерами, расположенными в папке example. Выбор библиотеки в меню приведет к добавлению в исходный код строчки:

Arduino

#include

#include

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

После того как мы подключили электронную плату к компьютеру. Мы осуществляем следующие настройки — выбираем плату Arduino и Com-порт по которому будем соединяться.

Arduino

void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000);

void setup () {

// initialize digital pin 13 as an output.

pinMode (13 , OUTPUT ) ;

void loop () {

digitalWrite (13 , HIGH ) ;

delay (1000 ) ;

digitalWrite (13 , LOW ) ;

delay (1000 ) ;

Так, кстати говоря, удобно проверять работоспособность платы, пришедшей с магазина. Быстро и легко.

Есть ещё одна удобная вещь. Называется она Монитор последовательного порта (Serial Monitor ). Отображает данные, посылаемые в платформу Arduino. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.

Подключение библиотек

Существуют разные способы для добавления пользовательских функции. Подключить библиотеки можно тремя способами:

  1. С помощью Library Manager
  2. С помощью импорта в виде файла.zip
  3. Установка вручную.

1. С помощью Library Manager. В рабочем окне программы выбираем вкладку Скетч. После этого нажимаем на кнопку Подключить библиотеку. Перед нами откроется менеджер библиотек. В окне будут отображаться уже установленные файлы с подписью installed, и те, которые можно установить.

2.С помощью импорта в виде файла.zip. Часто в просторах интернета можно встретить запакованные в архивы файлы библиотек с расширением zip. В нём содержится заголовочный файл.h и файл кода.cpp. При установке не нужно распаковывать архив. Достаточно в меню Скетч — Подключить библиотеку — Add .ZIP library

3.Установка вручную. Сначала закрываем программу Arduino IDE. Наш архив мы сначала распаковываем. И файлы с расширением.h и.cpp переносим в папку с тем же названием, как и архив. Закидываем папку в корневой каталог.

Мои документы\Arduino\libraries

Описание FLPprog

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

Я наблюдаю за проектом достаточно давно. Ребята развиваются, постоянно добавляют новый функционал и изменяют старый. Я вижу в этой среде перспективы. Так как она выполняет две важные функции: простоту и удобство использования .

Попробуем с вами создать простенький проект. Будем переключать 13 выход на светодиод.

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

Вытаскиваем нужные нам элементы из дерева объектов нужные нам элементы на холст редактирования. В нашем случае можно использовать простой RS-триггер для включения и выключения.

После создания алгоритма, кликнем на кнопочку компилировать, программа даёт готовый скетч на IDE.

Мы с вами рассмотрели возможности и удобства программ для разработки алгоритмов на контроллере серии Arduino. Есть ещё программы, которые позволяют создавать структурные диаграммы и визуальные картинки. Но я рекомендую использовать текстовый редактор, потому что потом вам будет проще. Скажите, а какая среда вам удобнее всего и почему??

22 сентября я участвовал в Краснодаре на семинаре “Сенсорные панельные контроллеры ОВЕН СПК”. Проводили конференцию в фешенебельном и красивом отеле “Бристоль”. Было очень интересно и круто.

В первой части семинара нам рассказывали о возможностях и преимуществах продукции компании ОВЕН. После был кофе-брейк с пончиками. Я понабрал кучу всего, и пончиков, и печенья, и конфет, так как был очень голодным.=)

Во второй части семинара после обеда нам презентовали . Много чего рассказали про Web — визуализацию. Эта тенденция начинает набирать обороты. Ну конечно, управлять оборудованием через любой интернет — браузер. Это реально круто. Вот кстати говоря само оборудование в чемоданчике.

Я в ближайшем будущем опубликую серию статей по CoDeSyS 3.5. Так что, если кому интересно подписывайтесь или просто заходите в гости. Буду всегда рад!!!

Кстати чуть не забыл, следующая статья будет о к электронной плате Arduino. Будет интересно, не пропустите.

До встречи, в следующих статьях.

С уважением, Гридин Семён.

Ardublock - это графический язык программирования для Ардуино, предназначенный для начинающих. Эта среда достаточно проста в использовании, ее легко установить, она практически полностью переведена на русский язык. Визуально сконструированную программу,напоминающую блоки...

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

Serial.print() и Serial.println() – это основные функции Arduino для передачи информации от платы ардуино к компьютеру через последовательный порт. На самых популярных платах Arduino Uno, Mega, Nano нет встроенного дисплея, поэтому...

Можно ли заниматься ардуино проектами без самой платы Arduino? Оказывается, вполне. Благодаря многочисленным онлайн сервисам и программам, которые имеют свое название: эмулятор или симулятор Arduino. Самыми популярными представителями таких программ являются...

Serial begin - крайне важная инструкция Arduino, она позволяет установить контроллеру соединение с внешними устройствами. Чаще всего таким «внешним устройством» оказывается компьютер, к которому мы подключаем Arduino. Поэтому Serial begin интенсивней...

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

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



В продолжение темы:
Android

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