"Пишем свой первый скетч" Урок № 1

Урок № 1
Это продолжение цикла уроков про Ардуино для начинающих.

Предыдущие уроки можно посмотреть здесь.
Урок № 0 - "Введение в программирование Ардуино"
Урок № 0.5  - "Продолжение вводного урока."Первое подключение Ардуино к компьютеру."

В этом уроке, видео на который можно посмотреть на канале YOUTUBE
рассказано как подключить светодиод, рассчитать значение токоограничивающего резистора, про закон Ома, и многое другое.
Что такое функция void setup() и void loop(), вообщем посмотрите, не пожалеете.

Для этого урока, для основной его части потребуются.

Ардуино Нано v 3.0
Макетная плата (беспаечная) Breadboard
Провода 5 шт.
Резисторы 220 Ом 3 шт.
Светодиоды 3 шт. 

Плату Ардуино и макетную плату вы покупаете всего 1 раз, а использовать будете на протяжении всех уроков.


Для дополнительного занятия потребуется ещё 

Этот урок надо использовать вместе с видео.

Скетчи основной части урока.
Мигание 1 светодиодом. Скачать.
Мигание 3 светодиодами. Скачать.

Теперь, как и обещал некоторые интересности.

Вот наш код из первого скетча

#define LED 13

void setup() {
  pinMode(LED, OUTPUT); // УСТАНАВЛИВАЕМ ЦИФРОВОЙ ПИН 13 НА ВЫХОД
}

void loop() {
  digitalWrite(LED, HIGH);   // ЗАЖИГАЕМ СВЕТОДИОД
  delay(1000);               // ЖДЁМ 1 СЕКУНДУ
  digitalWrite(LED, LOW);    // ГАСИМ СВЕТОДИОД
  delay(1000);               // ЖДЁМ 1 СЕКУНДУ
}

Теперь как и обещал сократим код в функции loop()
И вместо 4 строчек написать всего 2
void loop() {
digitalWrite(LED, !digitalRead(LED)); // если светодиод был выключен – включаем и наоборот
delay(1000); // ждем 1 секунду
}

Что делают эти строчки.
Мы получаем текущее значение светодиода digitalRead(LED) и !digitalRead(LED) переворачиваем его(инвертируем).
Если светодиод горел, то гасим его
Если светодиод не горел, то зажигаем его.


с Логическими операторами мы познакомимся в следующих уроках

&& (логическое И)   Истина, если оба операнда истина.

|| (логическое ИЛИ)  Истина, если хотя бы один операнд истина.

 ! (логическое отрицание)  Истина, если операнд Ложь, и наоборот.

Замена delay()

Эта функция служит для остановки микроконтроллера.
Как я и говорил в видео, функцию delay() надо применять очень осторожно.
Означает остановить выполнение всех программ (ну почти всех) и ждать пока не пройдёт время, указанное в скобках. Оно указывается в миллисекундах (1000 миллисекунд = 1 секунде) и пока это время не закончится ARDUINO будет бездействовать. 
Есть ещё прерывания, но это мы будем изучать в следующих уроках.

Правильнее будет использовать функцию millis();
Она возвращает количество миллисекунд с момента начала выполнения программы.
Количество миллисекунд в millis() ограничено 50 днями. При наступлении этого времени счётчик сбросится 0.

Вот что у нас теперь получилось
#define LED 13
#define STOP 1000 // 1000 миллисекунд - это 1 секунды
unsigned long prev_ms = 0;      // здесь будет храниться время последнего изменения состояния светодиода 

void setup() {
  pinMode(LED, OUTPUT); // УСТАНАВЛИВАЕМ ЦИФРОВОЙ ПИН 13 НА ВЫХОД
}

void loop()
{
  /*
    проверяем – настало ли время изменить состояние светодиода
    для этого считываем значение светодиода digitalRead(LED),      
    а затем сверяем полученный интервал с нужным интервалом 
  */
if (millis() - prev_ms > STOP) { 
// текущее время –(минус) время последнего изменения. Если он больше 1000(1 сек.) то условие верно        
    digitalWrite(LED, !digitalRead(LED)); // если светодиод был выключен – включаем и наоборот
   prev_ms = millis();
  }
/*
 Здесь могут быть другие команды, которые нужно выполнить и неважно, что будет делать микроконтроллер в данное время,Если настало время STOP, он прервётся, выполнит задачу, и начнёт с того же места, где прервался.
*/
}

Теперь переходим к самому интересному.
Дополнительной части урока.
Напишу её сегодня-завтра. Хочу, чтобы на выходные вам было чем заняться.


Удачи вам в освоении этого непростого, но интересного дела.
Изучив эти уроки, вы освоите новую, интересную профессию – Программист. Освоив её, вы можете быть спокойны за свою будущее, ведь по статистике, программист самый востребованный и высокооплачиваемый специалист в наше время. 
Смотрите новые уроки. Подписывайтесь на канал. И удачи.

Примеры.