Серия Учебных пособий по Arduino. Глава №0

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

Так давайте же начнем ...

В этой серии более пятидесяти глав, если Вы новичок Вам необходимо начать с нулевой главы. При этом Вы всегда можете посмотреть полный пернечень глав здесь. После того, как вы освоите материал в главах с нулевой по четырнадцатую, вы сможете без труда перейти к любой другой главе на Ваше усмотрение. В течение первых нескольких глав, мы будем обращаться к книге: "Getting Started with Arduino" Massimo Banzi (На русском языке смотрите здесь). Так же Вам понадобятся начальные знания по электронике.
 

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

Arduino является открытым исходным кодом, физической вычислительной платформой, основанной на простой плате ввода / вывода и среде разработки, которая реализуется с помощью языка Processing ( www.processing.org ). Arduino может быть использован для разработки автономных интерактивных объектов, а так же может быть связан с программным обеспечением на вашем компьютере.

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

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

Теперь о самой Arduino. Что же мы имеем ввиду? Давайте посмотрим ...
Arduino uno
 

Что мы имеем? Микроконтроллер установленный в монтажной плате с интерфейсом USB, гнездо питания постоянного тока, и много входов и выходов (о них немного позже). Плюс несколько светодиодов  для индикации состояния и другие различные компоненты. Представленная на фото плата является Arduino uno, в ней используется микроконтроллер ATmega328.

Есть также мног других версий плат (например Arduino Mega, Arduino Leonardo, Arduino Due, и др.), так же постоянно появляются новые версии. Каждая из них отличается по своему физическому размеру, типу интерфейса, форме и памяти.
 

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

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

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

Таким образом, со скетчем и аппаратным интерфейсом и, даже возможно SHIELD, вы можете делать что угодно.
Отлично!
К счастью это все, что нам нужно знать на данный момент для того, чтобы мы могли, что то собрать на Arduino. Для этого нам понадобятся три вещи:

  • Персональный компьютер, который работает на Linux, MacOS или Windows, с портом USB, и с доступом в Интернет. (Опять же, если вы читаете эту статью - то вы в сети)
  • кабель USB, который соответствует вашей разъему платы
  • Arduino. Пусть это будет Arduino uno.

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

Как идут дела? На вашей Arduino uno, заморгал светодиод? Были ли Вы удивлены этому? Это нормально.

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

Существует некоторые действительно важные упражнения, чтобы в дальнейшем работать с Arduino. Поэтому пожалуйста обратитесь к книге  "Getting Started with Arduino" Massimo Banzi (перевод на русский язык можно найти здесь), прочитав книгу по 38 стр. включительно, Вы получите понимание, как заставить мигать один светодиод подключенный к Arduino.
 

Упражнение 0.1

Ваша задача, используя не один, а восемь светодиодов осуществить их мигание в бесконечном цикле в последовательности 1-2-3-4-5-6-7-8-7-6-5-4-3-2-1-2-3 - ... с задержкой в ​​одну секунду .

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

  • Компьютер, кабель, Arduino Uno или совместимый микроконтроллер
  • 8 светоизлучающих диодов (СИД). 
  • Резисторы 560 Ом - 0,25 Вт . Они нужны для уменьшения тока, чтобы защитить светодиоды
  • Макетная плата и соединительный провода
  • Видео камера (опционально) - что бы, задокументировать ваш успех!

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

В исходном проекте, о котором говориться в книге, был использован цифровой вывод 13. На этот раз, вы можете использовать выводы со 2 по 9. Аппаратная же часть проста - подключите провод от каждого цифрового контакта к аноду светодиода, далее каждый катод светодиода подсоедините через резистор 300-500 Ом на землю. См. схему ниже:

Схема подключения светодиодов к Arduino Uno

У Вас должно получиться нечто подобное

Пример на Arduino Uno R3

На этом видео Вы можете видеть работу устройства в действии

 
 

Теперь пришло время написать код! Но прежде чем сделать это, давайте составим набросаем алгоритм. Например, так ...

Упражнение 0.1 план

устанавливаем нужные нам контакты, как выходы
создаём переменную для хранения продолжительность задержки в миллисекундах
начинаем бесконечный цикл
включаем контакт 2, ждём установленное время задержки, выключаем его
включаем контакт 3, ждём установленное время задержки, выключаем его
делаем тоже самое для контактов с4 по 9
затем делаем то же самое, но в обратном направлении, до контакта 2
заканчиваем цикл
 

Как дела? У Вас всё получилось? Если да, это хорошо, если нет оставляйте Ваши вопросы в нашей группе в контакте. Мы всегда сможем Вам помочь. 
Чтобы сэкономить ваше время, здесь выложен скетч :

 

/*
Мигаем светодиодами на контактах со 2 по 9, далее в обратном порядке с 8 по 3
*/
// Setup - этот блок выполняется лишь один раз, при запуске скетча
int del=100; // присваиваем переменной "del" значение 100, это будет в дальнейшем являться задержкой в 100 миллисекунд
void setup()
{
  // устанавливаем цыфровые выводы со 2 по 9 как выходы (далее мы рассмотрим как это сделать более простым способом)
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
// блок цикла - данный блок будет повторяться бесконечно, до тех пор пока вы не отключите питание
void loop()
{
  digitalWrite(2, HIGH);   // включить светодиод на контакте 2
  delay(del);              // выполнить задержку длительностью "del" ("del" как мы помним равна 100 миллисекунд)
  digitalWrite(2, LOW);    // выключить светодиод
  digitalWrite(3, HIGH);   // включить светодиод на контакте 3
  delay(del);              // выполнить задержку
  digitalWrite(3, LOW);    // выключить светодиод
  digitalWrite(4, HIGH);   // включить светодиод на контакте 4
  delay(del);              // выполнить задержку
  digitalWrite(4, LOW);    // выключить светодиод
  digitalWrite(5, HIGH);   // включить светодиод на контакте 5
  delay(del);              // выполнить задержку
  digitalWrite(5, LOW);    // выключить светодиод
  digitalWrite(6, HIGH);   // включить светодиод на контакте 6
  delay(del);              // выполнить задержку
  digitalWrite(6, LOW);    // выключить светодиод
  digitalWrite(7, HIGH);   // включить светодиод на контакте 7
  delay(del);              // выполнить задержку
  digitalWrite(7, LOW);    // выключить светодиод
  digitalWrite(8, HIGH);   // включить светодиод на контакте 8
  delay(del);              // выполнить задержку
  digitalWrite(8, LOW);    // выключить светодиод
  digitalWrite(9, HIGH);   // включить светодиод на контакте 9
  delay(del);              // выполнить задержку
  digitalWrite(9, LOW);    // выключить светодиод
  digitalWrite(8, HIGH);   // включить светодиод на контакте 8
  delay(del);              // выполнить задержку
  digitalWrite(8, LOW);    // выключить светодиод
  digitalWrite(7, HIGH);   // включить светодиод на контакте 7
  delay(del);              // выполнить задержку
  digitalWrite(7, LOW);    // выключить светодиод
  digitalWrite(6, HIGH);   // включить светодиод на контакте 6
  delay(del);              // выполнить задержку
  digitalWrite(6, LOW);    // выключить светодиод
  digitalWrite(5, HIGH);   // включить светодиод на контакте 5
  delay(del);              // выполнить задержку
  digitalWrite(5, LOW);    // выключить светодиод
  digitalWrite(4, HIGH);   // включить светодиод на контакте 4
  delay(del);              // выполнить задержку
  digitalWrite(4, LOW);    // выключить светодиод
  digitalWrite(3, HIGH);   // включить светодиод на контакте 3
  delay(del);              // выполнить задержку
  digitalWrite(3, LOW);    // выключить светодиод
}

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