Главная » Arduino
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Курс молодого бойца мира 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 Поиск в FivelВ блокнот
Светодиод
АЛ307В
1 Поиск в FivelВ блокнот
Светодиод
АЛ102Б
1 Поиск в FivelВ блокнот
Светодиод
АЛ307Д
1 Поиск в FivelВ блокнот
Резистор
220 Ом
3 Поиск в FivelВ блокнот
Макетная платаbreadboard-half1 Размер роли не играет.Главное, чтобы детали поместилисьПоиск в FivelВ блокнот
Соединительный проводаПапа-Папа7 Поиск в FivelВ блокнот
Добавить все

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

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

Теги:

Опубликована: Изменена: 19.06.2016 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (11) | Я собрал (0) | Подписаться

0
Ильнур #
Прокоментируйте пожалуйста вот это - for(int i = 0; i < 3; i = i+1)
Ответить
0

[Автор]
Симилячник #
for - это так называемый цикл со счетчиком.
Этот цикл повторяет действия ,заключенные в скобки, заданное количество раз. Сколько раз повторить - задается внутри круглых скобок.
Для этого нужно создать переменную-счетчик, и проверить условие, при котором будет выполняться, далее, нужно задать условие, по которому будет выполняться изменение переменной-счетчика.
P.S. Извиняйте - забыл сделать пояснение. Сегодня исправлю.
Ответить
0
Max #
Цикл, на 3 итерации, правда не оптимально? лучше так for(unsigned char i=0;i
Ответить
0

[Автор]
Симилячник #
Я лишь привел пример применения цикла со счетчиком, показал применение. И выше написано, что мой вариант не является единственно верным априори.
В следующих статьях есть другое применение циклу со счетчиком
Ответить
0
Ильнур #
А проверка условия и прибавление к переменной единицы происходит в начале цикла?
Ответить
0

[Автор]
Симилячник #
Сначала инициализииуется переменная. Далее - идет проверка условия. После этого производится увеличение переменной. Проверяется условие с новой переменной. И так далее.
Ответить
0
Александр #
В алгоритме ошибка
Ответить
0

[Автор]
Симилячник #
Спасибо! Исправим.
Ответить
0
БГ #
const int RED = 5;
const int YELLOW = 6;
const int GREEN = 7;

int main_delay = 4000;
int mini_delay = 1000;
int blink_delay = 700;

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);
delay(200);

for (int povtor = 1; povtor < = 3; povtor = povtor + 1) {
digitalWrite(GREEN, HIGH);
delay(blink_delay);
digitalWrite(GREEN, LOW);
delay(200);
}

digitalWrite(YELLOW, HIGH);
delay(mini_delay);
digitalWrite(YELLOW, LOW);
delay(200);
}
Ответить
0
Сергей #
А зачем резистор? Простите мою безграмотность.
Ответить
0

[Автор]
Симилячник #
Резистор нужен чтобы понизить силу тока. Его так же называют ограничивающий резистор.
В принципе можно подключить и без резистора, но тогда есть шанс выхода светодиода из строя.
Arduino выдает 50мА. Если ваш светодиод выдерживает такой ток - смело подключайте. Найти максимальный ток светодиода можно в его характеристиках.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Конструктор - Гитарная педаль Remote Delay 2.5 iMAX B6 - зарядное для Lion, LiPo, LiFe, Pb, NiCd и NiMH аккумуляторов
вверх