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

Arduino. Начало

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

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

Как начать

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

  •  Скачать среду разработки Ардуино.
  • Завести себе плату Arduino или ее аналоги. 
  • Научиться подключать плату к компьютеру.
  • Приобрести себе рассыпухи. Все нужные детали будут в описании.
  • Не бояться совершать ошибки. Без ошибок не будет развития.
  • Иметь желание познать дзен 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. Нужна для того, чтобы «инициализировать» цикл. То есть сравнить переменную с условием цикла.

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

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

    Итог урока

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

    Список радиоэлементовОбозначение
    Тип
    Номинал
    Количество
    ПримечаниеМагазинМой блокнот

    Плата ArduinoArduino Uno1

    СветодиодАЛ307В1

    СветодиодАЛ102Б1

    СветодиодАЛ307Д1

    Резистор220 Ом3

    Макетная платаbreadboard-half1
    Размер роли не играет.Главное, чтобы детали поместились
    Соединительный проводаПапа-Папа7
    Добавить все

    Скачать список элементов (PDF)

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.