Название Arduino является в настоящее время этаким "модным" словом для большинства радиолюбителей и всех, кто мало-мальски знаком с электроникой, поскольку данная платформа позволяет создавать электронные устройства быстро и дешево. Наличие обширного онлайн сообщества данной платформы делает ее идеальным выбором для тех, кто только начал свое знакомство с электроникой и программированием. Даже людям, не имеющим технического образования (а именно для таких она и была первоначально создана), освоить Arduino будет достаточно просто.
Почему так актуальна эта платформа? Как начать работу с ней? Как она может улучшить ваш стиль жизни? Все эти вопросы будут рассмотрены в данной статье. Для этого мы познакомимся с установкой среды Arduino IDE на ваш компьютер и загрузим в нее небольшую программу, реализующую мигание светодиода, который мы подключим к Arduino с использованием макетной платы.
Что такое Arduino
К сожалению некоторые начинающие радиолюбители считают Arduino микроконтроллером, но это не совсем так. Давайте попробуем разобраться что же это.
Arduino представляет собой платформу разработки с открытым исходным кодом, которая состоит из простого в использовании оборудования и среды программирования. Наиболее распространенным типом оборудования является Arduino UNO, а среда программирования называется Arduino IDE. Кроме Arduino UNO существует еще достаточно много аналогичных плат - Arduino Mega, nano, mini, но в данной статье в целях обучения мы будем использовать именно Arduino UNO. А Arduino IDE – это как раз та программная среда, с помощью которой мы будем программировать плату Arduino UNO.
Установка Arduino IDE
Прежде чем начать работу с Arduino необходимо установить среду программирования Arduino IDE на ваш компьютер/ноутбук. Все описанные далее шаги по установке данной программной среды будут ориентированы на операционную систему Windows, для остальных операционных систем последовательность действий будет примерно такой же. Если возникнут проблемы с другими системами, то помощь можно найти по следующим ссылкам – для пользователей Mac и пользователей Linux. Перед началом установки Arduino IDE убедитесь что вы обладаете правами администратора на вашем компьютере – это облегчит установку.
Шаг 1. Загрузите Arduino IDE с официального сайта - https://www.arduino.cc/download_handler.php.
Шаг 2. Запустите скачанный exe файл.
Шаг 3. В открывшемся окне кликните на “I Agree” чтобы согласиться с условиями лицензии Arduino.
Шаг 4. В окне опций установки отметьте все галочки (см. рисунок).
Шаг 5. На этом шаге необходимо выбрать место установки Arduino IDE. По умолчанию стоит путь установки в Program files на диске C – крайне рекомендуется оставить именно этот путь.
Шаг 6. На этом шаге вы можете наблюдать как Arduino IDE устанавливается на ваш компьютер (см. рисунок). После того как установка будет завершена нажмите кнопку “completed”.
Шаг 7. После завершения установки запустите на выполнение файл Arduino.exe. Откроется окно IDE с минимумом кода внутри него – см. рисунок.
Подключение вашей платы Arduino к компьютеру
После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.
Синий кабель для программирования может выполнять следующие три функции:
- Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
- Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
- Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.
После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.
Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте "Диспетчер устройств (Device manager)" на вашем компьютере.
В диспетчере устройств откройте опцию "Порты" “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.
При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет.
Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.
В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.
Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.
Загрузка программы мигания светодиода
Теперь загрузим нашу первую программу в плату Arduino при помощи программной среды Arduino IDE, которую мы только недавно установили. Установленная Arduino IDE содержит несколько примеров программ, которые будут весьма полезны для начинающих. Давайте откроем один из этих примеров программ используя следующий путь File -> Examples -> Basics -> Blink (как показано на рисунке).
При этом откроется программа Blink – ее цель состоит в том чтобы заставить мигать встроенный светодиод на плате Arduino. После открытия программы нам необходимо выбрать правильную плату Arduino – чтобы сделать это выберите пункт меню Tool -> Boards -> Arduino UNO/Genuino как показано на рисунке ниже.
Далее мы должны выбрать правильный порт для нашей платы. Ранее мы увидели, что для нашей платы был определен порт COM13. В вашем случае это может быть другой порт. Но для нашего рассматриваемого случая мы должны выбрать пункт меню Tools -> Port -> COM13.
Если все сделано правильно, то вы должны заметить что номер порта (в нашем случае COM 13) появится внизу экрана. После этого вам необходимо нажать кнопку загрузки программы (подсвечена синим цветом) на плату Arduino как показано на рисунке ниже.
После нажатия этой кнопки вы увидите надпись “Compiling sketch” и затем, если загрузка программы прошла успешно, вы увидите сообщение “Done Uploading” как показано на рисунке ниже.
Если у вас на данном этапе возникают какие либо ошибки, не рассмотренные в данной статье, то вы их можете попробовать найти в статье про 10 самых распространенных ошибок при работе с Arduino либо же посмотреть статью с более полным перечнем ошибок при работе с Arduino и способами их решения.
Теперь попробуем написать программу, которая будет зажигать светодиод при нажатии кнопки.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
- Кабель для программирования.
- Светодиод (любого цвета).
- Кнопка.
- Резистор 1 кОм.
- Макетная плата.
- Соединительные провода.
Схема соединений
Представлена на следующем рисунке.
Кнопку подсоединим ко второму контакту Arduino, то есть одним концом кнопка будет подсоединена ко второму контакту Arduino, а вторым – к земле. То есть всегда когда мы будем нажимать кнопку на второй контакт Arduino будет подаваться земля.
Светодиод подсоединен к контакту 3 через резистор 1 кОм. То есть катод светодиода подсоединен к земле, а анод – к контакту 3 Arduino через резистор.
Программирование Arduino
Теперь, когда необходимая нам схема собрана, мы можем начать программирование платы Arduino UNO. Полный текст программы будет приведен в конце статьи, в этом разделе будет дано объяснение некоторых участков кода этой программы.
В каждой программе для Arduino должны обязательно присутствовать две функции – это функции void setup () и void loop (), иногда их называют "абсолютным минимумом", необходимым для написания программы. Все операции, которые мы запишем внутри void setup (), исполнятся только один раз, а операции, которые мы запишем внутри void loop () – будут исполняться снова и снова. Пример этих функций показан в коде ниже – именно в таком виде они создаются когда вы выбираете пункт меню File -> New.
1 2 3 4 5 6 7 |
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } |
Начнем писать программу в функции setup (). Обычно в этой функции объявляются названия пинов (контактов). В нашей программе нам необходимо объявить всего два контакта: контакт 2 в качестве входного контакта и контакт 3 в качестве выходного контакта. Это можно сделать с помощью следующих строчек кода:
1 2 |
pinMode(2,INPUT); pinMode (3,OUTPUT); |
Но здесь необходимо внести небольшое изменение в программу – нам желательно чтобы контакт 2, который мы объявили в качестве входного контакта, никогда не был бы в "плавающем" состоянии. Это означает что входной контакт должен быть всегда подсоединен либо к +5 В, либо к земле. А в нашем случае при нажатии кнопки он будет подсоединен к земле, а при отжатой кнопке он будет находиться в плавающем состоянии. Чтобы исключить это нам необходимо задействовать внутренний подтягивающий резистор, который находится внутри микроконтроллера ATmega 328 (то есть снаружи мы этот резистор не видим). Для его задействования необходимо написать соответствующую строчку кода в программе.
С помощью этой строчки кода контакт 2 будет подключаться через подтягивающий резистор к напряжению +5 В всегда когда он не подсоединен к земле. То есть мы должны в одной из написанных нами строчек кода изменить слово INPUT на слово INPUT_PULLUP как показано ниже.
1 |
pinMode(2,INPUT_PULLUP); |
Теперь, когда мы закончили с функцией setup (), перейдем к функции loop (). В этой функции мы должны проверять не подсоединен ли контакт 2 к земле (то есть на его входе низкий уровень – LOW) и если он подсоединен в земле, то мы должны зажечь светодиод при помощи подачи на контакт 3 высокого уровня (HIGH). А если контакт 2 не подсоединен к земле (то есть кнопка не нажата), то мы должны держать светодиод в выключенном состоянии при помощи подачи на контакт 3 низкого уровня (LOW). В программе это будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 |
if (digitalRead(2) == LOW) { digitalWrite(3,HIGH); } else { digitalWrite(3,LOW); } |
В этих строчках кода оператор digitalRead() используется для проверки статуса (состояния) входного контакта. Если контакт подсоединен к земле, то оператор digitalRead() возвратит значение LOW, а если оператор подсоединен к +5 В, то оператор возвратит значение HIGH.
Аналогично, оператор digitalWrite() используется для установки состояния выходного контакта. Если мы установим контакт в состояние HIGH, то на его выходе будет напряжение +5 В, а если мы установим контакт в LOW, то на его выходе будет 0 В.
Таким образом в нашей программе когда мы нажимаем кнопку на контакт 2 будет подана земля и, соответственно, на контакт 3 мы подаем высокий уровень +5 В (HIGH) чтобы зажечь светодиод. Если условие не выполняется – то есть на контакт 2 не подана земля, то мы на контакт 3 подаем низкий уровень 0 В (LOW) чтобы выключить светодиод.
На этом наша программа закончена, теперь загрузим код программы на нашу плату Arduino таким же образом как ранее мы загружали код программы мигания светодиодом.
Проверка работы схемы
После того как мы загрузили программу на нашу плату Arduino самое время проверить корректность ее работы. Схема соединений представлена выше. Чтобы проверить корректность работы программы необходимо нажать кнопку и проверить загорится ли при этом светодиод. Затем, когда мы отпустим кнопку (прекратим ее нажимать), светодиод должен погаснуть.
Если программа не работает или у вас есть какие-нибудь вопросы по представленному в этой статье материалу, то вы можете задать их в комментариях к данной статье. Будем надеяться, что ваш первый шаг в освоении Arduino будет все же успешным.
Полный текст программы выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { pinMode(2,INPUT_PULLUP); pinMode (3,OUTPUT); } void loop() { if (digitalRead(2) == LOW) { digitalWrite(3,HIGH); } else { digitalWrite(3,LOW); } } |
Вопрос вдогонку: надо ли устанавливать драйвер для СН340, если распознаётся и отображается в диспетчере устройств?
Нет, не нужно. Если распознается - значит драйвер для нее уже установлен
Добрый день!
Столкнулся со странной проблемой. Приобрёл на Озоне китайскую Ардуино UNO (точнее, стартовый набор). Установил Arduino IDE, подключил плату, всё заработало. Писал простенькие скетчи, загружал, вроде, всё получалось. Вдруг в какой-то момент перестали загружаться скетчи. Выдаётся сообщение "uploading error: exit status 1"
Затем у меня была пауза, дня два ардуинка отдыхала, и когда снова включил - всё заработало штатно. А потом началось опять - ошибка загрузки, и всё тут.
Поменял соединительный кабель, пробовал подключаться к разным USB-портам - ничего не помогает.
Может быть, что-то посоветуете?
Заранее спасибо!
Добрый. Причин может быть несколько, но самая распространенная вот эта:
Сообщение появится, если вы используете в скетче библиотеку, которую еще не установили. Чтобы исправить эту ошибку при загрузке скетча в Ардуино, скачайте библиотеку и распакуйте архив в папку C:\Program Files\Arduino\libraries или в документах …\Documents\Arduino\libraries. Если библиотека уже была установлена, то попробуйте удалить папку библиотеки с компьютера и замените на новую библиотеку.
Полный список причин можете найти если наберете в поисковике - arduino uploading error: exit status 1
Я просто не вижу смысла здесь в комментарии их все переписывать
Большое спасибо за быстрый ответ!
Тут дело было так. Я написал скетч для управления сервоприводом. Ну, то есть, как написал - нашел в инете, и воспроизвёл у себя. Там, действительно, используется библиотека "Servo" ... но она присутствует в папке стандартных библиотек IDE, и, главное, скетч загрузился и заработал. Он и сейчас работает, когда подаётся питание на плату. А проблемы с загрузкой начались когда я стал его модифицировать. И теперь не загружается и простой скетч для светодиода с кнопкой - в нём нет никаких ссылок на библиотеку.
Но за совет большое спасибо! Попробую им воспользоваться.
Понятно. Успехов вам.
Добрый вечер!
Хотел бы поделиться, как на данный момент удалось решить проблему с загрузкой скетчей.
По-видимому, у меня в IDE время от времени сбиваются какие-то настройки. И при загрузке она начинает обращаться не к тому COM-порту, к которому подключена Ардуино. Интересно, что при этом в меню "Интсрументы" отображается правильный COM-порт, но он почему-то неактивен. И если его активировать (нажать на галочку), то всё работает.
Вобщем, всего-то надо было внимательно читать сообщение об ошибке)))
Ещё раз спасибо Вам за полезные и грамотно поданные материалы!
Добрый день. Спасибо и вам за конструктивный комментарий. Надеюсь, он будет полезен другим людям, которые столкнутся с аналогичной проблемой.
Большое спасибо, отличная статья! Для начинающего всё четко разложено по полочкам.
А можно вопрос дремучего чайника? После того, как программа записана на модуль Ардуино - он может работать автономно от компьютера? То есть, можно ли его запитать через USB, например, от зарядки для телефона?
Добрый вечер. Да, можно, но по току может не подойти - его может не хватать для питания платы Ардуино. И есть небольшая опасность в том, что если зарядка не совсем исправна, то напряжение она может выдавать больше чем 5 В. И если стабилизатор напряжения в телефоне с этим справляется (поскольку он там хороший), то у платы Ардуино стабилизатор с этим может не справиться. Лучше бы все таки купить отдельный специализированный блок питания, они сейчас совсем недорого стоят.
Спасибо! Опять-таки всё четко и понятно.
И вам успехов в освоении Ардуино
UNO R3
Понял,спасибо.Для полного счастья ещё бы проверенный скетч для метеостанции. LCD 16x2 i2c, dht11.
Мне 70 лет и я только учусь.Хорощо бы на рабочих примерах с целью экономии времени. Несколько нетовских скетчей не компилируются.Спасибо и извините за отнятое время.
Полностью готовой статьи под ваши пожелания у меня на сайте, к сожалению, нет, но, возможно, вам помогут следующие статьи:
- Подключение датчика температуры и влажности DHT22 к Arduino
- Измерение температуры и влажности с помощью Arduino и датчика DHT11
- Мониторинг температуры и влажности через Интернет с помощью Arduino
- Радиосвязь между Raspberry Pi и Arduino Uno с помощью модулей nRF24L01 (есть подключение LCD 16x2 к Ардуино) по i2c)
схемы соединений для UNO и NANO.Есть схема для NANO,как подключить к UNO? Часы,метеостанция и т.п.Спасибо.
По аналогии, аналоговые контакты NANO заменяете на аналоговые контакты UNO, цифровые контакты NANO заменяете на цифровые контакты UNO.
А у меня просто горит светодиод и все, хоть как верти кнопку
Значит, у вас либо с кнопкой, либо с ее подключением что то не так. Если вы загружаете в плату простую программу мигания светодиодом (без кнопки) он у вас мигает?
если у кого диод горит и не гаснет на схеме кнопка не той стороной воткнута))
Хорошо, спасибо. Ну что поделать, бывают иногда опечатки
Здравствуйте. Получилось, но не сразу. Опечатки пишутся в "ошибках", но незнание слов приводит к затруднениям. Не сразу разобрался в фигурных скобках, каждая должна быть на своём месте и правильно ориентирована. Кнопку пришлось установить по другому, для удобства, не как на вашем рисунке. Действительно всё просто, если всё точно скопируешь. Спасибо. Для начинающих урок полезный. Буду рад, если мой опыт кому то пригодится.
Добрый день. Мы рады что у вас получилось. Спасибо и вам за конструктивный комментарий
Ардуино перевод как модный
В смысле перевод? Я думал Ардуино это уже имя нарицательное
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avr_read(): error reading address 0x0000
read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_recv(): programmer is not responding
выбранный последовательный порт avrdude: failed to read all of flash memory, rc=-2
не существует или плата не подключена к нему
Тамара, в этой статье не рассматривается работа с программой avrdude. Вы к какой то другой статье хотели свой комментарий написать?
Извините, я скачала программу с сайта по-шагово, как у Вас описано, а потом мне выдает вот такую красноту и не могу запустить первую программу для мигания светодиода, что я не так сделала?
Наверное, вы неправильно выбрали COM порт или он у вас не работает по какой то причине (причины могут быть разные, как со стороны компьютера, так и его неисправность в плате Ардуино - хотя это встречается все же достаточно редко). У вас в диспетчере устройств Windows видно к какому COM порту у вас подключена плата Ардуино как показано на скрине в статье? Попробуйте подключить плату Ардуино к другому USB разъему вашего компьютера или к другому компьютеру если это не поможет.
Спасибо, попробую. Меняла USB разъемы и показывало COM порт 3 и 4 и я их выбирала.
Если разберетесь в чем у вас была ошибка просьба отпишитесь здесь - этим вы поможете другим людям, у которых будет возникать данная проблема. Если не получается, то можете спрашивать еще, чем смогу помогу
я все удалила, перезагрузила комп и закачала Arduino IDE 2.0.4, подключила схему с кнопкой, залила программку, светодиод зажегся, но нажимая на кнопку он не выключается, но я горящему светодиоду рада))
От админа: мы рады что у вас это получилось. Надеемся, что в дальнейшем вы добьетесь еще больших успехов в изучении Ардуино ))
Какой язык программирования используется для Arduino?
Он называется Wiring, но во многом это обычный С
добрый. такой вопрос, где вы покупали кнопку светодиод и кабеля ? можете по возможности скинуть ссылочку или название радиодеталей ? заранее спасибо)
Добрый вечер. Покупал на алиэкспрессе, ссылки для покупки там есть, к примеру, в этой статье.
Где узнать про как программировать ардуино для начинающих
Так это как раз и описано в статье, которую вы здесь прочитали
Все, разобрался в чем косяк был))
Добрый день. Может быть напишите тогда в чем ошибка была чтобы другие пользователи, читающие эту статью, не повторяли таких ошибок?
Повернуть кнопку на 90 градусов
Оригинальное решение ))
Подскажите пожалуйста, первый раз с ардуино занялся ,опыта ноль, схему правильно вроде собрал, код переписал как указан, но диод всегда светится, кнопка не срабатывает, в чем ошибка, код дописать надо? то что добавить?
Александр, программа простейшая, в ней ошибок быть не может. Скорее всего у вас что то с кнопкой - попробуйте заменить ее или подключить к другому контакту Arduino (в этом случае необходимо чуть чуть изменить код программы).
Был косяк у меня такой тоже.В последней строке digitalWrite(3,LOW); написал HIGH.
Ну что поделать, при написании программ мы часто допускаем опечатки ))