No Image

Ардуино мигает светодиод l

706 просмотров
12 декабря 2019

Эта инструкция для тех, у кого впервые появилась плата Arduino, и при этом нет знаний в его программировании. Первое знакомство начинается практически всегда с самых элементарных вещей. А самое простое в нашем случае, это мигание на Arduino (Ардуино) светодиодом L на плате.

Далее в меню опять открываем Инструменты > Порт > COM4 (или тот который у вас указан)

В меню выбираем: Файл > Примеры > Basics > Blink (и нажимаем на Blink)

В открывшемся окне прокручиваем код скетча в самый низ, и меняем значения delay (1000); на то которое вам нужно. Минимальное значение моргания светодиода которое заметно глазу, по крайней мере моему — это 20 миллисекунд.

Теперь загружаем скетч в ардуинку, нажав в верхнем левом углу стрелку и ждем окончания загрузки, после чего она сразу начнет исполнение скетча.

Я поставил резистор для примера на 100 ом, какой был под рукой ).

Мигание светодиодом на Arduino – первое, что делают на этой платформе начинающие ардуинщики. Проекты, связанные со светодиодами – самые популярные уроки, с которых начинается большинство учебников. В этой статье мы с вами узнаем, как сделать своими руками маячок и мигалку на Ардуино. Для работы вам потребуется плата Arduino Uno, Nano, Pro Mini или Mega, а также установленная на компьютер программа Arduino IDE.

Мигаем встроенным светодиодом

Самый первый проект всегда лучше делать как можно более простым и понятным. Лучше всего сначала просто сообщить миру о том, что программа работает. В других языках программирования это достигается выводом текста на экран фразы «Hello, World» , которая стала по-настоящему культовой. С ее помощью новые программы приветствуют мир уже на протяжении половины столетия.

На плате Ардуино нет встроенного экрана, поэтому мы не можем вывести нашу гениальную надпись. Конечно, можно было бы воспользоваться экраном компьютера, но тогда первый проект получится слишком сложным. Именно поэтому почти все проекты для начинающих основаны на использовании светодиодов. Ими мы будем мигать, учась основам схемотехники и программирования.

Встроенный светодиод в Ардуино Uno, Nano и Mega

Почти на каждой плате Arduino находится несколько встроенных светодиодов, предназначенных для индикации. Один из них подключен к пину 13 и вы можете управлять им программно – включать и выключать. Более подробно об этом написано в нашей статье, посвященной светодиодам.

Мы должны написать и загрузить в ардуино скетч, который будет мигать встроенным в плату ардуино светодиодом – включать его каждую секунду, а потом на секунду выключать.

Вам понадобится: ничего, кроме платы ардуино. Сложность: простой проект.

Что мы узнаем:

  • Как мигает светодиод.
  • Что такое скетч и как написать программу.
  • Как включить и зажечь светодиод.
  • Как выключить светодиод.
  • Как сделать задержку в программе.

Вопросы, на которые вы уже должны знать ответы:

Алгоритм программы очень прост.

  1. Мы должны подать напряжение на светодиод (на тот пин, к которому подсоединен светодиод, в нашем случае, 13).
  2. Затем ждем некоторое время. Например, секунду.
  3. После чего убираем напряжение.
  4. И опять немного ждем, чтобы глаз мог заметить, что света нет.
  5. Начинаем все с первого пункта

На русском все выглядит очень просто. Осталось только перевести на язык, понятный Ардуино. Мы заменяем каждую строчку нашего алгоритма командой.

  1. Включить – команда digitalWrite
  2. Подождать – команда delay
  3. Выключить – команда digitalWrite
  4. Подождать – команда delay

Для того, чтобы записать все эти команды, а потом перевести их в машинопонятный язык и загрузить в микроконтроллер мы используем программу Arduio IDE. В ней мы пишем наш код (или вставляем готовый из примера), в ней же нажмем несколько кнопок для проверки, трансляции и загрузки программы в Ардуино.

Читайте также:  Захваты для кузовных работ

Давайте соберем все, что нужно, вместе в одной инструкции.

Пошаговая инструкция

Выполняем действия по шагам – в результате обязательно получим результат.

  1. Берем плату Arduino UNO. Убеждаемся, что на ней есть встроенный светодиод.
  2. Подключаем плату Arduino к компьютеру через USB-кабель. В результате должны загореться лампочки.
  3. Открываем на компьютере программу Arduino IDE (вы уже должны знать, как это делается или прочитайте статьи на нашем сайте по ссылкам выше).
  4. Проверяем, что ардуино подключился: найдите в меню «Инструменты», подменю «Порт». Оно должно быть активным. Нажмите на этот пункт и посмотрите список портов. Один из них должен быть отмечен галочкой. Если этого не произошло, выберите порт с самым большим номером и отметьте его. Если это не помогло – смотрите раздел с описанием типичных проблем чуть ниже.

    Проверка порта Ардуино
  • Открываем меню Файл. В нем находим подменю «Примеры», и в нем подменю Basics. Находим в открывшемся списке меню строчку Blink и нажимаем на нее. Должно открыться отдельное окно Arduino с текстом программы (в самом верху будет серый текст). Открываем пример Blink в Ардуино IDE
  • Найдите в меню кнопку “загрузить скетч” (со стрелочкой) и нажмите ее. Начнется процесс проверки (компиляции) скетча и загрузки в плату.
  • После того, как скетч загружен и в статусном окне внизу появится надпись «Загрузка завершена», можно проверять результат. Посмотрите на плату – вы должны увидеть мигающий огонек. Значит, мы сделали это!
  • Проверьте, что программа работает как надо – замерьте паузы между включением и выключением.
  • Поздравляем! У вас получилось реализовать ваш первый проект на Ардуино. Если все мигает так, как надо. Теперь можем переходить к анализу программы и сбору электронной схемы с отдельным светодиодом. Если же что-то не получилось, давайте разберемся, почему.

    Если что-то пошло не так

    • У вас нет платы контролера Ардуино. Это большая проблема, т.к. без платы освоить адуино практически невозможно. Проблему можно решить, купив контроллер в одном из интернет-магазинов. Другим вариантом может стать один из сервисов, имитирующих работу ардуино. Например, Tinkercad.
    • Плата не находится. Эта проблема может возникнуть, если у вас нет USB драйвера для платы. Посмотрите эту статью с описанием того, что можно сделать. В ряде случаев также помогает отключение антивирусов. Если ничего не помогает, попробуйте поменять плату, а затем и компьютер (подключить ардуино к другому компьютеру). Гораздо меньше проблемы возникает при работе с ардуино в среде Windows.
    • Нет программы. Ситуация практически невероятная, ведь примеры всегда идут вместе с программой Arduino >Программа и скетч мигающего светодиода

    Давайте теперь рассмотрим программу, которую мы загрузили из примеров и проанализируем.

    Пример программы мигалки Blink

    Во-первых, давайте пока уберем большой блок комментарий – они обозначены в Arduino IDE серым цветом. На данном этапе они немного мешают нам, хотя они крайне важны и вы всегда должны писать комментарии к своим программам.

    Программа Blink без комментариев

    У нас осталась часть кода и сразу обратите внимание на два блока со словами setup и loop. Это две функции, которые вызываются всегда, когда запускается наш скетч. Блоки ограничены фигурными скобками – все, что внутри них, принадлежит блоку. Более подробно о них написано в статье по ссылке.

    Если вы обратите внимание на блок loop, то именно в нем и сосредоточены наши команды, управляющие светодиодом:

    Функции setup и loop в коде программы Blink

    digitalWrite – это название функции, которая отвечает за подачу напряжения на пин. Подробнее о ней можно прочитать в отдельной статье о digitalWrite.

    LED_BUILDIN – это название внутреннего светодиода. В большинстве плат за этим названием прячется цифра 13. Для плат Uno, Nano можно смело писать 13 вместо LED_BUILDIN.

    HIGH – условное название высокого уровня сигнала. Включает светодиод. Можно заменить цифрой 1.

    LOW – условное обозначение низкого уровня сигнала. Выключает светодиод. Можно заменить цифрой 0.

    delay – функция, которая останавливает выполнение скетча на определенное время. Крайне нежелательно использовать ее в реальных проектах, но в нашем простом примере она отработает замечательно. В скобках мы указываем цифру – это количество микросекунд, которые нужно ждать. 1000 – это 1 секунда. Подробнее можно прочитать в нашем материале о delay() .

    Читайте также:  Блочно модульные станции очистки сточных вод

    Как только программа дойдет до конца, контроллер перейдет в начало блока loop и будет выполнять все команды заново. И так раз за разом, целую вечность (пока есть свет). Наш светодиод мигает без остановки.

    Проект “Маячок” с мигающим светодиодом

    В этом проекте мы с вами практически повторим предыдущий, но при этом добавим самую настоящую схему. Подключим светодиод и токоограничивающий резистор. Чтобы не повторяться, отправим вас за подробным описанием в статью о правильном подключении светодиода к плате Ардуино.

    • Плата Arduino Uno или Nano
    • Макетная плата для монтажа без пайки
    • Резистор номиналом 220 Ом
    • Светодиод
    • Провода для соединения

    Сложность: простой проект.

    • Как подключить светодиод к ардуино.
    • Повторим процедуру загрузки скетча в микроконтроллер.

    Для монтажа элементов мы будем использовать макетную плату. Если вы еще не очень хорошо понимаете, что это такое, то рекомендуем предварительно ознакомиться с отдельной статьей, посвященной макетным платам.

    Соедините все элементы согласно следующей схемы для Arduino UNO. Для Arduino Nano светодиод подключается по той же схеме – к пину 13.

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

    Если вы не меняли программу с предыдущего шага, то можно считать, что все сделано. Подключаем плату к компьютеру – светодиод должен немного помигать хаотично, а затем с точно установленным периодом.

    Если вы еще не загружали программу, то вам надо повторить ту же последовательность действий, что и для работы со встроенным светодиодом. Загружаем пример, затем программу в контроллер и наблюдаем за результатом.

    Проект “Мигалка”

    Давайте попробуем сделать проект посложнее. Добавим два светодиода, которые будут мигать поочередно.

    • Плата Arduino Uno или Nano
    • Макетная плата
    • Два резистора 220 Ом
    • Два светодиода. Если есть возможность, лучше взять синий и красный.
    • Провода для соединения.

    Сложность: простой проект.

    • Как подключить светодиод к ардуино.
    • Как изменить стандартную программу мигалки.
    • Повторим процедуру загрузки скетча в микроконтроллер.

    Принцип подключения при этом не меняется. Мы используем два пина платы контроллера для соединения со светодиодами – 13 и 12. Можно использовать следующую схему:

    Схема подключения светодиодов проекта Мигалка

    Положительные контакты светодиода соединяем с цифровыми пинами, отрицательные – с GND.

    Программирование мигалки

    В скетч с мигающим светодиодом нам надо будет внести определенные изменения. Алгоритм действий таков:

    • Включаем синий светодиод
    • Ждем какое-то время (1 секунду)
    • Выключаем синий светодиод и одновременно включаем красный
    • Ждем какое-то время (1 секунду)
    • Повторяем еще раз

    Попробуйте написать программу самостоятельно, основываясь на опыте, полученном из предыдущего проекта. Если возникнут сложности, можно обратиться к примеру далее по тексту.

    В этой программе нам опять встречается блок команд loop. В нем мы выполняем включение и выключение пинов с помощью digitalWrite. Никаких сложностей это вызвать не должно.

    Давайте поговорим более подробно о блоке setup. Мы видели его и в прошлом примере. Внутри setup обычно располагаются команды инициализации, которые запускаются только один раз, в момент подключения контроллера к питанию.

    В примерах с мигалками мы устанавливаем пины в нужный режим – OUTPUT. В этом режиме мы работаем с внешними устройствами, получающими питание с данного пина ардуино. Например, наш светодиод ничего не передает в плату, он использует пин 13 для того, чтобы включиться. Поэтому мы устанавливаем режим OUTPUT – “на выход”. По умолчанию все пины находятся в режиме INPUT, оптимальном для подключения датсиков. Более подробную информацию вы можете найти в описании функции pinMode.

    Надеемся, процедура проверки скетча и прошивки контроллера не вызвала каких-то трудностей. Запустите программу и вы увидите, как весело перемигиваются светодиоды на плате. Поздравляем с написанием своих первых проектов на Ардуино!

    Заключение

    В этой статье мы с вами узнали о том, как мигать светодиодами – работать с внешними и внутренним светодиодом, встроенным в плату контроллера Arduino. Мы научились загружать программу из встроенных примеров, разобрались с внутренним устройством скетча. Узнали, как включается и выключается светодиод, как создается задержка в выполнении скетча.

    Мы также научились собирать электрическую схему со светодиодом на основе макетной платы и Arduino Uno. В схеме обязательно использование токоограничивающих резисторов. Все примеры и схемы подключения актуальны и для более миниатюрного аналога Uno – платы Arduino Nano.

    Читайте также:  Двигатель бензиновый 7 л с lifan 170f

    Надеемся, все у вас получилось и вы готовы к новым проектам со светодиодами – светофору и гирлянде!

    Мигание светодиода в Ардуино, что может быть проще и бесполезнее. На самом деле практическую пользу от этой простой функции можно найти.

    Бывает при программирование какого-нибудь устройства не хватает портов ввода-вывода микроконтроллера. Или из экономических соображений, а может нехватки места в корпусе, не хочется устанавливать дисплей, а как то сигнализировать о режимах работы устройства очень хотелось бы. Часто достаточно сигнализировать о этих режимах горением или миганием светодиода. А если режимов много?

    На мысль меня навела автомобильная сигнализация, в которой я как то программировал режим автозапуска. Там, чтобы установить, например, 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 функций выделяется слишком мало времени.

    Надеюсь, эта статья будет немного полезной для всех любителей мигать светодиодами в Ардуино и не только им.

    «>

    Комментировать
    706 просмотров
    Комментариев нет, будьте первым кто его оставит

    Это интересно
    Adblock detector