Arduino. Начало
Приветствую! Мы начинаем курс молодого бойца мира 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)
Прикрепленные файлы:
- Normal_light.ino (3 Кб)
- Simple__light.ino (2 Кб)