Как работает Arduino. Программирование Arduino

18.08.2019

Мы рассмотрели ранее. Сегодня же мы проделаем вместе с вами первые шаги с Arduino – начнем с установки программного обеспечения и закончим написанием и запуском первой программы.

Мы полагаем, что саму плату Arduino вы уже себе приобрели:). Если кто-то проспал предыдущий пост, то напомним, что Arduino можно приобрести (сама плата Arduino UNO) или (стартовый комплект Arduino). Имея в руках Arduino, мы можем перейти к изучению.

Программное обеспечение «Arduino IDE»

Для начала нам нужно скачать с сайта программное обеспечение «Arduino IDE» на русском языке. С помощью IDE мы будем программировать микроконтроллер в нашей Arduino.

В случае с Windows достаточно скачать нужный архив и распаковать его в папку (желательно в корне диска «С»). После распаковки «Arduino IDE» мы уже можем подключить плату Arduino к персональному компьютеру.

Подключение Arduino к компьютеру и установка драйверов

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

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

Первый запуск Arduino IDE

Запустите «Arduino IDE», кликнув два раза на файл arduino.exe. Вы увидите такое окно:

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

В меню «Инструменты — Плата» выберите версию Arduino, которая у вас уже есть (например, Arduino UNO):

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

На этом все, теперь мы можем уже перейти к программированию

Первая программа Arduino

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

Из меню «Файл – Примеры – Basics» выберите «Blink»

Это очень простая программа, отвечающая за мигание , расположенного на плате Arduino, который подключен к выводу 13:

Давайте рассмотрим по порядку всю программу:

// Все что стоит после (//…) или между (/* … */) являются комментариями в коде /* Функция setup () выполняется только один раз, в начале программы. Она чаще всего используется для загрузки различных параметров. */ void setup() { pinMode(13, OUTPUT); // Установить вывод 13 в качестве выхода } //Функция loop () — это цикл, который выполняется все время пока включено питание. void loop() { digitalWrite(13, HIGH); // подать высокий уровень (+5В) на вывод 13 delay(1000); // ждать секунду (1000 мсек = 1 сек) digitalWrite(13, LOW); // подать низкий уровень (0В) на вывод 13 delay(1000); // ждать секунду // После достижения конца цикла loop () все начнется с самого начала }

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

После загрузки программы, в нижней части окна появится надпись: «Загрузка завершена, после чего светодиод начнет мигать с интервалом в 1 сек.

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

Самая простая схема на Arduino

Нам удалось заставить моргать светодиод, расположенный на плате Arduino. Теперь построим максимально простую аналогичную схему: заставим мигать светодиод, подключенный через резистор (около 220 Ом) к одному из выводов Arduino.

Наша программа «Blink» из примера управляет сигналом на контакте 13, к которому подключен светодиод на плате. Однако ничто не мешает нам подключить к этому выводу (13) и «земле» (GND) любой другой внешний светодиод. Имея мы можем быстро собрать такую схему:

Конечно, контакт 13, здесь только как пример. Мы так же можем в программе изменить номер контакта (например, на 6) и к этому контакту подключить дополнительный светодиод.

Чтобы нам не менять номер контакта в нескольких местах (в нашем примере программы он встречается 3 раза), мы можем его присвоить переменной, к которой мы будем ссылаться:

Int led = 13; // назначаем переменной led номер контакта 13 void setup() { pinMode(led, OUTPUT); // подставить переменную led вместо номера контакта 13 } void loop() { digitalWrite(led, HIGH); // подставить переменную led вместо номера контакта 13 delay(1000); digitalWrite(led, LOW); // подставить переменную led вместо номера контакта 13 delay(1000); }

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

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

Потенциометр здесь использован в роли . То есть, напряжение на его крайних выводах (+5В и «земля») делится на две части, из которых одна часть подается (центральный вывод потенциометра) на вход A0 (аналоговый вход Arduino). Вращая потенциометр, мы меняем величину напряжения, которое подается на аналоговый вход.

Напряжение, поступающее на аналоговый вход, определяется Arduino как число в диапазоне от 0 (0В) до 1023 (для 5В). Таким образом, если мы, например, подадим на аналоговый вход 2,5В, это будет истолкована Arduino как 512. Надеемся, что до этого момента все ясно

Все остальное объясним уже в самой программе:

Int led = 13; // это уже для нас понятно int potPin = 0; // назначаем переменной номер аналогового входа int pot; // переменная, в которой мы будем сохранять значение потенциометра int bk; // переменная, в которой мы будем сохранять значение скорости мигания светодиода void setup() { pinMode(led, OUTPUT); } void loop() { pot = analogRead(potPin); // считываем A0 и сохраняем в переменной pot /* Использованная ниже функция map() служит для преобразования одного диапазона чисел в другой. В нашем случае, перерасчет числа из диапазона от 0 до 1023 (значение, полученное с A0) на диапазон чисел от 50 до 3000 (интервал между включением и выключением светодиода). Пересчитанный диапазон чисел будет сохранен в переменной «bk». */ bk = map(pot, 0, 1023, 50, 3000); digitalWrite(led, HIGH); delay(bk); // пауза зависит от положения потенциометра digitalWrite(led, LOW); delay(bk); // пауза зависит от положения потенциометра }

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

Проще говоря, это резистор, сопротивление которого изменяется в зависимости от интенсивности падающего на него света.

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

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

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

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-машинку, управляемый вертолет, создать свой телефон, создать систему и т.д.

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

Изучение микроконтроллеров кажется чем-то сложным и непонятным? До появления Арудино - это было действительно не легко и требовало определенный набор программаторов и прочего оборудования.

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (shield).

Какую первую плату Arduino купить новичку?

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

В отечественных магазинах на 2017 год её цена порядка 4-5 долларов. На современных моделях её сердцем является Atmega328.

Изображение платы ардуино и расшифровка функций каждого вывода, Arduino UNO pinout

Микроконтроллер на данной плате это длинна микросхема в корпусе DIP28, что говорит о том, что у него 28 ножек.

Следующая по популярности плата, стоит почти в двое дешевле предыдущей - 2-3 доллара. Это плата . Актуальные платы построены том же Atmega328, функционально они аналогичны с UNO, различия в размерах и решении согласования с USB, об этом позже подробнее. Еще одним отличием является то, что для подключения к плате устройств предусмотрены штекера, в виде иголок.

Количество пинов (ножек) этой платы совпадает, но вы можете наблюдать что микроконтроллер выполнен в более компактном корпусе TQFP32, в корпусе добавлены ADC6 и ADC7, другие две «лишних» ножки дублируют шину питания. Её размеры довольно компактные - примерно, как большой палец вашей руки.

Третья по популярности плата - это , на ней нет USB порта для подключения к компьютеру, как осуществляется связь я расскажу немного позже.

Это самая маленькая плата из всех рассмотренных, в остальном она аналогична предыдущим двум, а её сердцем является по-прежнему Atmega328. Другие платы рассматривать не будем, так как это статья для начинающих, да и сравнение плат - это тема отдельной статьи.

В верхней части схема подключения USB-UART, пин «GRN» - разведен на цепь сброса микроконтроллера, может называться по иному, для чего это нужно вы узнаете далее.

Если UNO удобна для макетирования, то Nano и Pro Mini удобны для финальных версий вашего проекта, потому что занимают мало места.

Как подключить Arduino к компьютеру?

Arduino Uno и Nano подключаются к компьютеру по USB. При этом нет аппаратной поддержки USB порта, здесь применено схемное решение преобразования уровней, обычно называемое USB-to-Serial или USB-UART (rs-232). При этом в микроконтроллер прошит специальный Arduino загрузчик, который позволяет прошиваться по этим шинам.

В Arduino Uno реализована эта вязь на микроконтроллере с поддержкой USB - ATmega16U2 (AT16U2). Получается такая ситуация, что дополнительный микроконтроллер на плате нужен для прошивки основного микроконтроллера.

В Arduino Nano это реализовано микросхемой FT232R, или её аналогом CH340. Это не микроконтроллер — это преобразователь уровней, этот факт облегчает сборку Arduino Nano с нуля своими руками.

Обычно драйвера устанавливаются автоматически при подключении платы Arduino. Однако, когда я купил китайскую копию Arduino Nano, устройство было опознано, но оно не работало, на преобразователе была наклеена круглая наклейка с данными о дате выпуска, не знаю нарочно ли это было сделано, но отклеив её я увидел маркировку CH340.

До этого я не сталкивался с таким и думал, что все USB-UART преобразователи собраны на FT232, пришлось скачать драйвера, их очень легко найти по запросу «Arduino ch340 драйвера». После простой установки - всё заработало!

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

Что делать если на моей плате нет USB?

Плата Arduino Pro Mini имеет меньшие габариты. Это достигли тем что убрали USB разъём для прошивки и тот самый USB-UART преобразователь. Поэтому его нужно докупить отдельно. Простейший преобразователь на CH340 (самый дешевый), CPL2102 и FT232R, продаётся стоит от 1 доллара.

При покупке обратите внимание на какое напряжение рассчитан этот переходник. Pro mini бывает в версиях 3.3 и 5 В, на преобразователях часто расположен джампер для переключения напряжения питания.

При прошивке Pro Mini, непосредственно перед её началом необходимо нажимать на RESET, однако в преобразователях с DTR это делать не нужно, схема подключения на рисунке ниже.

Стыкуются они специальными клеммами «Мама-Мама» (female-female).

Собственно, все соединения можно сделать с помощью таких клемм (Dupont), они бывают как с двух сторон с гнездами, так и со штекерами, так и с одной стороны гнездо, а с другой штекер.

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

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

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

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

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

Основы программирования в Arduino IDE

В начале кода нужно объявить переменные и подключить дополнительные библиотеки, если они имеются, делается это следующим образом:

#include biblioteka.h; // подключаем библиотеку с названием “Biblioteka.h”

#define peremennaya 1234; // Объявляем переменную со значением 1234

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

int led = 13; // создали переменную “led” и присвоили ей значение «13»

Программа может определять состояние пина, как 1 или 0. 1 -это логическая единица, если пин 13 равен 1, то напряжение на его физической ножке будет равняться напряжению питания микроконтроллера (для ардуино UNO и Nano - 5 В)

Запись цифрового сигнала осуществляется командой digitalWrite (пин, значение), например:

digitalWrite(led, high); //запись единицы в пин 13(мы его объявили выше) лог. Единицы.

Как вы могли понять обращение к портам идёт по нумерации на плате, соответствующей цифрой. Вот пример аналогичного предыдущему коду:

digitalWrite (13, high); // устанавливаем вывод 13 в едиицу

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

delayMicroseconds() Delay (1000); //микроконтроллер будет ждать 1000 мс (1 секунду)

Настройки портов на вход и выход задаются в функции void setup{}, командой:

pinMode(NOMERPORTA, OUTPUT/INPUT); // аргументы - название переменной или номер порта, вход или выход на выбор

Понимаем первую программу «Blink»

В качестве своеобразного «Hello, world» для микроконтроллеров является программа мигания светодиодом, давайте разберем её код:

В начале командой pinMode мы сказали микроконтроллеру назначить порт со светодиодом на выход. Вы уже заметили, что в коде нет объявления переменной “LED_BUILTIN”, дело в том, что в платах Uno, Nano и других с завода к 13 выводу подключен встроенный светодиод и он распаян на плате. Он может быть использован вами для индикации в ваших проектах или для простейшей проверки ваших программ-мигалок.

Далее мы установили вывод к которому подпаян светодиод в единицу (5 В), следующая строка заставляет МК подождать 1 секунду, а затем устанавливает пин LED_BUILTIN в значение нуля, ждет секунду и программа повторяется по кругу, таким образом, когда LED_BUILTIN равен 1 - светодиод(да и любая другая нагрузка подключенная к порту) включен, когда в 0 - выключен.

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

Микроконтроллер AVR Atmega328 имеет встроенный 10 битный аналогово цифровой преобразователь. 10 битный АЦП позволяет считывать значение напряжение от 0 до 5 вольт, с шагом в 1/1024 от всего размаха амплитуды сигнала (5 В).

Чтобы было понятнее рассмотрим ситуацию, допустим значение напряжения на аналоговом входе 2.5 В, значит микроконтроллер прочитает значение с пина «512», если напряжение равно 0 - «0», а если 5 В - (1023). 1023 - потому что счёт идёт с 0, т.е. 0, 1, 2, 3 и т.д. до 1023 - всего 1024 значения.

Вот как это выглядит в коде, на примере стандартного скетча «analogInput»

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

delay(sensorValue);

digitalWrite(ledPin, LOW);

delay(sensorValue);

Объявляем переменные:

    Ledpin - самостоятельно назначаем пин со встроенным светодиодом на выход и даём индивидуальное имя;

    sensorPin - аналоговый вход, задаётся соответственно маркировке на плате: A0, A1, A2 и т.д.;

    sensorValue - переменная для хранения целочисленного прочитанного значения и дальнейшей работы с ним.

Код работает так: sensorValue сохраняем прочитанное с sensorPin аналоговое значение (команда analogRead). - здесь работа с аналоговым сигналом заканчивается, дальше всё как в предыдущем примере.

Записываем единицу в ledPin, светодиод включается и ждем время равное значению sensorValue, т.е. от 0 до 1023 миллисекунд. Выключаем светодиод и снова ждем этот период времени, после чего код повторяется.

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

Функция map для Арудино

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

Теперь о синтаксисе: map (значение которое мы переводим, минимальная величина входного, максимальная величина входного, минимальная выходного, максимальная выходного значения).

В коде это выглядит так:

(map(analogRead(pot), 0, 1023, 0, 180));

Мы считываем значение с потенциометра (analogRead(pot))от 0 до 1023, а на выходе получаем числа от 0 до 180

Значения карты величин:

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

И схема подключения.

Выводы Ардуино - очень удобное средство для обучения работы с микроконтроллерами. А если использовать чистый C AVR, или как его иногда называют «Pure C» - вы значительно уменьшите вес кода, и его больше поместиться в память микроконтроллера, в результате вы получите отличную отладочную плату заводского исполнения с возможностью прошивки по USB.

Мне нравится ардуино. Жаль, что её многие опытные программисты микроконтроллеров безосновательно ругают, что она слишком упрощена. Упрощен, в принципе, только язык, но никто не заставляет пользоваться именно им, плюс вы можете прошить микроконтроллер через ICSP разъём, и залить туда тот код, который вам хочется, без всяких ненужных Вам бутлоадеров.

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

Еще больше информации про Ардуино и особенности его использования в различных схемах смотрите в электронной книге - .

Вам понадобится

  • - плата Arduino UNO,
  • - кабель USB (USB A - USB B),
  • - персональный компьютер,
  • - светодиод,
  • - резистор 220 Ом,
  • - пара проводов 5-10 см,
  • - при наличии - макетная плата (breadboard).

Инструкция

Загрузите среду разработки Arduino для своей операционной системы (поддерживаются ОС Windows, Mac OS X, Linux) на странице http://arduino.cc/en/Main/Software, можно установщик, можно . Скачанный файл содержит также и драйверы для плат Arduino.

Установите драйвер. Рассмотрим вариант для ОС Windows. Для этого дождитесь, когда операционная система предложит установить драйвер. Откажитесь. Нажмите Win + Pause, запустите Диспетчер устройств. Найдите раздел "Порты (COM & LPT)". Увидите там порт с названием "Arduino UNO (COMxx)". Кликните правой кнопкой мыши на нём и выберите "Обновить драйвер". Далее выбираете расположение драйвера, который вы только что скачали.

Среда разработки уже содержит в себе множество примеров для изучения работы платы. Откройте пример "Blink": Файл > Примеры > 01.Basics > Blink.

Укажите среде разработки свою плату. Для этого в меню Сервис > Плата выберите "Arduino UNO".

Выберите порт, которому назначена плата Arduino. Чтобы узнать, к какому порту подключена плата, запустите диспетчер устройств и найдите раздел Порты (COM & LPT). В скобках после названия платы будет указан порта. Если платы нет в списке, попробуйте её от компьютера и, выждав несколько секунд, снова.

Отключите плату от компьютера. Соберите схему, как показано на рисунке. Обратите внимание, что короткая ножка светодиода должна быть соединена с выводом GND, длинная через резистор с цифровым пином 13 платы Arduino. Удобнее пользоваться макетной , но при её отсутствии можно соединить провода скруткой.
Важное примечание! Цифровой пин 13 уже имеет свой резистор на плате. Поэтому при подключении светодиода к плате внешний резистор использовать не обязательно. При подключении светодиода к любым другим выводам Ардуино использование обязательно!

Теперь можно загрузить программу в память платы. Подключите плату к компьютеру, подождите несколько секунд, пока происходит инициализация платы. Нажмите кнопку "Загрузить", и Ваш запишется в память платы Arduino. Программирование под Arduino весьма интуитивно и совсем не сложно. Посмотрите на изображение - в комментариях к программе есть небольшие пояснения. Этого достаточно чтобы разобраться с вашим первым экспериментом.

Видео по теме

Обратите внимание

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

Полезный совет

В сети есть множество сайтов, посвящённых Arduino. Читайте, осваивайте, не бойтесь экспериментировать и познавать новое!

Источники:

  • Мигаем светодиодом

Программирование привлекает и интересует многих современных людей, в особенности - молодых и начинающих специалистов, которые только начинают выбирать будущую профессию. Они нередко встают перед вопросом - с чего начать в изучении программирования? Если вы решили научиться программировать, не стоит совершать распространенную ошибку - не беритесь сразу за сложные системы и языки (например, Си). Начав со слишком сложного языка, вы можете сформировать неправильное впечатление о программировании в целом. Начинающим рекомендуется работать с самыми простыми системами - например, учиться писать программы в Бейсик. Изучение этого языка позволит в короткие сроки добиться хороших результатов. Усвоить PureBasic несложно - этот универсальный компилируемый язык, имеющий широкие возможности, поможет вам понять основы программирования и совершенствовать свои умения в дальнейшем.

Инструкция

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

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

Математика

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

Обучение не заканчивается

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

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

Вы стали счастливым обладателем платы Arduino. Что же делать дальше? А дальше нужно подружить Arduino с компьютером. Мы рассмотрим начало работы с Arduino Uno в операционной системе Windows.

1. Установка Arduino IDE

Для начала нужно установить на компьютер интегрированную среду разработки Arduino - Arduino IDE.

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

2. Запуск Arduino IDE

После того как вы загрузили и установили Arduino IDE, давайте запустим её!

Перед нами окно Arduino IDE. Обратите внимание - мы ещё не подключали нашу плату Arduino Uno к компьютеру, а в правом нижнем углу уже красуется надпись «Arduino Uno on COM1». Таким образом Arduino IDE сообщает нам, что в данный момент она настроена на работу с целевой платой Arduino Uno. А когда придёт время, Arduino IDE будет искать Arduino Uno на порту COM1.

Позже мы поменяем эти настройки.

Что-то пошло не так?

    Arduino IDE не запускается? Вероятно на компьютере некорректно установлена JRE (Java Runtime Environment). Обратитесь к пункту (1) для переустановки Arduino IDE: инсталлятор сделает всю работу по развёртыванию JRE.

3. Подключение Arduino к компьютеру

После установки Arduino IDE пришло время подключить Arduino Uno к компьютеру.

Соедините Arduino Uno с компьютером через USB-кабель. Вы увидите, как на плате загорится светодиод «ON», и начнёт мигать светодиод «L». Это означает, что на плату подано питание, и микроконтроллер Arduino Uno начал выполнять прошитую на заводе программу «Blink» (мигание светодиодом).

Чтобы настроить Arduino IDE на работу с Arduino Uno, нам необходимо узнать, какой номер COM-порта присвоил компьютер Arduino Uno. Для этого нужно зайти в «Диспетчер устройств» Windows и раскрыть вкладку «Порты (COM и LPT)». Мы должны увидеть следующую картину:

Это означает, что операционная система распознала нашу плату Arduino Uno как COM-порт, подобрала для неё правильный драйвер и назначила этому COM-порту номер 7. Если мы подключим к компьютеру другую плату Arduino, то операционная система назначит ей другой номер. Поэтому, если у вас несколько плат Arduino, очень важно не запутаться в номерах COM-портов.

Что-то пошло не так?

4. Настройка Arduino IDE на работу с Arduino Uno

Теперь нам необходимо сообщить Arduino IDE, что плата, с которой ей предстоит общаться, находится на COM-порту «COM7».

Для этого переходим в меню «Сервис» → «Последовательный порт» и выбираем порт «COM7». Теперь Arduino IDE знает - что-то находится на порту «COM7». И с этим «чем-то» ей вскоре предстоит общаться.

Чтобы у Arduino IDE не осталось никаких сомнений, необходимо прямо указать: «Мы будем использовать Arduino Uno!». Для этого переходим в меню «Сервис» → «Плата» и выбираем нашу «Arduino Uno».

Что-то пошло не так?

    Список последовательных портов пуст? Значит Arduino Uno некорректно подключена. Вернитесь к пункту (3), чтобы отладить соединение.

    Arduino IDE невероятно тормозит при навигации по меню? Отключите в диспетчере устройств все внешние устройства типа «Bluetooth Serial». Например, виртуальное устройство для соединения с мобильным телефоном по Bluetooth может вызвать такое поведение.

Среда настроена, плата подключена. Теперь можно переходить к загрузке скетча.

Arduino IDE содержит очень много готовых примеров, в которых можно быстро подсмотреть решение какой-либо задачи. Есть в ней и простой пример «Blink». Давайте выберем его.

Немного модифицируем код, чтобы увидеть разницу с заводским миганием светодиода.

Вместо строчки:

Delay(1000 ) ;

Delay(100 ) ;

Полная версия кода:

/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13 ; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT) ; } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH) ; // turn the LED on (HIGH is the voltage level) delay(100 ) ; // wait for a second digitalWrite(led, LOW) ; // turn the LED off by making the voltage LOW delay(100 ) ; // wait for a second }

Теперь светодиод «L» должен загораться и гаснуть на десятую часть секунды. То есть в 10 раз быстрее, чем в заводской версии.

Загрузим наш скетч в Arduino Uno и проверим, так ли это? После загрузки светодиод начнёт мигать быстрее. Это значит, что всё получилось. Теперь можно смело переходить к «Экспериментам »

Что-то пошло не так?

    В результате загрузки появляется ошибка вида avrdude: stk500_get sync(): not in sync: resp = 0x00 ? Это значит, что Arduino настроена некорректно. Вернитесь к предыдущим пунктам, чтобы убедиться в том, что устройство было распознано операционной системой и в Arduino IDE установлены правильные настройки для COM-порта и модели платы.

Похожие статьи