В первом эксперименте мы мигали светодиодом, установленным на плате. Теперь настало время самостоятельно собрать схему и написать первый скетч.
Перед началом сборки схемы нужно обязательно ознакомиться с устройством макетной платы, если это еще не сделано.
В первую очередь устанавливаются на макетную плату компоненты, потом провода.
При подключении светодиода необходимо обратить внимание на то, что этот электронный компонент является полярным. То есть он имеет полярность, ему не все равно как его подключают. Часто говорят, что у него есть плюс и минус. На самом деле так говорить не совсем правильно. Правильно говорить, что у него есть анод и катод. Анод подключают к плюсу, а катод к минусу.
Если светодиод подключить неправильной полярностью ничего страшного не произойдет, он не сгорит, но и светиться не будет.
Светодиод, в отличие от обычной лампочки, напрямую к источнику тока не подключают. Светодиод обязательно подключают последовательно с резистором. Этот резистор необходим для ограничения тока, протекающего через светодиод. Его называют токоограничительным резистором.
Светодиод нельзя подключать к источнику питания напрямую. Всегда необходимо использовать токоограничительный резистор, иначе светодиод сгорит.
void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }
Убедитесь, что вы собрали схему как показано на Рисунке 2.
Перепишите код программы (либо скопируйте в главное окно Arduino IDE) и нажмите кнопку Загрузить на панели быстрого доступа, если код программы введен верно в строке статуса над консолью появится надпись: Загрузка завершена и светодиод на макетной плате начнет мигать.
Наша программа состоит из двух стандартных функций setup() , в теле которой расположено одно выражение и функции loop() с четырьмя выражениями.
Каждое выражение — это приказ процессору что — то сделать.
Выражения в рамках одного блока заключенного в фигурные скобки “{“ “}”, исполняются одно за другим, строго по порядку без всяких пауз и переключений. То есть, если мы говорим об одном конкретном блоке кода, его можно читать сверху вниз, чтобы понять что делается.
Как только Arduino включается, перепрошивается или нажимается кнопка RESET, начинает выполнятся функция setup(). То есть заставляет исполняться выражения в ней.
После завершения работы setup() вызывается функция loop(), которая выполняется в бесконечном цикле.
Теперь давайте попробуем понять почему написанная программа приводит в итоге к миганию светодиода.
Как известно, пины могут работать как выходы и как входы. Когда мы хотим чем-то управлять, то есть выдавать сигнал, нам нужно перевести управляющий пин в состояние работы на выход.
В нашем примере мы управляем светодиодом на 2-ом пине, поэтому 2-ой пин перед использованием нужно сделать выходом.
Это делается выражением в функции setup():
pinMode(2, OUTPUT);
Предназначение функция setup(): настроить плату как нужно, чтобы затем с ней работать.
В функции setup() вызывается функция с именем pinMode(), которая устанавливает заданный по номеру пин в определенный режим: вход или выход. О каком пине и о каком режиме идёт речь указывается нами в круглых скобках, через запятую, сразу после имени функции. В нашем случае мы хотим, чтобы 2-ой пин работал как выход. (`OUTPUT` означает выход, `INPUT`— вход.)
Уточняющие значения, расположенный в скобках после имени функции - называются аргументами функции.
Перейдём к функции loop().
Функция loop() называется основным циклом программы и предназначена для выполнения всех заложенных в программу действий.
Пройдёмся по выражениям по порядку.
Первое выражение — это вызов встроенной функции digitalWrite().
Она предназначена для подачи на заданный пин логической единицы (HIGH, 5 вольт) или логического нуля (LOW, 0 вольт). В функцию digitalWrite() передаётся 2 аргумента: номер пина и логическое значение.
В итоге, первым делом мы зажигаем светодиод на 2-ом пине, подавая на него 5 вольт.
Второе выражение вызов функции delay().
Функция delay() — это, встроенная функция, которая заставляет процессор уснуть на определённое время. Она принимает всего один аргумент: время в миллисекундах, которое следует спать.
В нашем случае это 1000 мс.
Как только 1000 мс истекают, процессор просыпается и переходит к следующему выражению. В нашем примере это снова вызов знакомой нам встроенной функции digitalWrite(). Правда на этот раз вторым аргументом мы передаём значение `LOW`. То есть устанавливаем на 2-ом пине логический ноль, подаётся 0 вольт и светодиод гаснет.
Четвертое выражение снова вызов функции delay() c аргументом 1000 мс.
По истечении установленного времени выполнение снова передаётся к первому выражению функции loop().
Если коротко описать работу программы, то получится следующий алгоритм:
1. Поджигаем светодиод
2. Спим 1000 миллисекунд
3. Гасим светодиод
4. Спим 1000 миллисекунд
5. Переходим к пункту 1
Таким образом мы получили проект с маячком, мигающим каждые 1000 мс + 1000 мс = 2000 мс = 2 сек.
Попробуй подключить светодиод к другим контактам и поменяй номер в программе