Язык программирования Arduino. Команды языка программирования Arduino Программирование операторы ардуино для начинающих
Начать свой путь в IT бывает очень сложно хотя бы просто потому, что глядя на окружающие технологии невозможно отделить «железный» интерес от программного. С одной стороны - желание создать устройство с безупречным внешним видом, множеством датчиков и безграничными возможностями, с другой - таинство обработки данных, стремление максимально увеличить быстродействие, не пренебрегая функциональностью. Arduino - первый шаг к большим изобретениям, не требующий ни глубоких знаний схемотехники, ни опыта в программировании.
Что такое Arduino
Если называть вещи своими именами, то Arduino - это конструктор для тех, кому надоело созидать бесполезные образы и захотелось хоть немного наделить их жизнью. В самом простейшем случае Arduino - печатная плата, на которой расположен контроллер, кварцевый генератор, АЦП/ЦАП, несколько разъёмов, диодов и кнопок. Остальное - дело рук хозяина: хотите - создавайте робота, хотите - программно-аппаратную платформу для «умного» дома, ну или забудьте про практическую пользу и развлекайтесь .
Конечно, в зависимости от того. насколько далеко вы хотите зайти в своих экспериментах, хотите ли вы получать фильтрованное удовольствие или сделать из Arduino платформу для собственного заработка, вам придётся совершенствоваться и в проектировании железа, и в изучении языков программирования. О последнем сегодня чуть подробнее.
Arduino достаточно ограниченная платформа в плане возможностей программирования, особенно в сравнении с Raspberry Pi. В силу того, что порог входа неприлично низкий (базовый Tutorial занимает 3 листа формата A4), то рассчитывать на изобилие языков без подключения дополнительных модулей не приходится. За основу здесь принят C/C++ , но с использованием различных IDE и библиотек вы получите доступ к оперированию Python, C#, Go, а также таким детским развлечениям, как Snap! и ArduBlock. О том как, когда и кому их использовать, поговорим далее.
C/C++
Базовый язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной программной оболочке. Найти все доступные команды «для новичка» можно , но никто не мешает вам воспользоваться исходными возможностями языка C++, никаких надстроек не потребуетс. Если же есть желание поиграть с «чистым» C, то к вашим услугам программа , предназначенная, как следует из названия, для взаимодействия ОС Windows и МК серии AVR, которые и используются на Arduino. Более подробное руководство можете прочитать вот .
Ardublock
Временно отойдем от языков взрослых к любимому ребятней языку Scratch, а вернее к его адаптации - Ardublock. Здесь всё тоже самое, но с адаптацией к вашей платформе: цветные блоки, конструктор, русские названия, простейшая логика. Такой вариант здорово подойдет даже тем, кто с программированием не знаком вовсе. Подобно тому, как в языке Logo вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.
Да, кстати, для использования необходимо на вашу стандартную среду Arduino IDE установить . Последние версии лучше не хватать, они довольно сложные, для начала подойдет датированная концом 2013 года. Для установки скачанный файл переименовываем в «ardublock-all» и запихиваем в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если её не существует - создаем. Если что-то не поняли, то вот более подробно.
Snap!
По сравнению с Ardublock, Snap! имеет расширенные возможности в виде дополнительных блоков, возможности использования списков и функций. То есть Snap! в общем и целом уже похож на взрослый язык программирования, не считая, что вам по прежнему необходимо играть в конструктор кода.
Для того, чтобы использовать этот язык, придется сходить на сайт snap4arduino.org и скачать необходимые компоненты для вашей ОС. Инструкции по установке, использованию и видеопримеры ищите здесь же.
Python
Формально программировать на Arduino вы можете используя хоть язык Piet, просто потому что при должном упорстве вы скомпилируете в машинный код что угодно. Но в силу того, что Python - один из наиболее популярных языков с практически оптимальным сочетанием сложность\возможности, то обойти стороной его применяемость в Arduino было бы нелепо. Начать изучение Python вы можете с нашего бесплатного .
Итак, для этого вам понадобится библиотеки PySerial (ранее, возможно, вы использовали её для общения с портами компьютера) и vPython . О том, как правильно всё настроить и заставить в конечном счёте работать, можете соответственно почитать и .
Go и другие языки.
Подобно тому, как Arduino взаимодействует с Python через библиотеку PySerial, он может взаимодействовать и с , и c Java , и с HTML , и с чем только захотите. Arduino - достаточно популярная платформа, чтобы такой банальный вопрос, как выбор удобного языка, не остановил очередного исследователя. Единственное, что требуется от владельца этой маленькой платы - задумать что-нибудь удивительно интересное, а удобный инструмент неизбежно найдётся.
Ardublock - это графический язык программирования для Ардуино, предназначенный для начинающих. Эта среда достаточно проста в использовании, ее легко установить, она практически полностью переведена на русский язык. Визуально сконструированную программу,напоминающую блоки...
Прерывания - очень важный механизм Arduino, позволяющий внешним устройствам взаимодействовать с контроллером при возникновении разных событий. Установив обработчик аппаратных прерываний в скетче, мы сможем реагировать на включение или выключение кнопки, нажатие клавиатуры,...
Serial.print() и Serial.println() – это основные функции Arduino для передачи информации от платы ардуино к компьютеру через последовательный порт. На самых популярных платах Arduino Uno, Mega, Nano нет встроенного дисплея, поэтому...
Можно ли заниматься ардуино проектами без самой платы Arduino? Оказывается, вполне. Благодаря многочисленным онлайн сервисам и программам, которые имеют свое название: эмулятор или симулятор Arduino. Самыми популярными представителями таких программ являются...
Serial begin - крайне важная инструкция Arduino, она позволяет установить контроллеру соединение с внешними устройствами. Чаще всего таким «внешним устройством» оказывается компьютер, к которому мы подключаем Arduino. Поэтому Serial begin интенсивней...
Глобальная переменная в Arduino – это переменная, область видимости которой распространяется на всю программу, ее видно во всех модулях и функциях. В этой статье мы рассмотрим несколько примеров использования глобальных переменных,...
Массивы Arduino – это элемент языка, активно используемый программистами для работы с наборами однотипных данных. Массивы есть практически во всех языках программирования, не исключением является и Arduino, синтаксис которого сильно похож...
Этот симулятор лучше всего работает в браузере Chrome
Давайте рассмотрим Arduino по внимательней.
Arduino это не большой компьютер, к которому могут подключаться внешние цепи. В Arduino Uno используется Atmega 328P
Это самый большой чип на плате. Этот чип выполняет программы, которые хранятся в его памяти. Вы можете загрузить программу через usb с помощью Arduino IDE. Usb порт также обеспечивает питание arduino.
Есть отдельный разъём питания. На плате есть два вывода обозначенные 5v и 3.3v, которые нужны для того, чтобы запитывать различные устройства. Так же вы найдете контакты, помеченные как GND, это выводы земли (земля это 0В). Платформа Arduino, так же, имеет 14 цифровых выводов (пинов), помеченных цифрами от 0 до 13, которые подключаются к внешним узлам и имеют два состояния высокое или низкое (включено или выключено). Эти контакты могут работать как выходы или как входы, т.е. они могут либо передавать какие-то данные и управлять внешними устройствами, либо получать данные с устройств. Следующие выводы на плате обозначены А0-А5. Это аналоговые входы, которые могут принимать данные с различных датчиков. Это особенно удобно, когда вам надо измерить некий диапазон, например температуру. У аналоговых входов есть дополнительные функции, которые можно задействовать отдельно.

Как использовать макетную плату.
Макетная плата нужна для того чтобы временно соединить детали, проверить, как работает устройство, до того как вы спаяете все вместе.
Все нижеследующие примеры собраны на макетной плате, чтобы можно было быстро вносить изменения в схему и повторно использовать детали не заморачиваясь с пайкой.
В макетной плате есть ряды отверстий, в которые вы можете вставлять детали и провода. Некоторые из этих отверстий электрически соединены друг с другом.
Два верхних и нижних ряда соединены по - рядно вдоль всей платы. Эти ряды используются, чтобы подавать питание на схему. Это может быть 5в или 3.3в, но в любом случае, первое, что вам надо сделать - это подключить 5в и GND на макетную плату, как показано на рисунке. Иногда эти соединения рядов могут прерываться посередине платы, тогда, если вам понадобится, вы можете их соединить, как показано на рисунке.




Остальные отверстия, расположенные в середине платы, группируются по пять отверстий. Они используется для соединения деталей схемы.

Первое, что мы подключим к нашему микроконтроллеру, это светодиод. Схема электрических соединений показана на картинке.

Для чего нужен резистор в схеме? В данном случае он ограничивает ток, который проходит через светодиод. Каждый светодиод рассчитан на определённый ток, и если этот ток будет больше, то светодиод выйдет из строя. Узнать, какого номинала должен быть резистор можно с помощью закона ома. Для тех кто не знает или забыл, закон ома говорит, что существует линейная зависимость тока от напряжения. Т.е, чем больше мы приложим напряжение к резистору, тем больше потечет через него ток.
V=I*R
Где V
-напряжение на резистор
I
- ток через резистор
R
- сопротивление, которое надо найти.
Во-первых, мы должны узнать напряжение на резистор. Большинство светодиодов 3мм или 5мм, которые вы будете использовать, имеют рабочее напряжение 3в. Значит, на резисторе нам надо погасить 5-3=2в.
Затем мы вычислим ток, проходящий через резистор.
Большинство 3 и 5мм светодиодов светятся полной яркостью при токе 20мА. Ток больше этого может вывести их из строя, а ток меньшей силы снизит их яркость, не причинив никакого вреда.
Итак, мы хотим включить светодиод в цепь 5в,чтобы на нем был ток 20мА. Так как все детали включены в одну цепь на резистор тоже будет ток 20мА.
Мы получаем
2В = 20 мА * R
2В = 0.02A * R
R = 100 Ом
100 Ом это минимальное сопротивление, лучше использовать немного больше, потому, что светодиоды имеют некоторый разброс характеристик.
В данном примере используется резистор 220 Ом. Только потому, что у автора их очень много:wink: .
Вставьте светодиод в отверстия посередине платы таким образом, чтобы его длинный вывод был соединён с одним из выводов резистора. Второй конец резистора соедините с 5V, а второй вывод светодиода соедините с GND. Светодиод должен загореться.
Обратите внимание, что есть разница, как соединять светодиод. Ток течёт от более длинного вывода к более короткому. На схеме это можно представить, что ток течёт в ту сторону, куда направлен треугольник. Попробуйте перевернуть светодиод и вы увидите, что он не будет светиться.
А вот как вы будете соединять резистор, разницы совсем нет. Можете его перевернуть или попробовать подсоединить к другому выводу светодиода, это не повлияет на работу схемы. Он все так же будет ограничивать ток через светодиод.
Анатомия Arduino Sketch.
Программы для Arduino называют sketch. Они состоят из двух основных функций. Функция setup
и функция loop
внутри этой функции вы будете задавать все основные настройки. Какие выводы будут работать на вход или выход, какие библиотеки подключать, инициализировать переменные. Функция Setup()
запускается только один раз в течение скетча, когда стартует выполнение программы.
это основная функция, которая выполняется после setup()
. Фактически это сама программа. Это функция будет выполняться бесконечно, пока вы не выключите питание.
Arduino мигает светодиодом


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



Эта функция используется в setup () части программы и служит для инициализации выводов, которые вы будете использовать, как вход (INPUT) или выход (OUTPUT) . Вы не сможете считать или записать данные с пина, пока не установите его соответственно в pinMode . Эта функция имеет два аргумента: pinNumber - это номер пина, который вы будете использовать.
Mode
-задает, как пин будет работать. На вход (INPUT)
или выход (OUTPUT)
. Чтобы зажечь светодиод мы должны подать сигнал ИЗ
Arduino. Для этого мы настраиваем пин на выход.
- эта функция служит для того, чтобы задать состояние (state)
пина (pinNumber)
. Есть два основных состояния (вообще их 3), одно это HIGH
, на пине будет 5в, другое это Low
и на пине будет 0в. Значит, чтобы зажечь светодиод нам надо на пине, соединенном со светодиодом выставить высокий уровень HIGH
.
Задержка. Служит для задержки работы программы на заданный в мсек период.
Ниже приведен код, который заставляет мигать светодиод.
//LED Blink
int ledPin = 7;//пин Arduino к которому подключен светодиод
void setup() {
pinMode(ledPin, OUTPUT);// установка пина как ВЫХОД
}
void loop() {
digitalWrite(ledPin, HIGH);//зажечь светодиод
delay(1000);// задержка 1000 мсек (1 сек)
digitalWrite(ledPin, LOW);//Выключить светодиод
delay(1000);//ждать 1 сек
}
Небольшие пояснения по коду.
Строки, которые начинаются с "//" это комментарии Arduino их игнорирует.
Все команды заканчиваются точкой с запятой, если вы их забудете, то получите сообщение об ошибке.
ledPin
- это переменная. Переменные используются в программах для хранения значений. В данном примере переменной ledPin
присваивается значение 7, это номер пина Arduino. Когда Arduino в программе встретит строку с переменной ledPin
, он будет использовать то значение, которое мы указали ранее.
Так запись pinMode(ledPin, OUTPUT)
аналогична записи pinMode(7, OUTPUT)
.
Но в первом случае вам достаточно поменять переменную и она поменяется в каждой строке, где используется, а во втором случае вам, чтобы поменять переменную, придётся ручками в каждой команде вносить изменения.
В первой строке указывает на тип переменной. При программировании Arduino важно всегда объявлять тип переменных. Пока вам достаточно знать, что INT
объявляет отрицательные и положительные числа.
Ниже представлено моделирование скетча. Нажмите старт, чтобы посмотреть работу схемы.
Как и ожидалось, светодиод гаснет и загорается через одну секунду. Попробуйте поменять задержку, чтобы посмотреть, как она работает.
Управление несколькими светодиодами.
В этом примере вы узнаете, как управлять несколькими светодиодами. Для этого установите ещё 3 светодиода на плату и соедините их с резисторами и выводами Arduino, как показано ниже.
Для того, чтобы включать и выключать светодиоды по очереди надо написать программу подобную этой:
//Multi LED Blink
int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;
void setup() {
//установка пинов как ВЫХОД
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
void loop() {
digitalWrite(led1Pin, HIGH);//зажечь светодиод
delay(1000);//задержка 1 сек
digitalWrite(led1Pin, LOW);//потушить светодиод
delay(1000);//задержка 1 сек
//do the same for the other 3 LEDs
digitalWrite(led2Pin, HIGH);//зажечь светодиод
delay(1000);// задержка 1 сек
digitalWrite(led2Pin, LOW);//потушить светодиод
delay(1000);//задержка 1 сек
digitalWrite(led3Pin, HIGH);//зажечь светодиод
delay(1000);// задержка 1 сек
digitalWrite(led3Pin, LOW);//потушить светодиод
delay(1000);//задержка 1 сек
digitalWrite(led4Pin, HIGH);//зажечь светодиод
delay(1000);// задержка 1 сек
digitalWrite(led4Pin, LOW);//потушить светодиод
delay(1000);//задержка 1 сек
}
Эта программа будет отлично работать, но это не самое рациональное решение. Код надо изменить. Для того, чтобы программа работала раз за разом мы применим конструкцию, которая называется .
Циклы удобны, когда надо повторить одно и тоже действие несколько раз. В коде, проведенном выше мы повторяем строки
DigitalWrite (led4Pin, HIGH);
delay (1000);
digitalWrite (led4Pin, LOW);
delay (1000);
полный код скетча во вложении
(скачиваний: 1384)
Регулировка яркости светодиодов
Иногда вам надо будет менять яркость светодиодов в программе. Это можно сделать с помощью команды analogWrite()
. Эта команда так быстро включает и выключает светодиод, что глаз не видит это мерцание. Если светодиод половину времени будет включён, а половину выключен, то визуально будет казаться, что он светится в половину своей яркости. Это называется широтно-импульсная модуляция (ШИМ или PWM по-английски). Шим применяется довольно часто, так как с ее помощью можно управлять "аналоговым" компонентом с помощью цифрового кода. Не все выводы Arduino подходят для этих целей. Только те выводы, около которых нарисовано такое обозначение "~
". Вы увидите его рядом с выводами 3,5,6,9,10,11.
Соедините один из ваших светодиодов с одним из выводов ШИМ(у автора это вывод 9). Теперь запуститьскетч мигания светодиода, но прежде измените команду digitalWrite()
на analogWrite()
. analogWrite()
имеет два аргумента: первый это номер вывода, а второй- значение ШИМ (0-255), применительно к светодиодам это будет их яркость свечения, а для электродвигателей скорость вращения. Ниже представлен код примера для разной яркости светодиода.
//Меняем яркость светодиода
int ledPin = 9;//к этому выводу подсоединен светодиод
void setup() {
pinMode(ledPin, OUTPUT);// инициализация пина на вывод
}
void loop() {
analogWrite(ledPin, 255);//полная яркость (255/255 = 1)
delay(1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//выключить светодиод
delay(1000);//пауза 1 сек
analogWrite(ledPin, 191);//яркость на 3/4 (191/255 ~= 0.75)
delay(1000);//пауза 1 сек
digitalWrite(ledPin, LOW);//выключить светодиод
delay(1000);//пауза 1 сек
analogWrite(ledPin, 127);//половина яркости (127/255 ~= 0.5)
delay(1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//выключить светодиод
delay(1000);//пауза 1 сек
analogWrite(ledPin, 63);//четверть яркости (63/255 ~= 0.25)
delay(1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//выключить светодиод
delay(1000);//пауза 1 сек
}
Попробуйте поменять значение ШИМ в команде analogWrite ()
,чтобы увидеть, как это влияет на яркость.
Далее вы узнаете, как регулировать яркость плавно от полной до нулевой. Можно,конечно, скопировать кусок кода 255 раз
analogWrite(ledPin, brightness);
delay(5);//short delay
brightness = brightness + 1;
Но, сами понимаете - это будет не практично. Для этого лучше всего использовать цикл FOR, который использовали ранее.
В следующем примере используются два цикла, один для уменьшения яркости от 255 до 0
for (int brightness=0;brightness=0;brightness--){
analogWrite(ledPin,brightness);
delay(5);
}
delay(5)
используется, чтобы замедлить скорость нарастания и уменьшения яркости 5*256=1280 мсек= 1.28 сек.)
В первой строке используется "brightness-
" ,для того чтобы значение яркости уменьшалось на 1, каждый раз, когда цикл повторяется. Обратите внимание, что цикл будет работать до тех пор, пока brightness >=0
.Заменив знак >
на знак >=
мы включили 0 в диапазон яркости. Ниже смоделирован этот скетч. //плавно меняем яркость
int ledPin = 9;//к этому пину подключен светодиод
void setup() {
pinMode(ledPin, OUTPUT);// инициализация пина на выход
}
void loop() {
//плавно увеличиваем яркость (0 to 255)
for (int brightness=0;brightness=0;brightness--){
analogWrite(ledPin,brightness);
delay(5);
}
delay(1000);//ждем 1 сек
//плавно уменьшаем яркость (255 to 0)
for (int brightness=255;brightness>=0;brightness--){
analogWrite(ledPin,brightness);
delay(5);
}
delay(1000);//ждем 1 сек
}
}
Это видно не очень хорошо, но идея понятна.
RGB-светодиод и Arduino
RGB-светодиод на самом деле это три светодиода разного цвета в одном корпусе.

Включая разные светодиоды с различной яркостью можно комбинировать и получать разные цвета. Для Arduino, где количество градаций яркости равно 256 вы получите 256^3=16581375 возможных цветов. Реально их, конечно, будет меньше.
Светодиод, который мы будем использоваться общим катодом. Т.е. все три светодиода конструктивно соединены катодами к одному выводу. Этот вывод мы подсоединим к выводу GND. Остальные выводы, через ограничительные резисторы, надо подсоединить к выводам ШИМ. Автор использовал выводы 9-11.Таким образом можно будет управлять каждым светодиодом отдельно. В первом скетче показано, как включить каждый светодиод отдельно.


//RGB LED - test //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ //включение/выключение красного светодиод digitalWrite(red, HIGH); delay(500); digitalWrite(red, LOW); delay(500); //включение/выключение зеленого светодиода digitalWrite(green, HIGH); delay(500); digitalWrite(green, LOW); delay(500); //включение/выключение синего светодиода digitalWrite(blue, HIGH); delay(500); digitalWrite(blue, LOW); delay(500); }
В следующем примере используются команды analogWrite()
и , чтобы получать различные случайные значения яркости для светодиодов. Вы увидите разные цвета, меняющиеся случайным образом.
//RGB LED - random colors
//pin connections
int red = 9;
int green = 10;
int blue = 11;
void setup(){
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
}
void loop(){
//pick a random color
analogWrite(red, random(256));
analogWrite(blue, random(256));
analogWrite(green, random(256));
delay(1000);//wait one second
}
Random(256)
-возвращает случайное число в диапазоне от 0 до 255.
В прикрепленном файле скетч, который продемонстрирует плавные переходы цветов от красного к зеленому, затем к синему, красному, зеленому и т.д.
(скачиваний: 381)
Пример скетча работает, но есть много повторяющегося кода. Можно упростить код, написав собственную вспомогательную функцию, которая будет плавно менять один цвет на другой.
Вот как она будет выглядеть:
(скачиваний: 414)
Давайте рассмотрим определение функции по частям. Функция называется fader
и имеет два аргумента. Каждый аргумент отделяется запятой и имеет тип объявленный в первой строке определения функции: void fader (int color1, int color2)
. Вы видите, что оба аргумента объявлены как int
, и им присвоены имена color1
и color2
в качестве условных переменных для определения функции. Void
означает, что функция не возвращает никаких значений, она просто выполняет команды. Если надо было бы написать функцию, которая возвращала результат умножения это выглядело бы так:
int multiplier(int number1, int number2){
int product = number1*number2;
return product;
}
Обратите внимание, как мы объявили Тип int
в качестве типа возвращаемого значения вместо
void
.
Внутри функции идут команды, которые вы уже использовали в предыдущем скетче, только номера выводов заменили на color1
и color2
. Вызывается функция fader
, ее аргументы вычисляются как color1 = red
и color2 = green
. В архиве полный скетч с использованием функций
(скачиваний: 313)
Кнопка
В следующем скетче будет использоваться кнопка с нормально разомкнутыми контактами, без фиксации.

Это значит, что пока кнопка не нажата, ток через неё не идёт, а после отпускания, кнопка возвращается в исходное положение.
В схеме, помимо кнопки используется резистор. В данном случае он не ограничивает ток, а "подтягивает" кнопку к 0в (GND). Т.е. пока кнопка не нажата на выводе Arduino, к которому она подключена, будет низкий уровень. Резистор, используемый в схеме 10 кОм.

//определяем нажатие кнопки int buttonPin = 7; void setup(){ pinMode(buttonPin, INPUT);//инициализируем пин на вход Serial.begin(9600);//инициализируем последовательный порт } void loop(){ if (digitalRead(buttonPin)==HIGH){//если кнопка нажата Serial.println("pressed"); // выводим надпись "pressed" } else { Serial.println("unpressed");// иначе "unpressed" } }
В этом скетче несколько новых команд.
-эта команда принимает значение High (высокий уровень) и low (низкий уровень), того вывода, который мы проверяем. Предварительно в setup() этот вывод надо настроить на вход.
; //где buttonPin это номер вывода, куда подсоединяется кнопка.
Последовательный порт позволяет отправлять Arduino сообщения на компьютер, в то время, как сам контроллер выполняет программу. Это полезно для отладки программы, отправки сообщений на другие устройства или приложения. Чтобы включить передачу данных через последовательный порт (другое название UART или USART), надо инициализировать его в setup()
Serial.begin() имеет всего один аргумент-это скорость передачи данных между Arduino и компьютером.
скетче используется команда для вывода сообщения на экран в Arduino IDE (Tools >> Serial Monitor).
- конструкция позволяют контролировать ход выполнения программы, объеденив несколько проверок в одном месте.
If(если) digitalRead возвращает значение HIGH, то на мониторе выводится слово "нажата". Else(иначе) на мониторе выводится слово " отжата" . Теперь можно попробовать включать и выключать светодиод по нажатию кнопки.
//button press detection with LED output int buttonPin = 7; int ledPin = 8; void setup(){ pinMode(buttonPin, INPUT);//this time we will set button pin as INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ if (digitalRead(buttonPin)==HIGH){ digitalWrite(ledPin,HIGH); Serial.println("pressed"); } else { digitalWrite(ledPin,LOW); Serial.println("unpressed"); } }
Аналоговый вход.
analogRead
позволяет считать данные с одного из аналоговых выводов Arduino и выводит значение в диапазоне от 0 (0В) до 1023 (5В). Если напряжение на аналоговом входе будет равно 2.5В, то будет напечатано 2.5 / 5 * 1023 = 512
analogRead
имеет только один аргумент- Это номер аналогового входа (А0-А5). В следующем скетче приводится код считывания напряжения с потенциометра. Для этого подключите переменный резистор, крайними выводами на пины 5V и GND, а средний вывод на вход А0.

Запустите следующий код и посмотрите в serial monitor, как меняются значения в зависимости от поворота ручки резистора.
//analog input
int potPin = A0;//к этому пину подсоединяется центральный вывод потенциометра
void setup(){
//аналоговый пин по умолчанию включен на вход, поэтому инициализация не нужна
Serial.begin(9600);
}
void loop(){
int potVal = analogRead(potPin);//potVal is a number between 0 and 1023
Serial.println(potVal);
}
Следующий скетч объединяет скетч нажатия кнопки и скетч управления яркостью светодиода. Светодиод будет включаться от кнопки, и управлять яркостью свечения будет потенциометр.
//button press detection with LED output and variable intensity
int buttonPin = 7;
int ledPin = 9;
int potPin = A0;
void setup(){
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
if (digitalRead(buttonPin)==HIGH){//if button pressed
int analogVal = analogRead(potPin);
int scaledVal = map(analogVal, 0, 1023, 0, 255);
analogWrite(ledPin, scaledVal);//turn on led with intensity set by pot
Serial.println("pressed");
} else {
digitalWrite(ledPin, LOW);//turn off if button is not pressed
Serial.println("unpressed");
}
}
В этой статье я собрал для вас самые популярные книги по проектированию устройств на базе микроконтроллеров Ардуино. Прочитав одну из этих книг вы сможете создавать умные гаджеты и системы автоматизации. Начиная от простых устройств, отображающих значения датчиков, и заканчивая системами умного дома или ЧПУ станками. Все это можно сделать и без прочтения книг, но тогда это займет гораздо больше времени, сил и денег. В книгах рассмотрены общие понятия электротехники, принципы действия микроконтроллеров и подключаемых датчиков и механизмов.
Скачать книги по ардуино на русском языке.
Ниже представлены 5 самые популярные книги по Arduino. Советую прочитать, если не все, то хотя бы первую из них. Среди этих книг есть книги как для начинающих, так и для людей уже знакомых с темой ардуино. Любой сможет найти для себя, что то новое и полезное. Все книги ниже переведены на русский язык.
Данная книга описывает аспекты и принципы проектирования устройств с помощью Arduino. Рассказывает об аппаратной и программной части Ардуино. В этой книге объясняются принципы программирования в среде . Показано, как правильно читать технические описания, подбирать детали для собственных проектов и как анализировать электрические схемы готовых устройств. Так же в книге описаны примеры использования разнообразных датчиков, индикаторов, разных интерфейсов передачи данных и исполнительных механизмов. Для всех примеров в книге есть перечисление необходимых деталей, монтажные схемы, примеры кода с полным описанием.
Проекты с использованием контроллера Arduino. Петин В.А.
В этой книге основное внимание уделено практической части создания собственных устройств на базе микроконтроллеров ардуино. Приведены схемы подключения, подробное описание логики программной части, список необходимых датчиков и модулей. Эта книга предназначена для тех кто уже имеет представление о том и знаком с основными функциями языка программирования ардуино.
Данное издание посвящено программированию микроконтроллеров на базе Arduino. В книге рассмотрены примеры скетчей и принципы написания своих прошивок. Изучив этот материал вы сможете писать прошивки для самых сложных устройств, включающих в себя множество технических элементов. Так же в книге рассмотрены популярные библиотеки для удобной работы в Arduino IDE. Страница поможет разобраться и запомнить основные функции и конструкции языка программирования Arduino.
Arduino и Raspberry Pi в проектах Internet of Things. Виктор Петин
>Arduino и Raspberry Pi в проектах Internet of ThingsОписание: Рассмотрено создание простых устройств в рамках концепции Интернета вещей (IoT, Internet of Things) на базе популярной платформы Arduino и микрокомпьютера Raspberry Pi. Показана установка и настройка среды разработки приложений Arduino IDE, а также среда макетирования Frizing. Описаны технические возможности, особенности подключения и взаимодействия различных датчиков и исполнительных устройств. Показана организация доступа разрабатываемых проектов к сети Интернет, отправка и получение ими данных с использованием популярных облачных IoT сервисов: Narodmon, ThingSpeak, Xively, Weaved, Blynk, Wyliodrin и др. Уделено внимание обмену данными с помощью платы GPRS/GSM Shield. Рассмотрен проект создания собственного сервера для сбора по сети данных с различных устройств на платформе Arduino. Показано как использовать фреймворк WebIOPi для работы с Raspberry Pi. Приведены примеры использования Wi-Fi-модуля ESP8266 в проектах “Умный дом”. На сайте издательства размещен архив с исходными кодами программ и библиотек.
— Установка и настройка среды разработки приложений Arduino IDE и среды макетирования Frizing
— Датчики и исполнительные устройста для Arduino и Raspberry Pi
— Отправка и получение данных из IoT сервисов Narodmon, ThingSpeak, Xively, Weaved, Blynk, Wyliodrin
— Создание Web-сервера для сбора данных с Android-устройств
— Обмен данными с помощью платы GPRS/GSM Shield
— Фраймфорк WebIOPi для работы с Raspberry Pi
— WiFi-модуль ESP8266 в проектах “Умный дом”
Быстрый старт. Первые шаги по освоению Arduino
Стартовый набор-конструктор c платой Arduino — Ваш пропуск в мир программирования, конструирования и электронного творчества.
Эта брошюра содержит всю информацию для ознакомления с платой Arduino, а также 14 практических экспериментов с применением различных электронных компонентов и модулей.
Полученные знания, в дальнейшем, дадут возможность создавать свои собственные проекты и с легкостью воплощать их в жизнь.
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. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.

Подключение библиотек
Существуют разные способы для добавления пользовательских функции. Подключить библиотеки можно тремя способами:
- С помощью Library Manager
- С помощью импорта в виде файла.zip
- Установка вручную.
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. Будет интересно, не пропустите.
До встречи, в следующих статьях.
С уважением, Гридин Семён.


