Урок 1
Урок 1. Мигающий светодиод на Arduino
Добрый вечер юные познаватели микроконтроллера Arduino, сегодня мы с вами начнем изучать основы и азы Arduino и поймем принцип его работы. Сегодняшний урок посвящен такому элементу как светодиод и работы c микроконтроллером Arduino. Попросту говоря,
Светодиод — это полупроводниковый прибор, трансформирующий электроток в видимое свечение.
И на основе свечения светодиода мы будем работать и рассматривать основу программирования Arduino. Перейдем непосредственно к практике Для начала нам нужно приготовить необходимый набор предметов для работы!
05.Control: ForLoopIteration
Для знакомства с циклом for в Arduino IDE есть пример File | Examples | 05.Control | ForLoopIteration.
Для эксперимента нам понадобятся шесть светодиодов. Соответственно, к ним нужно добавить шесть резисторов. Соединяем их как на рисунке. Задействуем цифровые выводы 2, 3, 4, 5, 6, 7.
Цель скетча – поочерёдно зажигать и гасить светодиоды в одном направлении, а затем в другом.
Доказательство, что код работает.
Что потребуется?
Чтобы сделать мигающий светодиод с помощью контроллера Arduino нужно около минуты времени и иметь в наличии:
- светодиод с диаметром корпуса 3 или 5 мм любого свечения;
- постоянный резистор номиналом 240–470 Ом, при питающем напряжении 5 В;
- соединительные провода;
- саму плату Arduino (в примере будет использоваться версия UNO).
Для удобства подключения можно задействовать монтажную плату (breadboard).
В реализации более сложных электронных схем, монтажная плата – это незаменимый помощник.
Шаг 2: Простой код с блоками
В эмуляторе Ардуино Tinkercad вы можете легко программировать свои проекты с помощью блоков. Давайте рассмотрим простой код, управляющий миганием, открыв редактор кода (кнопка с надписью «Код»). Вы можете изменить размер редактора кода, щелкнув и перетащив левый край окна. Смотрите анимированный рисунок выше.
Код начинается с двух серых блоков комментариев, которые являются просто заметками для людей. Первый синий выходной блок устанавливает встроенный светодиод как HIGH, который является способом Arduino для описания «включено». Эта выходная команда активирует сигнал 5 В на все, что связано с указанным выводом. Далее – желтый командный блок, который ждет одну секунду, достаточно просто. Таким образом, программа приостановится, пока светодиод горит в течение одной секунды. Затем после следующего комментария идет синий выходной блок, который установит светодиод обратно в LOW или «выключен», за которым следует вторая пауза в секунду.
Попробуйте настроить этот код, изменив время ожидания и нажав «Начать симуляцию». Вы можете даже добавить дополнительные выходы и блоки паузы, чтобы создать более длинные мигающие варианты работы.
Вы заметили, что на плате мигает маленький светодиод? Этот встроенный светодиод также подключен к контакту 13 и предназначен для использования в целях тестирования без необходимости подключения каких-либо внешних компонентов. У него даже есть свой собственный крошечный резистор, припаянный непосредственно к поверхности платы.
Готовы создать свой собственный проект? Выберите Arduino, которую вы добавили на рабочую область (или выберите её в раскрывающемся меню в редакторе кода), и начните перетаскивание блоков кода, чтобы создать свою собственную программу мигающего светодиода.
Изменение частоты мигания светодиода
Для того, чтобы обеспечить более частое мигание светодиода, необходимо изменить параметр, указываемый в скобках ( ) в команде “delay”.
Как уже было указано, период задержки указывается в миллисекундах. То есть, для того, чтобы заставить светодиод мигать в два раза чаще, необходимо изменить значение с 1000 на 500. В результате, пауза между включением/выключением светодиода составит половину секунды и светодиод будет мигать быстрее.
Для проверки, не забудьте загрузить измененный скетч на плату Arduino.
Светодиодные ленты
Светодиодная лента представляет собой цепь соединённых светодиодов. Соединены они не просто так, например обычная 12V лента состоит из сегментов по 3 светодиода в каждом. Сегменты соединены между собой параллельно, то есть на каждый приходят общие 12 Вольт. Внутри сегмента светодиоды соединены последовательно, а ток на них ограничивается общим резистором (могут стоять два для более эффективного теплоотвода):
Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по
3.2V, суммарно это 9.6V. Подключаем ленту к 12V и понимаем, что 2.5V у нас просто уходят в тепло на резисторах. И это в лучшем случае, если резистор подобран так, чтобы светодиод горел на полную яркость.
Подключаем к Arduino
Здесь всё очень просто: смотрите предыдущий урок по управлению нагрузкой постоянного тока. Управлять можно через реле, транзистор или твердотельное реле. Нас больше всего интересует плавное управление яркостью, поэтому продублирую схему с полевым транзистором:
Конечно же, можно воспользоваться китайским мосфет-модулем! Пин VCC кстати можно не подключать, он никуда не подведён на плате.
Управление
Подключенная через транзистор лента управляется точно так же, как светодиод в предыдущей главе, то есть все примеры кода с миганием, плавным миганием и управление потенциометром подходят к этой схеме.
Про RGB и адресные светодиодные ленты мы поговорим в отдельных уроках.
Питание и мощность
Светодиодная лента потребляет немаленький ток, поэтому нужно убедиться в том, что выбранный блок питания, модуль или аккумулятор справится с задачей. Но сначала обязательно прочитайте урок по закону Ома! Потребляемая мощность светодиодной ленты зависит от нескольких факторов:
- Яркость. Максимальная мощность будет потребляться на максимальной яркости.
- Напряжение питания (чаще всего 12V). Также бывают 5, 24 и 220V ленты.
- Качество, тип и цвет светодиодов: одинаковые на вид светодиоды могут потреблять разный ток и светить с разной яркостью.
- Длина ленты. Чем длиннее лента, тем больший ток она будет потреблять.
- Плотность ленты, измеряется в количестве светодиодов на метр. Бывает от 30 до 120 штук, чем плотнее – тем больший ток будет потреблять при той же длине и ярче светить.
Лента всегда имеет характеристику мощности на погонный метр (Ватт/м), указывается именно максимальная мощность ленты при питании от номинального напряжения. Китайские ленты в основном имеют чуть меньшую фактическую мощность (в районе 80%, бывает лучше, бывает хуже). Блок питания нужно подбирать так, чтобы его мощность была больше мощности ленты, т.е. с запасом как минимум на 20%.
- Пример 1: нужно подключить 4 метра ленты с мощностью 14 Ватт на метр, лента может работать на максимальной яркости. 14*4 == 56W, с запасом 20% это будет 56*1.2
70W, ближайший блок питания в продаже будет скорее всего на 100W.
Важные моменты по току и подключению:
- Подключение: допустим, у нас подключено ленты на 100W. При 12 Вольтах это будет 8 Ампер – весьма немаленький ток! Ленту нужно располагать как можно ближе к блоку питания и подключать толстыми (2.5 кв. мм и толще) проводами. Также при создании освещения есть смысл перейти на 24V ленты, потому что ток в цепи будет меньше и можно взять более тонкие провода: если бы лента из прошлого примера была 24-Вольтовой, ток был бы около 4 Ампер, что уже не так “горячо”.
- Дублирование питания: лента сама по себе является гибкой печатной платой, то есть ток идёт по тонкому слою меди. При подключении большой длины ленты ток будет теряться на сопротивлении самой ленты, и чем дальше от точки подключения – тем слабее она будет светить. Если требуется максимальная яркость на большой длине, нужно дублировать питание от блока питания дополнительными проводами, или ставить дополнительные блоки питания вдоль ленты. Дублировать питание рекомендуется каждые 2 метра, потому что на такой длине просадка яркости становится заметной уже почти на всех лентах.
- Охлаждение: светодиоды имеют не 100% КПД, плюс ток в них ограничивается резистором, и как результат – лента неслабо греется. Рекомендуется приклеивать яркую и мощную ленту на теплоотвод (алюминиевый профиль). Так она не будет отклеиваться и вообще проживёт гораздо дольше.
Проект “Мигалка”
Давайте попробуем сделать проект посложнее. Добавим два светодиода, которые будут мигать поочередно.
- Плата Arduino Uno или Nano
- Макетная плата
- Два резистора 220 Ом
- Два светодиода. Если есть возможность, лучше взять синий и красный.
- Провода для соединения.
Сложность: простой проект.
- Как подключить светодиод к ардуино.
- Как изменить стандартную программу мигалки.
- Повторим процедуру загрузки скетча в микроконтроллер.
Принцип подключения при этом не меняется. Мы используем два пина платы контроллера для соединения со светодиодами – 13 и 12. Можно использовать следующую схему:
Схема подключения светодиодов проекта Мигалка
Положительные контакты светодиода соединяем с цифровыми пинами, отрицательные – с GND.
Программирование мигалки
В скетч с мигающим светодиодом нам надо будет внести определенные изменения. Алгоритм действий таков:
- Включаем синий светодиод
- Ждем какое-то время (1 секунду)
- Выключаем синий светодиод и одновременно включаем красный
- Ждем какое-то время (1 секунду)
- Повторяем еще раз
Попробуйте написать программу самостоятельно, основываясь на опыте, полученном из предыдущего проекта. Если возникнут сложности, можно обратиться к примеру далее по тексту.
В этой программе нам опять встречается блок команд loop. В нем мы выполняем включение и выключение пинов с помощью digitalWrite. Никаких сложностей это вызвать не должно.
Давайте поговорим более подробно о блоке setup. Мы видели его и в прошлом примере. Внутри setup обычно располагаются команды инициализации, которые запускаются только один раз, в момент подключения контроллера к питанию.
В примерах с мигалками мы устанавливаем пины в нужный режим – OUTPUT. В этом режиме мы работаем с внешними устройствами, получающими питание с данного пина ардуино. Например, наш светодиод ничего не передает в плату, он использует пин 13 для того, чтобы включиться. Поэтому мы устанавливаем режим OUTPUT – “на выход”. По умолчанию все пины находятся в режиме INPUT, оптимальном для подключения датсиков. Более подробную информацию вы можете найти в описании функции pinMode.
Надеемся, процедура проверки скетча и прошивки контроллера не вызвала каких-то трудностей. Запустите программу и вы увидите, как весело перемигиваются светодиоды на плате. Поздравляем с написанием своих первых проектов на Ардуино!
Мигание светодиода с Arduino
Вам нужна плата arduino, светодиод, резистор и макет. После того, как у вас есть эти компоненты, вам необходимо установить интегрированную среду разработки Arduino на свой компьютер. Кроме того, вам необходимо настроить и настроить плату Arduino на своем компьютере (путем установки драйвера устройства).
Мигающий светодиод с Arduino
Откройте arduino IDE и напишите следующую программу, чтобы мигать светодиод. Я написал классический светодиодный мигающий. Вы можете увидеть снимок экрана ниже. После написания программы вы можете сохранить ее с именем файла по вашему выбору (найти File-> Save в строке меню IDE).
Теперь нам нужно загрузить программу с ПК на нашу плату arduino. Для этого вам необходимо выполнить следующие шаги.
ШАГ 1 — Выбор платы
Вы должны выбрать тип платы arduino в своей среде IDE. Я использую плату Arduino Uno. Чтобы выбрать плату, найдите Tools в строке меню. Выберите вариант «Board» — и выберите правильную плату arduino. Я выбрал arduino uno. Смотрите скриншот.
ШАГ 2 — выберите правый порт
Номер порта назначается при установке аппаратного драйвера платы. Вы можете обратиться к руководству по установке Arduino в Windows, чтобы узнать, как найти номер порта на плате. Вы можете найти номер порта, обратившись к диспетчеру устройств в Windows. См. Раздел Port (COM & LPT) и найдите открытый порт с именем « Arduino Uno (COMxx) ». Если вы используете другую доску, вы найдете соответствующее имя. Важно то, что xx в части COMxx . В моем случае это COM5 . Таким образом, мой номер порта — 5 . Чтобы выбрать правильный порт, откройте Tools–> Serial Port и выберите номер порта. См. Снимок экрана ниже.
Теперь все готово. Ваша плата arduino готова к общению с вашим ПК и наоборот. Инструкции будут отправлены на плату arduino с вашего ПК. Теперь давайте посмотрим, как это сделать.
Для загрузки программы с вашего компьютера на плату arduino с помощью среды arduino необходимо выполнить два этапа. Первый шаг заключается в компиляции, а второй шаг называется сжиганием . Давайте посмотрим подробно.
ШАГ 1: — Компиляция. Это процесс преобразования кода, который вы только что записали в arduino IDE, в другую форму, которая понимается только микроконтроллером на вашей плате arduino. В нашем примере мы используем arduino uno board. Он выполнен с использованием микроконтроллера Avr (Atmega328). В arduino IDE компиляция называется « verify». Поэтому нажмите кнопку подтверждения в своей среде IDE (см. Кнопку с отметкой о метке чуть ниже строки меню). См. Также скриншот, приведенный ниже. Когда вы нажмете кнопку подтверждения, программа, которую вы написали в arduino IDE, будет скомпилирована для любых ошибок, а затем преобразована в другую форму, которую понимает Avr Atmega328.
ШАГ 2: — Запись — встроенные дизайнеры используют слово « burning», чтобы ссылаться на загрузку программы на любой микроконтроллер. Итак, на этом этапе мы загрузим проверенную программу в arduino IDE на плату arduino. Для этого нажмите кнопку « upload» (см. Кнопку со стрелкой вправо). Щелчок по кнопке «upload» начнет процесс сжигания скомпилированной программы микроконтроллеру Avr на вашей плате arduino. В зависимости от размера вашей программы это займет немного времени. Если вы посмотрите на свою плату arduino, вы увидите 2 светодиода рядом с Tx и Rxмигает. Это показатель успешной связи между вашим ПК и платой arduino. Если программа была загружена успешно, вы увидите сообщение типа « Done Uploading ». Если процесс загрузки не был успешным, вы увидите сообщение об ошибке. См. Скриншот, приведенный ниже.
Примечание. — Когда я загружал программу «классического светодиодного мигания» на свою плату arduino, я получил сообщение об ошибке при первой попытке. Это было похоже на то, что «Port COM5 уже используется другим устройством». Я исправил это, подключив плату к другому порту USB на моем ноутбуке.
Пишем код в программе
Здесь пишу программу « classic LED blink ».
Плата arduino uno поставляется с предварительно установленным светодиодом на порте номер 13. Это небольшой светодиод SMD с маркировкой L, и вы можете найти его рядом с портом 13. Чтобы проверить программу мигания светодиодов, вам не нужно подключать отдельный светодиод. Однако, если вы этого хотите, вот простая схема для подключения внешнего светодиода на порту 13. Для ограничения тока в цепи используется резистор 330 Ом . Источник питания +5 вольт можно получить с USB-порта вашего компьютера. Ваша плата arduino будет питаться от +5 вольт питания с USB-порта ПК, когда вы подключаете плату по кабелю. Этого предложения достаточно для выполнения простых проектов с использованием arduino. Подключите анод светодиода к порту 13 и катод светодиода к выходу заземления (вы можете видеть контакт GND чуть выше порта 13), как показано на схеме, с резистором между портом 13 и анодом светодиода.
Первая строка программы const int LED = 13 ; называется объявлением присваивания. Здесь мы объявляем новую переменную с именем LED как постоянное целое число, и в то же время мы назначаем переменную номер порта 13. С этого момента вы можете заменить порт 13 светодиодом имени переменной в любом месте программы.
Вторая строка начинается с void setup () и имеет блок операторов, записанных в круглых скобках. Здесь setup () — это функция в APL (язык программирования arduino), используемый для объявления инструкций конфигурации для портов микроконтроллера. Во время игры с микроконтроллером нам нужно настроить разные порты микроконтроллера как источник INPUT или OUTPUT . Как говорят слова, INPUT означает, что мы получаем некоторые данные в микроконтроллер, а OUTPUT означает, что мы отправляем некоторые данные из микроконтроллера. В этом проекте мы будем мигать светодиодом на порте номер 13 микроконтроллера. Моргнуть светодиод означает, что мы должны включить его ON и OFFальтернативно с определенным интервалом. Поэтому мы собираемся отправлять команды для включения и выключения светодиода на порт 13 микроконтроллера (плата arduino). Для этого нам нужно настроить порт 13 как OUTPUT в нашей программе. Это достигается внутри блока void setup (). На языке программирования arduino мы используем библиотечную функцию с именем pinMode () для настройки контактов микроконтроллера arduino. Чтобы настроить контакт 13 как OUTPUT, нам нужно написать инструкцию pinMode (LED, OUTPUT) ; мы использовали переменный светодиод для представления порта 13, поскольку мы уже назначили порт 13 для переменного светодиода.
Примечание. — Функция setup () вызывается при запуске программы. Используйте его для инициализации переменных, режимов вывода, начала использования библиотек и т. Д. Функция настройки запускается только один раз после каждого включения или сброса платы Arduino.
Следующий блок начинается с void loop () — здесь loop () является еще одной предопределенной функцией на языке программирования arduino (APL). Эта функция выполняет все операторы, написанные внутри своих круглых скобок подряд последовательно; от первой строки в круглых скобках до последней строки. Как только выполнение завершает последнюю строку, оно будет повторять процесс выполнения снова, начиная с первой строки в круглых скобках. Другими словами, loop () — это функция, которая бесконечно выполняет инструкции, написанные внутри своих круглых скобок. Эта функция позволяет микроконтроллеру (или платой arduino) выполнять набор действий до тех пор, пока он включен. В нашем случае эти действия включаются и выключаются светодиодом в определенные промежутки времени. Итак, вот как мы собираемся рассказать ардуино, чтобы сделать процесс ВКЛ и ВЫКЛ.
APL имеет инструкцию с именем digitalWrite (), которая является инструкцией для записи некоторых данных в конкретный порт микроконтроллера на плате arduino. Мы подключили светодиод к контакту 13 . Чтобы включить его, мы должны подать напряжение на выводе 13. Мы собираемся сделать это с помощью программных команд. Так как наша плата arduino подключена к ПК через USB, то доступно +5 вольт. Нам нужно передать это напряжение в порт 13 платы arduino. Для этого APL имеет инструкцию по ключевым словам HIGH . Поэтому нам просто нужно написать инструкцию digitalWrite (LED, HIGH);и эта инструкция при исполнении микроконтроллером будет подавать +5 вольт на порте 13. Это напряжение будет включать светодиод питания, и он включится. Мы выполнили 1/3 нашей задачи сейчас. Теперь нам нужно отключить светодиод. Как это сделать ? Вам просто нужно отключить напряжение, указанное на порте 13. В APL для этой цели есть инструкция по ключевым словам LOW . Напишите инструкцию digitalWrite (LED, LOW); и мы отключили питание в порту 13. Эта инструкция отключит светодиод. К настоящему времени мы выполнили две основные задачи. Остается установить интервал времени между временем включения и выключения. Предположим, что время включения и выключения составляет 1 секунду . APL имеет функцию под названием delay ()для выполнения этой задачи установки временной задержки. Все, что вам нужно сделать, это записать желаемую задержку в миллисекундах в качестве аргумента функции задержки. Чтобы получить задержку в 1 секунду, мы должны написать delay (1000); и это обеспечит задержку в 1000 миллисекунд между светодиодом ON и OFF.
Итак, вот резюме программы внутри цикла (). digitalWrite (LED, HIGH); включит светодиод. Теперь нам нужно держать светодиод включенным в течение 1 секунды. Мы делаем это, удерживая микроконтроллер в режиме ожидания (или мы его ожидаем) в течение 1 секунды. delay (1000); это функция, которую мы используем, чтобы поддерживать микроконтроллер в режиме ожидания на 1 секунду (даже если я написал простоя, микроконтроллер фактически находится в режиме исполнения. Он подсчитывает внутренний таймер и постоянно проверяет, достиг ли он 1 секунду. в следующих главах). Через 1 секунду нам нужно отключить светодиод. Мы делаем это с инструкцией digitalWrite (LED, LOW); это выключит светодиод. Теперь нам нужно держать светодиод в состоянии «ВЫКЛ» в течение 1 секунды (до того, как он снова включится). Для этого мы пишем delay (1000); еще раз чуть ниже инструкции, чтобы выключить светодиод. Так как это последнее утверждение внутри функции loop () нашей программы; микроконтроллер начнет выполнение с начала инструкции внутри цикла () после ожидания 1 секунда, чтобы отключить светодиод. Таким образом, светодиод снова включается через 1 секунду.