Курс молодого бойца мира Arduino

Arduino. Начало

Приветствую! Мы начинаем курс молодого бойца мира Arduino.

Это первый уровень. Он предназначен для тех, кто только-только попал в мир DIY электроники и хочет разобраться, что к чему, не корпя часами над учебниками. Без теории, конечно, не обойтись, но мы будем тут же подкреплять ее практикой.

Как начать

Чтобы начать курс обучения нужно:

  1.  Скачать среду разработки Ардуино.
  2. Завести себе плату Arduino или ее аналоги. 
  3. Научиться подключать плату к компьютеру.
  4. Приобрести себе рассыпухи. Все нужные детали будут в описании.
  5. Не бояться совершать ошибки. Без ошибок не будет развития.
  6. Иметь желание познать дзен DIY, конечно.

Если ты полон сил, у тебя есть необходимые компоненты, и ты готов открыть для себя мир электроники, добро пожаловать!

Аксиомы нашего курса

Если что-то не так, лучше вынуть кабель питания, и только после этого, менять схему.

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

Не обязательно соблюдать цвета проводов, как на схемах. Цвет может быть любым, он не влияет на функциональность схемы.

Во всех наших экспериментах(1 Уровня) мы будем использовать ArduinoUNO и макетную плату. В компонентах, необходимых для проведения урока они не будут описываться. Опишу я их только в первом уроке.

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

Первое устройство

Нашим первым небольшим проектом будет крайне полезная на дороге вещь — светофор.

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

Мы попытаемся сделать небольшой светофор. Это будет идеальным началом для знакомства с Arduino.

Алгоритм работы светофора

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

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

Так, с алгоритмом разобрались. Теперь нам нужно собрать наш светофор.

Детали для светофора

— Светодиод красный 1 шт

— Светодиод желтый 1 шт

— Светодиод зеленый 1 шт

— Резистор на 220 Ом 3 шт

— Макетная плата 1 шт

— ArduinoUNO  1 шт

— Соединительные провода «Папа-Папа» 7 шт

Сборка

Собираем наш светофор по схеме. Главное, соблюсти полярность светодиодов. У светодиода анод — это плюс, а катод — это минус. Длинную ножку (анод), подключить к пинам (Пин — это вывод или контакт, кому как нравится.) Еще нужно подключить светодиоды именно пинам 13, 12 и 11. Зеленый к 13, Желтый к 12, Красный к 11.

Кодим

Отлично. У нас есть мини-светофор. И теперь нам надо заставить его работать.

Для этого нам нужно запрограммировать плату. Не надо пугаться, эта задача не сложная. Нужно лишь чуток внимательности и все получится.Рабочий код будет прикреплен к статье.Если интересно узнать, что значат функции ,и почему мы пишем их именно так, можно зайти на arduino.ru.

Посмотрим на код:

  //Впоследствии мы научимся делать код более компактным и читабельным, но для начала нам нужно разобраться с этим.  void setup() {   pinMode(13, OUTPUT); // Это наш зеленый светодиод,его мы обозначили как выход.   pinMode(12,OUTPUT);  // Это желтый   pinMode(11,OUTPUT);  //Это красный }  //Теперь наш алгоритм, записанный на бумаге, нужно перевести в программу.  void loop() {   digitalWrite(11, HIGH);  //Включаем красный светодиод   delay(5000);             //Ждем, пока он горит.                       digitalWrite(12, HIGH);  //Вместе с красным зажигаем и желтый.   delay(1000);             //Ждем немного      digitalWrite(11, LOW);   //Теперь надо выключить красный и желтый,   digitalWrite(12, LOW);   digitalWrite(13, HIGH);  //И включить зеленый   delay(5000);             //Ждем, пока горит зеленый      digitalWrite(13, HIGH);  // Теперь моргаем зеленым,Эту часть можно сделать меньше.Я расскажу об этом чуть позже.   delay(800);   digitalWrite(13, LOW);   delay(800);   digitalWrite(13, HIGH);   delay(800);   digitalWrite(13, LOW);   delay(800);   digitalWrite(13, HIGH);   delay(800);     digitalWrite(13, LOW);  //Включаем желтый и гасим зеленый   digitalWrite(12, HIGH);   delay(1000);    digitalWrite(12, LOW); //Гасим желтый   delay(10);     //Цикл повторяется бесконечное число раз. }

Теперь у нас есть рабочий светофор.

Меньше кода

Теперь давайте увеличим читаемость нашего кода и попробуем его сделать компактнее.

Посмотрим на наш код.

 // Более правильный код. // Для лучшей читаемости, нужно давать, так называемые, макроопределения. // Макроопределение работает так, как и Вордовское "Найти и заменить".  #define GREEN  13 // Обозначим 13 пин как Зеленый. #define YELLOW 12 // 12 - как Желтый. #define RED    11 // 11 - как красный.  // Нам нужно создать переменные, для упрощения работы при настройке параметров программы и лучшей читаемости.   int main_delay = 5000;  // Время горения красного и зеленого int mini_delay = 1000;  // Время горения желтого int blink_delay = 800;  // Время моргания зеленого  void setup() {   pinMode(GREEN, OUTPUT);      pinMode(YELLOW, OUTPUT);     pinMode(RED, OUTPUT);      }  void loop() {   digitalWrite(RED, HIGH);     delay(main_delay);                                    digitalWrite(YELLOW, HIGH);     delay(mini_delay);                   digitalWrite(RED, LOW);      digitalWrite(YELLOW, LOW);   digitalWrite(GREEN, HIGH);     delay(main_delay);            digitalWrite(GREEN, LOW);         // Теперь моргаем зеленым. Им можно моргать с помощью так называемого цикла со счетчиком.       for(int i = 0; i < 3; i = i+1)   {       delay(blink_delay);     digitalWrite(GREEN, HIGH);     delay(blink_delay);     digitalWrite(GREEN, LOW);   }      digitalWrite(YELLOW, HIGH);   delay(mini_delay);   digitalWrite(YELLOW, LOW);    delay(mini_delay);         } // Теперь наш код стал компактнее и читабельнее. // Но запомни, тебе следует давать осмысленные имена переменным и макроопределениям.Это улучшает читабельность. // Если ты через месяц откроешь свой код, ты поймешь о чем я говорю. 

Пояснения

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

В общем виде его можно записать так:

for(Переменная;Условие;Изменение)

{ Код, который нужно повторять}

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

Условие — условие, при истинности которого будут выполняться действия в фигурных скобках.

Изменение — правило, по которому изменяется переменная. Изменение производится после проверки условия. После этого проверяется измененная переменная.

Итог урока

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Плата Arduino Arduino Uno 1
Светодиод АЛ307В 1
Светодиод АЛ102Б 1
Светодиод АЛ307Д 1
Резистор 220 Ом 3
Макетная плата breadboard-half 1 Размер роли не играет.Главное, чтобы детали поместились
Соединительный провода Папа-Папа 7