Программирование arduino для начинающих. Arduino для начинающих - стартовый набор или как начать ардуинить? Много фото и видео

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

Arduino - это одноплатный контроллер с открытыми исходными кодами, который можно использовать в множестве различных приложений. Это возможно самый простой и самый дешевый вариант из микроконтроллеров для любителей, студентов и профессионалов для разработки проектов на основе микроконтроллеров. Платы Arduino используют либо микроконтроллер Atmel AVR, либо микроконтроллер Atmel ARM, и в некоторых версия имеет интерфейс USB. Они также имеют шесть или более выводов аналоговых входов и четырнадцать или более выводов цифровых входов/выходов (I/O), которые используются для подключения к микроконтроллеру датчиков, приводов и других периферийных схем. Цена на платы Arduino в зависимости от набора функций составляет от шести до сорока долларов.

Типы плат Arduino

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

  • Arduino Robot
  • Arduino Ethernet

На разнообразие плат Arduino и их технические описания можно посмотреть в подразделе « » раздела «Купить » данного сайта.

Программное обеспечение (IDE)

Программное обеспечение, используемое для программирования Arduino, представляет собой интегрированную среду разработки Arduino IDE. IDE представляет собой Java приложение, которое работает на множестве различных платформ, включая системы PC, Mac и Linux. Она разработана для начинающих, которые не знакомы с программированием. Она включает в себя редактор, компилятор и загрузчик. Также в IDE включены библиотеки кода для использования периферии, например, последовательных портов и различных типов дисплеев. Программы для Arduino называются «скетчами», и они написаны на языке, очень похожем на C или C++.

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

USB кабель для Arduino

Программирование

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

Программа для Arduino включает в себя две основные функции:

  • setup()
  • loop()

Вы можете использовать функцию setup() для инициализации настроек платы. Эта функция выполняется только один раз, при включении платы.

Функция loop() выполняется после завершения функции setup() , и в отличие от функции setup() она работает постоянно.

Функции программ

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

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

Библиотеки Arduino

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

  • EEPROM - чтение и запись в «постоянно» хранилище;
  • Ethernet - для подключения к интернету, используя плату Arduino Ethernet Shield;
  • Firmata - для связи с приложениями на компьютере, используя стандартный последовательный протокол;
  • GSM - для подключения к сети GSM/GRPS с помощью платы GSM;
  • LiquidCrystal - для управления жидкокристаллическими дисплеями (LCD);
  • SD - для чтения и записи SD карт;
  • Servo - для управления сервоприводами;
  • SPI - для связи с устройствами, используя шину SPI;
  • SoftwareSerial - для последовательной связи через любые цифровые выводы;
  • Stepper - для управления шаговыми двигателями;
  • TFT - для отрисовки текста, изображений и фигур Arduino TFT экранах;
  • WiFi - для подключения к интернету, используя плату Arduino WiFi shield;
  • Wire - двухпроводный интерфейс (TWI/I2C) для передачи и приема данных через сеть устройств или датчиков.

Этапы настройки Arduino


Внимание: возможно, вам понадобится установить драйвера, если ваша система не обнаружит Arduino.

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

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

Что такое Arduino и для чего оно нужно?

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

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

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

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

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

Версия Windows Mac OS X Linux
1.8.2

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

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

// переменные с пинами подключенных устройств 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); }

// переменные с пинами подключенных устройств

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 для подавления дребезга контактов. О дребезге контактов есть на моем сайте. Обязательно ознакомьтесь с этим материалом.

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в

Для использования ШИМ в Arduino есть функция Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

// Светодиод подключен к 11 пину int ledPin = 11; void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i > 0; i--) { analogWrite(ledPin, i); delay(5); } }

// Светодиод подключен к 11 пину

int ledPin = 11 ;

void setup () {

pinMode (ledPin , OUTPUT ) ;

void loop () {

for (int i = 0 ; i < 255 ; i ++ ) {

analogWrite (ledPin , i ) ;

delay (5 ) ;

delay (1000 ) ;

for (int i = 255 ; i > 0 ; i -- ) {

12 02.2017

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

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

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

Ардуино — что же ты такое?

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

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

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

Для кого это?

Кому нужен Ардуино?

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

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

Первое знакомство. Настраиваем компьютер

Перед тем как озаботиться вопросом подключения устройства к ПК, стоит изучить вопрос о том, какой лучше купить Ардуино, ведь версий этого конструктора для гиков существует много. Самая популярная и при этом , которая стоит порядка 25-30$. Впрочем, есть и более дорогие, продвинутые версии, способные взаимодействовать со смартфонами на базе Android, устройствами на Linux, с увеличенным числом портов, более мощным “железом”, которые больше подойдут для уже искушенных в этом вопросе пользователей. Нам же с вами больше подойдет вариант Uno или схожий с ним (например, Leonardo). Пусть вас не пугают 32 килобайта памяти и процессор с частотой всего 16 мегагерц – этого с лихвой хватит для первых изысканий!

Чтобы запрограммировать платформу и видеть на дисплее все заданные действия, используется один из самых распространенных языков программирования – C++. Работа с ним осуществляется с помощью официальной оболочки Arduino IDE, она абсолютно бесплатна для использования в некоммерческих целях. Имеются и другие варианты, более сложные и изощренные, но начать лучше с рекомендованного разработчиком варианта.

Подключение и загрузка в память программ выполняется через USB-порт. Подсоединение же модулей может выполняться множеством способов – в их числе применение особой макетной доски, перемычек, проводов… Паяльник при этом использовать совсем не обязательно. Подсоединять можно почти что угодно – любой гаджет может стать полноценной частью вашей конструкции! При этом вы также можете создавать многослойные “бутерброды” из так называемых – дополнительных плат, расширяющих возможности основной микросхемы. Главное – это базовый процесс в сердце самого Uno, остальное же лишь служит для получения дополнительных возможностей. Например, это может быть подключение к Интернету или управление мощным мотором.

Используем IDE

Написанные для платформы Ардуино называются скетчами. Создать скетч можно при помощи интегрированной среды разработки, коротко – IDE (официальная версия так и называется, ). Установив драйвера и эту среду, вы можете сделать свой первый шаг.

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

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

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

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

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

Arduino с чего начать новичку

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


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

Итак, переходим к первому уроку Arduino схемы начинающих электронщиков.

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


Загрузив код, Ардуино позволяет нашей программе поучаствовать в инициализации системы. Для этого мы указываем микроконтроллеру команды, которые он выполнит в момент первоначальной загрузки и далее напрочь забудет об них (т.е. эти команды выполнятся Ардуинкой только один раз при старте). И именно с этой целью в нашем коде мы выделяем блок, в котором храняться эти команды. void setup() , а точнее в том пространстве внутри фигурных скобок этой функции, смотри программный скейтч.

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

Код скачать:
Скейтч с комментариями и пояснениями в файле 001-1_mig-led.ino

Функция void loop() это то место, куда мы помещаем команды, которые будут выполняться все то время, пока включена плата Arduino. Начав выполнение с первой команды, Ардуинка дойдет до самого конца и сразу же перейдет в начало, чтобы повторить ту же самую последовательность. И так бесконечное число раз, до тех пор, пока на плату поступает питание. По своей сути, void loop – это главная функция, точка входа в Arduino.


Функция delay (1000) задерживает обработку программы на 1000 милисекунд. Все это идет в вечном цикле loop() .

Главный вывод после восприятия нашей первой програмки на Ардуино: С помощью функций void loop и void setup мы передаем микроконтроллеру наши инструкции. Все то, что находится внутри блока setup выполнится всего один раз. Содержимое модуля loop будет повторятся в цикле до тех пор, пока останется включенным Arduino.

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

Вместо установки значения в HIGH, а затем в LOW, мы получим значение ledPin и проинвертируем его. Допустим если оно было HIGH, то станет LOW и т.п.

Второй вариант кода Ардуино для управления светодиодом здесь:

Затем можно заменить функцию delay() . Вместо нее, лучше использовать функцию millis() . Она возвращает количество миллисекунд, прошедшее с момента старта программы. Функция переполнится приблизительно через 50 суток работы программного кода.

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

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

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

Начало этой программы такое же как и у любого другого стандартного скетча Arduino.


В данном примере используется два цифровых ввода-вывода Arduino. Светодиод подсоединяется к 8 пину, который сконфигурирован как OUTPUT. К 9 через подключена кнопка, которая настроена как INPUT. Когда нажимаем на кнопку пин 9 устанавливается в HIGH, и программа переключает вывод 8 в HIGH, тем самым включая светодиод. Отпускание кнопки сбрасывает девятый вывод в состояние LOW. Затем код переключает вывод 8 в LOW, отключая световой индикатор.

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

Arduino UNO обладает тремя портами: B (цифровые входа/выхода с 8 по 13); C (аналоговые входа); D (цифровые входа/выхода с 0 по 7)

Каждый порт осуществляет управление тремя регистрами. Первый DDR задает чем будет являться pin входом или выходом. При помощи второго регистра PORT можно задать pin в состояние HIGH или LOW. При помощи третьего можно считать информацию о состояние ножек Arduino, в случае если они работает на вход.

Для работы схемы задействуем порт B. Для этого установим все ножки порта как цифровые выхода. У порта B всего 6 ножек. Биты регистра DDRB должны быть заданы в "1" , если пин будет использоваться как выход (OUTPUT), и в "0" , если пин планируем применять как вход (INPUT). Биты портов нумеруются с 0 по 7, но не всегда имеют все 8 пинов

Допустим: DDRB = B00111110; // установить ножки порта В с 1 по 5 как выхода, а 0 как вход.

В нашем схеме бегущих огней мы задействуем пять выходов: DDRB = B00011111 ; // установить пины порта В с 0 по 4 как выходы.

Для записи данных в порт В нужно задействовать регистр PORTB. Зажечь первый светодиод можно с помощью управляющей команды: PORTB = B00000001; , первый и четвертый LED: PORTB = B00001001 и т.п

Существует два оператора двоичного сдвига: влево и вправо. Оператор сдвига влево заставляет все биты данных переместиться влево, соответственно оператор сдвига вправо, перемещает их вправо.

Пример:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

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

Конструктивно такой светодиод имеет один общий вывод и три вывода для каждого цвета. Ниже показана схема подключения RGB-светодиода к плате Arduino с общим катодом. Все резисторы используемые в схеме для подключения должны быть одного номинала от 220-270 Ом.


Для подключения с общим катодом схема подключения трехцветного led будет почти аналогична, за исключением того, что общий вывод будет подключен не к земле (gnd на устройстве), а к выводу +5 вольт. Выводы Красный, зеленый и синий в обоих случаях подключаются к цифровым выходам контроллера 9, 10 и 11.

К девятому пину Arduino UNO подключим внешний светодиод через сопротивление 220 Ом. Для плавного управления яркостью последнего применим функцию analogWrite() . Она обеспечивает вывод ШИМ-сигнала на ножку контроллера. Причем команду pinMode() вызывать не требуется. Т.к analogWrite(pin,value) включает два параметра: pin - номер ножки для вывода, value - значение от 0 до 255.

Код:
/*
Учебный пример начинающего ардуинщика, раскрывает возможности команды analogWrite() для реализации Fade-эффекта светодиода
*/
int brightness = 0; // яркость LED
int fadeAmount = 5; // шаг изменения яркости
unsigned long currentTime;
unsigned long loopTime;

Void setup() {
pinMode(9, OUTPUT); // устанавливаем 9 пин как выход
currentTime = millis();
loopTime = currentTime;
}

Void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 20)){
analogWrite(9, brightness); // устанавливаем значение на 9 выводе

Brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости, которая установится в следующем цикле

// если достигли мин. или макс. значения, то идем в обратную сторону (реверс):
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
loopTime = currentTime;
}
}

Работа Arduino с энкодером

Энкодером предназначен для преобразования угла поворота в электрический сигнал. С него мы получаем два сигнала (А и В), которые противоположны по фазе. В этом учебном примере мы будем применять энкодер SparkFun COM-09117, имеющий двенадцать положений на один оборот (каждое положение ровно 30°). На приведенном ниже рисунке хорошо видно, как зависят выход А и В друг от друга при движении энкодера по часовой или против часовой стрелки.

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

При необходимости можно при помощи расчета частоты, определить насколько быстро происходит вращение энкодера.

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

Учитывая тот факт, что в самом быстром случае, мы можем повернуть ручку энкодера на 180° за 1/10 секунды, то это будет 6 импульсов за 1/10 секунды или 60 импульсов в одну секунду.

В реальности быстрее вращать не возможно. Так как нам необходимо отслеживать все полупериоды, то частота должна быть около 120 Герц. Для полной уверенности, возьмем 200 Гц.

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


По сигналам программного таймера необходимо постоянно осуществлять сравнение текущего значения выхода А энкодера с предыдущим значением. Если состояние меняется от положительного к нулю, то мы опрашиваем состояние выхода В. В зависимости от результата опроса состояния мы увеличиваем или снижаем счетчик значения яркости LED светодиода. Код программы с временным интервалом около 5 мс (200 Гц), представлен ниже:

Код начинающего ардуинщика:
/*
** Энкодер
** Для управлением яркостью светодиода применяется энкодер фирмы Sparkfun
*/

Int brightness = 120; // яркость светодиода, начинаем с половины
int fadeAmount = 10; // шаг изменения яркости
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() {
// declare pin 9 to be an output:
pinMode(9, OUTPUT); // устанавливаем 9 вывод как выход
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 5)){ // проверяем состояния каждые 5мс (частота 200 Гц)
encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_B); // выхода В энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние меняется с положительного к нулевому
if(encoder_B) {
// выход В в положительном состояние, значит вращение осуществляется по часовой стрелке
// увеличиваем яркость свечения, не более чем до 255
if(brightness + fadeAmount }
else {
// выход В в нулевом состояние, значит вращение идет против часовой стрелки
// снижаем яркость, но не ниже нуля
if(brightness - fadeAmount >= 0) brightness -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // сохраняем значение А для последующего цикла

AnalogWrite(9, brightness); // устанавливаем яркость на девятый пин

LoopTime = currentTime;
}
}

В этом примере для начинающих мы рассмотрим работу с пьезоизлучателем для генерирования звуков. Для этого возьмем пьезодатчик позволяющий генерировать звуковые волны в диапазоне частот 20 Гц - 20 кГц.

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

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


Программа для управления проста и наглядна. Начинается она с подключения файла, содержащего все необходимые команды для управления сервоприводом. Далее, мы создаем объект servo, например servoMain. Следующая функция setup(), в которой мы прописываем, что сервопривод подсоединен к девятому выводу контроллера.

Код:
/*
Arduino Servo
*/
#include
Servo servoMain; // Обьект Servo

Void setup()
{
servoMain.attach(9); // Servo подключен к девятому выводу
}

Void loop()
{
servoMain.write(45); // Повернуть сервопривод влево на 45 °
delay(2000); // Ожидание 2000 милисекунд (2 секунды)
servoMain.write(0); // Повернуть серво влево на 0 °
delay(1000); // Пауза 1 с.

delay(1500); // Ожидание 1.5 с.
servoMain.write(135); // Повернуть серво вправо на 135 °
delay(3000); // Пауза 3 с.
servoMain.write(180); // Повернуть серво вправо на 180 °
delay(1000); // Ожидание 1 с.
servoMain.write(90); // Повернуть серво на 90 °. Центральная позиция
delay(5000); // Пауза 5 с.
}

В главной функции loop() , мы задаем команды для серводвигателя, выдерживая паузы между ними.

Схема Arduino счетчика на 7-сегментном индикаторе

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

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


Справа показана таблица соответствия выводов Arduino и выводов светодиодного индикатора.

Код этого проекта:

byte numbers = {
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() {
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;
void loop() {
if(go_by_switch) {
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) {

}
last_input_value = switch_input_value;
} else {
delay(500);
counter = (counter + 1) % 10;
}
writeNumber(counter);
}

Void writeNumber(int number) {
if(number 9) {
return;
}
byte mask = numbers;
byte currentPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

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