Arduino – это карманный компьютер (его также называют «Микроконтроллер» microcontroller), который вы можете программировать и использовать для контроля над электрическими схемами. Он взаимодействует с внешним миром через сенсоры, светодиоды, моторчики (сервоприводы), динамики, и даже через интернет, что делает его гибкой платформой для множества креативных проектов. К наиболее популярным способам применения можно отнести:

-  программируемое световое табло, которое реагирует на музыку или голос человека

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

- уникальные, управляемые контроллеры и интерфейсы для музыки, игр и т.д.

- подсоединения внешних объектов к интернету (особенно популярно для Twitter)

- что-либо интерактивное

- автоматизация и создание прототипов 

Существует множество замечательных проектов с Arduino (ArduinoProjects), опубликованных в сети, представляю здесь некоторые из моих любимых:

Проект «Светильник настроения» TwitterMoodLight , созданный RandomMatrix, - это светильник, который меняет свой цвет в зависимости от того, какую эмоциональную окраску носят слова, опубликованные в Twitter.

Проект Nebulophone Synth от Bleep Labs:

Проект «Поющий цветок» (Singing Plant) от Mads Hobye:

Проект «Машина для рисования «Поларграф» Polargraph Drawing Machine от Sandy Noble:

Проект «Фонарь из тыквы, извергающий пламя» (Flame-Throwing Jack-O-Lantern) от Randy Sarafan и Noah Weinstein:

Проект «Чувствительный светящийся зонт» Rain-sensitive light up umbrella - от snl017

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

Подробнее ознакомиться можете здесь (Women's_Audio Mission). Я буду размещать инструкции по более сложным аспектам Arduino (more advanced Arduino topics) и о построении управляемых MIDI контроллеров с помощью Arduino (building customizable MIDI controllers with Arduino) в ближайшие несколько недель в соответствии с моими лекциями. Больше информации о Arduino вы можете найти по ссылке Arduino reference page.

Для этого занятия вам потребуются:

(1x) Arduino Uno
(1x)USB кабель
(1x) Макетная плата (продается вместе с соединителями / перемычками) 
(1x) Перемычки
(4x) Красные светодиоды 
(4x) Резисторы на 220 Ом 
(1x) Резисторы на 10 кОм 
(1x) Кнопка 
(1x) Потенциометр на 10 кОм 
(1x) Трехцветный RGB светодиод (с общим катодом) 

В этой инструкции я буду использовать он-лайн сервис «123Dcircuits» (123Dcircuits) для демонстрации и симуляции работы электрических схем. Для работы с симулятором лучше всего подойдет браузер Chrome -Chrome browser.

ШАГ 1: ЧТО ТАКОЕ ARDUINO

Для начала давайте взглянем на все элементы платы Arduino. Arduino - это крошечный компьютер, который может быть подсоединен к электрическим цепям и схемам. Arduino Uno работает на чипе Atmega 328P – это самый большой чип на плате (см. картинку выше). Этот чип способен исполнять программы, записанные в его (очень ограниченной) памяти.
Мы можем загружать программы в память чипа по USB интерфейсу, используя программу Arduino IDE (скачайте ее, если вы еще не сделали этого ранее). USB-порт также служит источником питания для платы Arduino. В качестве альтернативы можно использовать специальный разъем питания, в этом случае нет необходимости в USB - соединении.
Adruino имеет несколько шин с пинами для подсоединения проводов / перемычек. Пины питания промаркированы, как показано не картинке выше. Arduino может работать с напряжением как в 3,3 В, так и в 5 В. На этом занятии мы будем использовать в работе 5 В, однако вы можете найти некоторые чипы и компоненты, которые работают только с 3,3 В, в этом случае необходимо использовать источник 3,3 В. На плате Arduino вы также найдете пины с маркировкой «GND» - это «земля» (то же, что 0 В). Электрический ток всегда течет от положительных контактов к «земле», поэтому эти пины (GND) полезно использовать для замыкания некоторых электрических цепей, мы будем часто их использовать.
На плате Arduino имеются 14 цифровых пинов, промаркированных 0 -14, которые подсоединяются к цепям для их включения и отключения. Они также используются для отслеживания нажатия кнопок и других цепей, имеющих 2 состояния (кнопка имеет 2 состояния – нажата / не нажата, в отличие от диска набора номера, который может иметь несколько возможных состояний). Эти пины при необходимости могут служить и входами, и выходами, чтобы контролировать цепи или проверять их текущее состояние.

Рядом с пинами питания расположены пины аналоговых входов, маркированные A0-A5. Эти пины используются для работы с сенсорами (аналоговые измерения) или для других компонентов. Аналоговые входы особенно удобно использовать для считывания показателей, имеющих ряд возможных значений. Например, аналоговый вход позволит нам считать количество изгибов от гибкого сенсора или количество поворотов диска набора номера. Можно использовать аналоговый вход для считывания с цифрового компонента (например, кнопки) или  использовать как цифровой выход, т.к. фактически это цифровые пины с дополнительными возможностями.

ШАГ 2: КАК ИСПОЛЬЗОВАТЬ МАКЕТНУЮ ПЛАТУ

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

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

Вот как работают соединения:

С каждой стороны макетной платы имеется по два ряда отверстий, соединенных между собой (каждый ряд в отдельности) по всей длине платы (см. рис. 1 и 2 выше). Как правило, вы будете соединять эти длинные «рельсы» с 0 В (к «земле») и к источнику питания (в нашем случае мы будем использовать 5 В на плате Arduino), и эти соединения будут доступны из любого места на плате. Первое, что вам захочется сделать, это замкнуть эти соединения на плату Arduino, как показано на рис. 4. Обратите внимание, как я подсоединил землю к ряду отверстий, промаркированному знаком «-», и 5В к ряду отверстий со знаком «+». Ваша макетная плата может не иметь такой маркировки. Замечание: иногда эти длинные шины (+ и -) протягиваются вдоль длинной стороны макетной платы и не соединяются с аналогичными шинами на другой его стороне. Для такого соединения используйте перемычки, как показано на рисунке 5.

Остальные отверстия на макетной плате сгруппированы в ряды из пяти отверстий в центральной части платы. (рис. 3). В этом месте вы будете соединять электрические компоненты вместе в единую цепь.

ШАГ 3: ВКЛЮЧЕНИЕ СВЕТОДИОДА 5В

 

Как я уже упоминал ранее, электрический ток течет от более высокого потенциала к более низкому. На нашем занятии все компоненты будут питаться электрическим током с напряжением 5 В, который будет течь через всю цепь от выхода 5 В к пину «GND» на плате Arduino. Первое, что мы подключим, будет светодиод (LED).

Цепь, которая заставляет светодиод загораться, включает в себя два компонента: резистор и светодиод.

Зачем нам нужен резистор в этой цепи? Резистор ограничивает количество электричества, которое протекает через светодиод. Каждый светодиод рассчитан на работу с определенной силой тока, и если её превысить, то можно повредить его. С помощью закона Ома мы можем рассчитать, какой резистор нам необходимо использовать с нашим светодиодом. 

Закон Ома очень прост, он говорит о линейной зависимости между силой тока и напряжением в проводнике (резисторе): увеличивая напряжение на проводнике (резисторе), увеличивается сила тока, текущего в нем. Формула следующая:

V = I * R

Где

V = напряжение в резисторе

I = сила тока в проводнике

R = сопротивление – это то, что нам нужно рассчитать, т.е. если мы знаем значение V и I, мы можем рассчитать R для нашей цепи.

Сначала необходимо рассчитать напряжение в резисторе. В цепи, показанной на рисунке 4, суммарное напряжение для нашей цепи 5 В. Большинство 3 мм и 5 мм светодиодов, которые вы будете использовать, требуют 3 В, т.е. оставшиеся 2 В (5 В-3 В=2 В) должны быть поглощены резистором.

Теперь мы рассчитаем силу тока в резисторе. Большинство 3 мм и 5 мм светодиодов светят максимально ярко при силе тока 20 мА. В случае превышения этого значения, светодиод может повредиться, а в случае слишком низкого значения – будет светить тускло (но не повредится). Предположим, мы хотим, чтобы светодиод работал при силе тока в 20мА. Мы знаем, что такая же сила тока должна быть в резисторе, так как все компоненты соединены в последовательную цепь (series). Получаем следующий расчет:
2В = 20мА * R
2В = 0.02
A * R
R = 100 Ом

Таким образом, 100 Ом - это абсолютный минимум сопротивления, который нам нужен, чтобы быть уверенными, что светодиод не повредится. Для безопасного использования лучше выбрать резистор с большим значением сопротивления. Мне нравится использовать 220 Ом, т.к. их всегда легко найти. Если вы знаете характеристики ваших светодиодов (можно посмотреть инструкцию к ним) и желаете самостоятельно сделать расчеты, то вы можете попробовать использовать он-лайн калькулятор (online calculator).

Затем мы присоединим светодиод к макетной плате. Подсоединим резистор и светодиод в центральную часть платы так, чтобы длинный контакт лампы был электрически соединен с одним из контактов резистора (рис. 3). Затем соединим другой контакт резистора к 5В, а другой контакт светодиода - с «землей». Светодиод должен загореться.

Несколько экспериментов для пробы:

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

Резисторы, однако, не нуждаются в особом расположении при подключении, вы можете увидеть, что оба контакта у резистора одинаковой длины (их схематическое изображение так же симметрично). Если поменять ориентацию включения резистора в цепь, никакой разницы в работе цепи не будет. Попробуйте.

Теперь попробуйте изменить последовательность подключения резистора и светодиода в цепи (рис. 5). Вы не заметите разницы в работе цепи. Не имеет значения, будет ли резистор включен в цепь с одной или с другой стороны от светодиода, он все равно будет эффективно защищать светодиод от переизбытка тока.

ШАГ 4: АНАТОМИЯ СКЕТЧЕЙ ARDUINO

Программы на языке Arduino называют скетчами. Скетч состоит из двух главных частей: функция Setup и функция Loop. 

setup() – функция setup() выполняется автоматически в самом начале программы Arduino. Внутри этой функции инициализируются переменные, пины и различные библиотеки, которые вы будете использовать в своем скетче. Функция setup() выполняется в скетче только один раз, когда плата включается или перезагружается.
        loop() - функция loop() содержит основной код программы. Эта функция выполняется после функции setup(). Arduino будет выполнять команды внутри цикла снова и снова до тех пор, пока плата не будет выключена.

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

ШАГ 5: МИГАЮЩИЙ СВЕТОДИОД В ARDUINO

В этом примере мы соединим светодиод с одним из цифровых пинов Arduino и будем с помощью программы включать и выключать его. Этот пример покажет некоторые полезные функции, встроенные в язык Arduino, такие как:
         pinMode(pinNumber, mode) (номер пина, режим) используется в скетче внутри функции setup() для инициализации каждого пина, который мы будем использовать, как в качестве входа, так и выхода. Мы не сможем читать и записывать значения в пин, пока не установим pinMode. pinMode() принимает два параметра – номер пина (каждый пин на плате имеет цифровое обозначение) и режим, в котором будет работать пин ("INPUT" (вход) или "OUTPUT"( выход)). В нашем случае, когда мы хотим заставить светодиод включаться и выключаться, мы будем посылать данные из Arduino, чтобы контролировать состояние светодиода, таким образом, мы укажем "OUTPUT" во втором параметре.

digitalWrite(pinNumber, state) (номер пина, режим) – это команда, с помощью которой мы устанавливаем напряжение на пине либо 5 В, либо «земля» (помним, что «земля» это то же, что 0 В). В последнем примере мы подсоединили светодиод к источнику 5 В и увидели, что он включился. При подключении светодиода к одному из цифровых пинов Arduino, мы сможем включить его, установив пину напряжение 5 В, или выключить, установив пину напряжение 0 В. digitalWrite() также принимает два аргумента – номер пина и состояние пина ("HIGH" для 5 В and "LOW" для «земли»).

delay(timeInMs) (время в мс)– установка паузы в работе программы на определенный промежуток времени. Например, delay(2000) приостановит выполнение программы на 2000 миллисекунд (2000 миллисекунд = 2 секунды), delay(100) приостановит  ?