Arduino.ru
Мигаем светодиодом
В этом примере показано как с помощью контроллера Arduino заставить мигать светодиод.
Необходимые компоненты
- контроллер Arduino
- светодиод
- резистор 220 Ом
Подключение
Мы подключаем резистор сопротивлением 220 Ом к выходу номер 13 (pin 13), к резистору в свою очередь подключаем анод (обычно длинная ножка) светодиода. Катод подсоединяем к земле (Grd). Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino.
Большинство плат Arduino имеют встроенный SMT (Surface-mount techology)светодиод, подключенный к выходу 13. Если вы запустите код на таких платах без подключения внешниего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.
Схема
В коде мы первой строк задаем режим выхода для вход/выхода (pin) 13:
В основном цикле (loop) программы зажигаем светодиод:
На выходе 13 появляется напряжение 5 В. Светодиод зажигается. Затем мы выключаем светодиод:
Изменив напряжение на выходе на 0 вольт, мы выключили светодиод. Для того чтобы человеческий глаз успевал замечать переключение светодиода введем задержку с помощью функции delay() .
Урок 1 — Мигаем встроенным на плату Arduino светодиодом
На плату Arduino UNO (Nano, Mega, micro и пр.) установлен светодиод который соединен с 13 pin платы. На плате он обозначается буквой L.
Для того чтобы заставить мигать встроенный светодиод на плату Arduino. Достаточно загрузить не большую программу.
Для урока нам понадобиться:
Функция setup() вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д. Функция setup запускает только один раз, после каждой подачи питания или сброса платы Arduino.
pinMode(13, OUTPUT); Инициализируем цифровой вход/выход в режиме выхода. Этого можно не делать так как цифровые выходы Ардуины по умолчанию настроенные на режим выход.
После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них. Использовать её нужно для активного управления платой Arduino.
DigitalWrite() — Так как у нас пин настроен как выход (pinMode(13, OUTPUT);), то для значение HIGH напряжение на соответствующем вход/выходе (pin) будет 5В (3.3В для 3.3V плат), и 0В(земля) для LOW.
Т.е. digitalWrite(13, HIGH); — На пин 13 подается 5 вольт.
digitalWrite(13, LOW); — На пин 13 подается 0В.
delay() — Останавливает выполнение программы на заданное в параметре количество миллисекунд (1000 миллисекунд в 1 секунде).
Следующий урок: Мигаем светодиодом подключенным к 2 pin Arduino
Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.
Понравилась статья? Поделитесь ею с друзьями:
Умное мигание светодиодом в Ардуино
Мигание светодиода в Ардуино, что может быть проще и бесполезнее. На самом деле практическую пользу от этой простой функции можно найти.
Бывает при программирование какого-нибудь устройства не хватает портов ввода-вывода микроконтроллера. Или из экономических соображений, а может нехватки места в корпусе, не хочется устанавливать дисплей, а как то сигнализировать о режимах работы устройства очень хотелось бы. Часто достаточно сигнализировать о этих режимах горением или миганием светодиода. А если режимов много?
На мысль меня навела автомобильная сигнализация, в которой я как то программировал режим автозапуска. Там, чтобы установить, например, 14-й бит определенного регистра нужно было после входа в режим программирования этого регистра 14 раз нажать на определенную кнопку брелка, а потом дождаться 14-ти коротких сигналов (или мигания поворотников). Затем нажать кнопку в подтверждения и услышать длинный сигнал. Гениально! Никаких дисплеев и экранных меню. Правда, одновременно, и жутко неудобно.
Но если внутренних режимов немного, то использовать количество морганий светодиодом вполне функционально.
Начнем с простого.
Пример мигания светодиодом для Ардуино
Это первая программа которую осваивают при изучении Ардуино. Во многих контроллерах, которые мне попадались в последнее время, эта программа зашита на заводе, видимо для тех кто не осилил и это.
Казалась бы задавай различные интервалы между высокими и низкими уровнями порта и будет нужное. Но при этом контроллер больше ничего не делает (ну почти ничего, прерывания он все таки обрабатывает). Делать что-то еще он конечно может, но не в основном цикле loop().
Поэтому отказываемся от delay() и переходим на события с использованием millis()
Использование событий с использованием millis()
Ну вот. Цель достигнута. Светодиод мигает, а процессорное время в цикле loop() практически полностью доступно для других функций. Правда в таком коде использование требуемых режимов мигания реализуется довольно сложно — несколько событий с разными интервалами, много условий по необходимому режиму и предыдущему состоянию. Слишком сложно.
Обработка битовой матрицы состояния светодиода
Уменьшаем время срабатывания события до 1/8 секунды и в 1 байте кодируем 8 бит состояний, отображаемых последовательно.
Первые три режима работы светодиода простые. А вот остальные уже можно использовать для демонстрации режима микроконтроллера:
Короткая вспышка 1 раз в секунду
Две вспышки в секунду
Три вспышки
И постоянные вспышки четыре раза в секунду
В принципе, на этом можно было и остановиться, так как для большинства проектов этого бы хватило. Но если этого мало и вам нужно будет разрабатывать программирование автосигнализации )))
Что если 8 бит состояний светодиодов мало?
Использование 4-х байт для определения состояния светодиода
Получаем циклический сигнал SOS — три коротких, три длинных и снова три коротких сигнала светодиодом, повторяемый каждые 4 секунды
Очень много людей критиковали Ардуино за ужасный стиль программирования микроконтроллеров без использования прерываний
Только хардкор. Только прерывания!
Берем 16-ти битный Таймер 1. Устанавливаем прерывание на переполнение за 125мс
Подробно по программированию таймера можно почитать здесь. При этом delay() на 5 секунд в Loop() совершенно не мешают управлению нашим светодиодом.
Недостаток такого метода в том, что не будут работать некоторые функции и библиотеки, использующие таймер 1. Например, ШИМ.
Если с программированием регистров таймера сложно, а прерывание по таймеру использовать интересно —
Прерывание по таймеру с «человеческим лицом»
Добрые люди написали программный интерфейс к таймеру в виде библиотеки TimerOne
Ну, и напоследок, код для тех, кто как и я «грызет» программирование WiFi модулей ESP8266 в среде Arduino IDE.
Прерывание по таймеру в ESP8266
Там другие добрые люди прямо в ядро ESP для Arduino встроили библиотеку Ticker
Использовать прерывания в ESP следует осторожно, так как очень часто это вызывает срабатывание злобного сторожевого таймера WDT, который считает, что на обработку встроенных WiFi функций выделяется слишком мало времени.
Надеюсь, эта статья будет немного полезной для всех любителей мигать светодиодами в Ардуино и не только им.
Мигающий светодиод Ардуино Нано, Уно
Мигание светодиодом Ардуино, встроенного в плату — один из первых примеров скетчей, для начинающих изучать программирование микроконтроллера Arduino Uno или Arduino Nano. Разберем несколько примеров — мигание встроенным светодиодом, мигание без delay, мигание несколькими светодиодами. Прочитав статью до конца, вы поймете, как управлять миганием светодиодов, подключенных к Ардуино.
Мигание светодиодом на Ардуино Нано, Уно
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- светодиоды и резисторы;
- макетная плата;
- провода «папа-папа».
Платы данного семейства имеют встроенный светодиод на плате, подключенный к пину 13 через резистор. Этот светодиод мигает при включении или перезагрузке микроконтроллера. Можно с помощью программы управлять включением и выключением (миганием) светодиодом, который «висит» на 13 пине Arduino Uno и Nano. При этом не потребуется даже собирать на макетной плате электрическую схему.
Мигание встроенным светодиодом на плате
Для первого примера не потребуется собирать принципиальную схему. Код программы, используется из примера «Подключение светодиода к Ардуино». Встроенный светодиод подключается через резистор, поэтому к 13 пину можно подключать внешний светодиод без резистора. Это самый простой скетч, с которого начинают знакомство с Ардуино, скопируйте код и загрузите его в микроконтроллер через Arduino IDE.
Скетч. Мигание встроенным светодиодом Ардуино
Пояснения к коду:
- delay(); останавливает программу на заданное количество микросекунд;
- данный код подойдет к плате Arduino Nano и Arduino Mega.
Мигание светодиода на Ардуино без delay
В коде используется функция millis, которая возвращает количество миллисекунд с момента начала программы. Благодаря этой функции можно организовать многозадачность микроконтроллера. В отличии от функции delay(); , программа не останавливает выполнение команд в скетче, а считает когда пройдет заданное количество миллисекунд и может выполнять параллельные задачи.
Схема для мигания светодиодом на Ардуино без delay
Скетч. Мигание светодиода на Arduino Uno без delay
Пояснения к коду:
- каждые 500 миллисекунд состояние переменной boolean меняется на противоположное с помощью команды ledState=!ledState .
Мигание двух светодиодов на Ардуино Уно
Для следующего примера потребуется собрать схему на макетной плате из двух светодиодов, как изображено на картинке ниже. Более сложная программа с мигающими светодиодами — это светофор на Ардуино, где уже необходимо регулировать включение и выключение трех светодиодов и больше. После сборки электрической схемы загрузите следующий код в микроконтроллер.
Мигание несколькими светодиодами на Ардуино одновременно
Скетч. Мигание несколькими светодиодами одновременно
Пояснения к коду:
- включение/выключение светодиодов происходит поочередно;
- одновременное включение можно сделать, поменяв местами строчки в коде.
Заключение. В этом обзоре мы рассмотрели, как сделать мигающий светодиод на Arduino Nano или Uno. Заставить светодиод мигать можно с помощью задержки delay или через millis. Если у вас остались вопросы по данной теме, то можете их смело оставлять в комментариях к этой записи. Мы постараемся ответить на все вопросы по мере поступления. Желаем успехов в освоении программирования Arduino.
Как подключить светодиод к Ардуино
Рассмотрим, как подключить светодиод к Ардуино Нано через резистор. Мигание светодиодом — это самая простая программа (скетч) для начала работы с микроконтроллером. Далее размещена подробная инструкция по сборке схемы со светодиодом и резистором, правила загрузки программы в плату Arduino UNO и приведен скетч для мигания светодиода на Arduino UNO с комментариями.
Назначение и устройство светодиодов
Светодиоды — это полупроводниковые элементы, которые служат для индикации и освещения. Они имеют полярность (+ и —) и чувствуют направление движения постоянного тока. Если подключить светодиод неправильно, то постоянный ток не пройдет и прибор не засветится. Кроме того, светодиод может выйти из строя при неправильном подключении. Анод (длинная ножка светодиода) подключается к плюсу.
Фото. Устройство светодиода и резистора в разрезе
В этом простом примере показано, как с помощью платформы Arduino заставить мигать светодиод. Для начала мы соберем простую схему на макетной плате, подключив светодиод к цифровому выходу микроконтроллера Ардуино (входы и выходы на плате еще называют Pin). Загрузив скетч (так называют программу для Ардуино), вы поймете, как пользоваться и работать с платой Arduino UNO.
Как подключить светодиод к Arduino Uno / Nano
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- несколько светодиодов и резисторов 220 Ом;
- провода «папа-папа».
Для надёжной сборки устройств создаются печатные платы, на что уходит много времени. Для быстрой сборки электрических схем без пайки используют макетную плату (breadboard). Под слоем пластика на макетной плате находятся медные пластины-рельсы (дорожки), выложенные по простому принципу (смотри фото). Дорожки служат для создания контакта между радиоэлементами и проводами.
Быстрая сборка схем на макетной плате
Соберите схему подключения светодиода к Arduino, как на фото ниже
Для чего светодиод включают к Ардуино с резистором? Дело в том, что в светодиоде стоит кристалл который боится больших токов. Резистор призван ограничивать силу тока (Амперы), чтобы светодиод не перегорел. Большой ток губителен для светодиода, меньший ток (благодаря подключению резистора) обеспечивает длительную работу. Чтобы подключить светодиод к Ардуино без резистора, используйте 13 порт.
Подключите плату Arduino к компьютеру при помощи USB провода
Если у вас не установлена программа Arduino IDE, то скачайте последнюю версию на официальном сайте www.arduino.cc. С помощью USB кабеля производится запись программ, также плата получает питание от компьютера. Если требуется автономная работа электронного устройства, то плату можно запитать от батарейки или блока питания на 7-12 В. При подаче питания на плате загорится светодиод индикации.
Откройте программу Arduino IDE и проверьте подключение платы
Шаг 1. Зайдите в основном меню «Инструменты -> Плата». Если плата Arduino определилась неправильно, то выберите необходимый тип, например, Arduino Uno.
Шаг 2. Установите порт (кроме COM1) подключения в меню «Инструменты -> Порт», так как при подключении Ардуино к ПК создается виртуальный COM-порт.
Убедитесь, что программа определила порт подключения Ардуино
Скетч для включения светодиода от Ардуино
Подключение светодиодов к другим портам производится по схеме, размещенной выше (подключение резистора к светодиодам также необходимо). А в скетче требуется изменить номера портов, к которым подключены светодиоды. При этом сколько вы используете светодиодов в схеме, столько и раз следует прописать команды pinMode .
Скопируйте код под фото и вставьте свой первый скетч в программу
Перед загрузкой программы в микроконтроллер можно выполнить проверку (компиляцию), на наличие ошибок в коде. В случае обнаружения ошибки — будет получено сообщение в нижнем окошке Arduino IDE. В любом случае, при загрузке скетча, сначала происходит проверка и компиляция программы. При компиляции происходит перевод программы в двоичный код, понятный микроконтроллеру.
Загрузите скетч в Arduino, нажав на кнопку «Вгрузить» (смотри фото)
Перед загрузкой программы в микроконтроллер, потребуется сохранить скетч на компьютере. Нажмите «Сохранить» в появившемся окне и начнется загрузка.
Перед загрузкой программы, потребуется сохранить скетч