Скачать программу для работы с arduino uno. Установка и настройка Arduino IDE под Windows

Для написания (редактирования) и загрузки (прошивки) программ (скетчей) в Arduino необходимо установить программу для программирования, как Arduino IDE, или воспользоваться on-line Web-редактором. Скачать (загрузить) программу Arduino IDE последней версии, или воспользоваться web-редактором можно из раздела Software сайта arduino.cc .

Скачивание (загрузка) Arduino IDE с официального сайта:

Зайдите на официальный сайт Arduino и выберите, из предложенного списка, операционную систему на которой работает Ваш компьютер. В данной статье мы рассмотрим установку Arduino IDE на операционную систему Windows. Выбрав первую строку «Windows Installer » Вы установите Arduino IDE (как устанавливаете любые другие программы), а выбрав вторую строку «Windows ZIP file for non admin install » Вы скачаете ZIP-архив с папкой программы, которую сможете запускать без установки (даже если у Вас нет прав администратора Вашего компьютера).

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


Если Вы просто хотите скачать программу, то нажмите на кнопку «JUST DOWNLOAD», если хотите скачать программу и поблагодарить разработчиков, способствуя дальнейшему развитию ПО, то нажмите на кнопку «CONTRIBUTE & DOWNLOAD».

Дождитесь завершения загрузки файла

После завершения загрузки, файл должен находиться в папке: « Этот компьютер > Загрузки » (если Вы не указали иное место для сохранения файла).

Запустите установочный файл

из папки: « Этот компьютер > Загрузки » (у Вас вместо символов X.X.X в названии файла будут цифры версии Arduino IDE).






  • 1 сообщение: ознакомляет Вас с лицензионным соглашением, нажмите на кнопку «I Agree», появится 2 сообщение.
  • 2 сообщение: предлагает Вам выбрать компоненты инсталляции, нажмите на кнопку «Next», появится 3 сообщение.
  • 3 сообщение: предлагает Вам выбрать путь для установки Arduino IDE, нажмите на кнопку «Install», появится 4 сообщение.
  • 4 сообщение: информирует Вас о ходе выполнения установки Arduino IDE, по окончании которой появится 5 сообщение.
  • 5 сообщение: информирует Вас об окончании установки Arduino IDE, нажмите на кнопку «Close».

В процессе установки, над окном 4 сообщения, могут появляться окна Windows запрашивающие у Вас разрешение на установку драйверов:


Разрешайте установку драйверов нажимая на кнопку «Установить», эти драйверы позволят определять и работать с платами Arduino подключёнными по шине USB.

На этом установка Arduino IDE завершена .

На Вашем рабочем столе должна появиться иконка программы:

Запуск Arduino IDE:

При первом запуске программы может появиться сообщение Брандмауэра Windows о блокировке доступа для некоторых сетевых функций Java Arduino IDE:


Разрешите доступ нажав на кнопку «Разрешить доступ». После чего, данное окно появляться не будет.

Откроется окно программы Arduino IDE:


На следующем рисунке указано назначение областей и функциональных кнопок программы:


Теперь можно написать скетч (код) и загрузить (залить/прошить) его в Arduino. Но перед этим, надо подключить плату Arduino к компьютеру и указать программе Arduino IDE, какую именно плату Arduino Вы подключили, и к какому порту...

Подключение платы Arduino:

После того как Вы подключите плату Arduino через USB порт к компьютеру, программе Arduino IDE нужно указать, какую именно плату Arduino Вы подключили. Для этого выберите нужную плату из списка в разделе меню « Инструменты > Плата > Название Вашей платы


Теперь нужно выбрать Com-порт к которому подключена Ваша плата Arduino. Для этого выберите нужный Com-порт из списка доступных Com-портов в разделе меню « Инструменты > Порт > Номер доступного порта », как это показано на следующем рисунке:


Если USB контроллер Вашей платы Arduino реализован на чипе FTDI или ему аналогичных, то в списке доступных Com-портов Вы не увидите название платы Arduino в скобках напротив Com-порта. В нашем случае Вы бы увидели просто «COM1» и «COM7», тогда возникает вопрос, а к какому из этих портов подключена плата Arduino?

Решается данный вопрос очень просто. Отключите плату Arduino от компьютера и откройте меню « Инструменты > Порт ». В списке Com-портов Вы увидите только доступные Com-порты, то есть в нашем случае только «COM1». Теперь подключите плату Arduino к компьютеру и опять откройте меню « Инструменты > Порт ». Теперь Вы увидите что список Com-портов увеличился на один (в нашем случае к «COM1» добавился «COM7»), именно к появившемуся Com-порту и подключена Ваша плата Arduino.

Если при подключении платы Arduino Вы не увидели появление нового Com-порта, значит USB контроллер Вашей платы Arduino реализован на чипах сторонних производителей и для него требуется установить дополнительный драйвер. Как, например, драйвер для чипа CH340G .

Загрузка скетча из программы Arduino IDE в плату Arduino:

После того, как Вы указали тип платы Arduino, выбрали Com-порт и написали свой скетч (код программы), скетч можно загрузить (залить/прошить) в контроллер платы Arduino. Для этого выберите пункт меню « » или нажмите на кнопку в виде круга со стрелкой:


Если Вы написали скетч в новом окне и не сохраняли его в файл, то перед его загрузкой в плату Arduino, программ Arduino IDE предложит Вам его сохранить. Введите название, под которым Вы желаете сохранить скетч в файл и нажмите на кнопку «Сохранить».


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


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

Здравствуйте! Я Аликин Александр Сергеевич, педагог дополнительного образования, веду кружки «Робототехника» и «Радиотехника» в ЦДЮТТ г. Лабинска. Хотел бы немного рассказать об упрощенном способе программирования Arduino с помощью программы «ArduBloсk».

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

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

Даже всеми известные роботы LEGO, такие как NXT или EV3 нашим ученикам уже не так интересны с появлением в программировании Arduino программы ArduBloсk. Еще Arduino намного дешевле любых конструкторов LEGO и многие компоненты можно просто взять от старой бытовой электронной техники. Программа ArduBloсk поможет в работе не только начинающим, но и активным пользователям платформы Arduino.

Итак, что же такое ArduBloсk? Как я уже говорил, это графическая среда программирования. Практически полностью переведена на русский язык. Но в ArduBloсk изюминка не только это, но и то, что написанную нами программу ArduBloсk конвертирует в код Arduino IDE. Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин.

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

В результате работы на программе можно не только программировать Arduino, но и изучать непонятные нам команды в текстовом формате Arduino IDE, ну а если же «лень» писать стандартные команды - стоит быстрыми манипуляциями мышкой набросать простенькую программку в ArduBlok, а в Arduino IDE её отладить.

Чтобы установить ArduBlok, необходимо для начала загрузить и установить Arduino IDE с официального сайта Arduino и разобраться с настройками при работе с платой Arduino UNO. Как это сделать описано на том же сайте или же на Амперке , либо посмотреть на просторах YouTube. Ну, а когда со всем этим разобрались, необходимо скачать ArduBlok с официального сайта, вот . Последние версии скачивать не рекомендую, для начинающих они очень сложны, а вот версия от 2013-07-12 - самое то, этот файл там самый популярный.

Затем, скачанный файл переименовываем в ardublock-all и в папке «документы». Создаем следующие папки: Arduino > tools > ArduBlockTool > tool и в последнею кидаем скачанный и переименованный файл. ArduBlok работает на всех операционных системах, даже на Linux, проверял сам лично на XP, Win7, Win8, все примеры для Win7. Установка программы для всех систем одинакова.

Ну, а если проще, я приготовил на Mail-диске 7z архив , распаковав который найдете 2 папки. В одной уже рабочая программа Arduino IDE, а в другой папке содержимое необходимо отправить в папку документы.

Для того, чтобы работать в ArduBlok, необходимо запустить Arduino IDE. После чего заходим во вкладку Инструменты и там находим пункт ArduBlok, нажимаем на него - и вот она, цель наша.

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

В разделе «Управление» мы найдем разнообразные циклы.

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

В разделе «Числа/Константы» мы можем с вами выбрать цифровые значения или создать переменную, а вот то что ниже вряд ли будите использовать.

В разделе «Операторы» мы с вами найдем все необходимые операторы сравнения и вычисления.

В разделе «Утилиты» в основном используются значки со временем.

«TinkerKit Bloks»- это раздел для приобретенных датчиков комплекта TinkerKit. Такого комплекта у нас, конечно же, нет, но это не значит, что для других наборов значки не подойдут, даже наоборот - ребятам очень удобно использовать такие значки, как включения светодиода или кнопка. Эти знаки используются практически во всех программах. Но у них есть особенность - при их выборе стоят неверные значки обозначающие порты, поэтому их необходимо удалить и подставить значок из раздела «числа/константы» самый верхний в списке.

«DF Robot» - этот раздел используется при наличии указанных в нем датчиков, они иногда встречаются. И наш сегодняшний пример - не исключение, мы имеем «Регулируемый ИК выключатель» и «Датчик линии». «Датчик линии» отличается от того, что на картинке, так как он от фирмы Амперка. Действия их идентичны, но датчик от Амперки намного лучше, так как в нем имеется регулятор чувствительности.

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

И последний раздел это «Linker Kit». Датчики, представленные в нем, мне не попадались.

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

Вот сам набор деталей все было приобретено на сайте Амперка .

  1. AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
  2. AMP-B017 Troyka Shield 1 690 руб
  3. AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
  4. AMP-B018 Датчик линии цифровой 2 580 руб
  5. ROB0049 Двухколёсная платформа miniQ 1 1890 руб
  6. SEN0019 Инфракрасный датчик препятствий 1 390 руб
  7. FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
  8. A000066 Arduino Uno 1 1150 руб

Для начала соберем колесную платформу и припаяем к двигателям провода.

Затем установим стойки, для крепления платы Arduino UNO, которые были взяты от старой материнской платы ну или иные подобные крепления.

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

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

Теперь устанавливаем цифровые датчики линии, тут придется поискать пару болтиков и 4 гайки к ним Две гайки устанавливаем между самой платформой и датчиком линии, а остальными фиксируем датчики.

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

Сверху Motor Shield устанавливаем Troyka Shield. Он необходим для удобства соединения датчиков. Все используемые нами сенсоры цифровые, поэтому датчики линии подключены к 8 и 9 порту, как их еще называют пины, а инфракрасный датчик препятствий подключен к 12 порту. Обязательно обратите внимание, что нельзя использовать порты 4, 5, 6, 7 так как оны используются Motor Shield для управлением двигателями. Я эти порты даже специально закрасил красным маркером, чтобы ученики разобрались.

Если вы уже обратили внимание, мной была добавлена черная втулка, это на всякий случай, чтобы установленный нами батарейный отсек не вылетел. И наконец, всю конструкцию мы фиксируем обычной резинкой.

Подключения батарейного отсека может быть 2-х видов. Первый подключение проводов к Troyka Shield. Также возможно подпаять штекер питания и подключать уже к самой плате Arduino UNO.

Вот наш робот готов. Перед тем как начать программировать, надо будет изучить, как все работает, а именно:
- Моторы:
Порт 4 и 5 используются для управления одним мотором, а 6 и 7 другим;
Скоростью вращения двигателей мы регулируя ШИМом на портах 5 и 6;
Вперед или назад, подавая сигналы на порты 4 и 7.
- Датчики:
У нас все цифровые, поэтому дают логические сигналы в виде 1 либо 0;
А что бы их отрегулировать, в них предусмотрены специальные регуляторы а при помощи подходящей отвертки их можно откалибровать.

Подробности можно узнать на Амперке . Почему тут? Потому что там очень много информации по работе с Arduino.

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

И программа конвертированная в Arduino IDE:

Void setup() { pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { if (digitalRead(12)) { if (digitalRead(8)) { if (digitalRead(9)) { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 50); digitalWrite(7 , LOW); } } else { if (digitalRead(9)) { digitalWrite(4 , LOW); analogWrite(5, 50); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } } } else { digitalWrite(4 , HIGH); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7 , HIGH); } }

В заключении хочу сказать, эта программа просто находка для образования, даже для самообучения она поможет изучить команды Arduino IDE. Самая главная изюминка - это то, что более 50 значков установки, она начинает «глючить». Да, действительно, это изюминка, так как постоянное программирование только на ArduBlok не обучит вас программированию в Arduino IDE. Так называемый «глюк» дает возможность задумываться и стараться запоминать команды для точной отладки программ.

Желаю успехов.

IDE (от англ. Integrated Development Environment — интегрированная среда разработки) — это приложение или группа приложений (среда), предназначенных для создания, настройки, тестирования и обслуживания программного обеспечения.

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

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

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

После запуска программы вы можете найти четыре главных функциональных элемента:

  1. меню программы;
  2. панель быстрого доступа к наиболее важным функциям;
  3. редактор (для размещения кода программы);
  4. панель сообщений и статуса программы.

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

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

Меню «Файл» и «Правка» содержат стандартные параметры.

Меню «Скетч» содержит параметры для компиляции проекта и импорта необходимых библиотек.

Интересным и полезным элементом IDE является меню «Инструменты», которое включает в себя функции автоматического форматирования кода, архивирования проекта, включение монитора последовательного порта (USB в Arduino рассматривается как обычный последовательный порт).

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

В меню «Инструменты» вы также можете установить порт, к которому подключена плата Arduino. Пакет Arduino IDE сам определяет порт, но иногда требуется вручную установить номер порта в настройках.

С помощью Arduino IDE можно также загрузить, то есть запрограммировать Bootloader (загрузчик) для нового, чистого микроконтроллера Atmega, что позволяет клонировать чипы или просто заменить неисправный микроконтроллера в Arduino.

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

Они позволяют (слева направо):

  1. скомпилировать программу;
  2. загрузить программу в микроконтроллер (перед прошивкой код программы компилируется);
  3. начать работу над новым проектом;
  4. открыть существующий проект;
  5. сохранить проект на диск;
  6. включить монитор последовательного порта.

Все опции, расположенные на панели быстрого доступа, продублированы в меню программы.

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

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

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

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

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

Одним из примеров является Arduino Due , которая использует ARM/SAM микроконтроллеры. Для того была возможность, используя Arduino IDE , программировать Arduino Due , необходимо установить SAM-я дро с помощью Boards Manager .

В этом примере мы установим ядро, необходимое для платы Arduino Due .

Выбираем меню Инструменты → Плата → Boards Manager

Откроется окно Менеджера плат, в котором вы увидите список установленных и доступных плат. Выберем ядро SAM , требуемую версию (как и в случае с может быть доступна лишь одна версия, поэтому выпадающего списка с перечнем доступных версий может и не быть) и жмем Install .

По завершению процесса установки (который может занять достаточно продолжительное время) статус ядра SAM станет INSTALLED . Теперь плата Arduino Due станет доступна в меню Инструменты → Плата.

Ручная установка плат

Также имеется возможность добавления плат в ручном режиме. Этот метод работает на и на . Для версии IDE 1.6.2 метод не работоспособен (баг исправлен в релизе 1.6.3). Насчет версий ранее 1.6.1 ничего сказать не могу.

Расскажу на примере плат компании Adafruit .

Сначала скачиваем файлы описания для плат с GitHub -репозитория Adafruit или по ссылке ниже (на GitHub , возможно, будет более свежая версия этого архива).

Category: Programs
Date: 06.04.2015

Если вы скачали архив с Github , то распакуйте архив и переменуйте получившуюся папку из Adafruit_Arduino_Boards-master в Adafruit_Arduino_Boards .

Внутри этой папки вы обнаружите две подпапки:

  • hardware , также содержащую подпапки adafruit и tools
  • drivers , в которой находятся драйвера Flora для Windows

В Mac OS папка скрыта внутри пакета приложения. Для того, чтобы найти ее делаем правый клик на приложении Arduino IDE и выбираем Показать содержимое пакета

Переходим внутри по вложенным подпапкам Contents → Java и находим там папку hardware .

Теперь нужно внимательно объединить содержимое папки hardware c аналогичной папкой из скаченного нами ранее и распакованного архива с описанием плат с сайта Adafruit . Нужно удостовериться в том, что вы переписали конфликтующие файлы (в данном случае avrdude.conf ). После всех операций папка hardware приложения Arduino IDE будет иметь следующую структуру:

Если вы работаете в Windows , то вам необходимо будет переписать еще и папку drivers .

Если все сделано правильно, то новые платы появятся в меню Инструменты → Плата в Arduino IDE .

Платы на базе микроконтроллеров ATTiny

Один из моих читателей — Павел Пащенко любезно поделился файлами описаний к микроконтроллерам серии ATTiny. Cпасибо, Павел!

Category: Programs
Date: 08.04.2015

Установка аналогична описанной выше.

Получившийся у Павла результат в Windows :

Платы на базе микроконтроллера Atmega8

Для микроконтроллеров Atmega8 с внешним кварцем на 8 МГц и без загрузчика, в файл boards.txt необходимо добавить следующие строки:

############################################################## atmega8.name=ATmega8 (no bootloader 8MHz ext) atmega8.upload.protocol=arduino atmega8.upload.tool=usbasp atmega8.upload.maximum_size=7680 atmega8.upload.speed=115200 atmega8.bootloader.low_fuses=0xFF atmega8.bootloader.high_fuses=0xD9 atmega8.bootloader.unlock_bits=0x3F atmega8.bootloader.lock_bits=0x0F atmega8.build.mcu=atmega8 atmega8.build.f_cpu=8000000L atmega8.build.core=arduino atmega8.build.variant=standard

##############################################################

atmega8 . name = ATmega8 (no bootloader 8MHz ext )

atmega8 . upload . protocol = arduino

atmega8 . upload . tool = usbasp

atmega8 . upload . maximum_size = 7680

atmega8 . upload . speed = 115200

atmega8 . bootloader . low_fuses = 0xFF

atmega8 . bootloader . high_fuses = 0xD9

atmega8 . bootloader . unlock_bits = 0x3F

atmega8 . bootloader . lock_bits = 0x0F

atmega8 . build . mcu = atmega8

atmega8 . build . f_cpu = 8000000L

Этот симулятор лучше всего работает в браузере 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);
полный код скетча во вложении (скачиваний: 1240)

Регулировка яркости светодиодов

Иногда вам надо будет менять яркость светодиодов в программе. Это можно сделать с помощью команды 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.
В прикрепленном файле скетч, который продемонстрирует плавные переходы цветов от красного к зеленому, затем к синему, красному, зеленому и т.д. (скачиваний: 343)
Пример скетча работает, но есть много повторяющегося кода. Можно упростить код, написав собственную вспомогательную функцию, которая будет плавно менять один цвет на другой.
Вот как она будет выглядеть: (скачиваний: 382)
Давайте рассмотрим определение функции по частям. Функция называется 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 . В архиве полный скетч с использованием функций (скачиваний: 286)

Кнопка

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


Это значит, что пока кнопка не нажата, ток через неё не идёт, а после отпускания, кнопка возвращается в исходное положение.
В схеме, помимо кнопки используется резистор. В данном случае он не ограничивает ток, а "подтягивает" кнопку к 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"); } }