Последовательное включение светодиодов на ардуино

Урок 3. Два светодиода. Arduino UNO, уроки для начинающих.

Arduino UNO является самой простой и распространенной платой для новичков. Это связано с достаточно большим форм-фактором отладочной платы, что позволяет без проблем разобрать маркировку pin, производить подключение к плате без использования дополнительных шилдов или макетной платы. Поэтому самой распространённым запросом по урокам для изучения Arduino в поисковых системах: «Arduino UNO уроки для начинающих».

Сегодня в Arduino уроке рассмотрим подключение двух светодиодов и напишем два варианта кода, которые позволят поочередно мигать светодиодами.

Схема подключения двух светодиодов к Arduino UNO.

Схему подключения двух светодиодов к Arduino UNO можно сделать с нуля или использовать схему подключения, из второго урока. Для этого в TinkerCad достаточно сделать дубль второго урока. Чтоб сделать дубль наведем курсор мыши на урок, в правом верхнем углу появится шестеренка, при нажатии на которую появляется меню. В меню нажимаем на кнопку «Дублировать»

После чего откроется дубль урока 2, в котором делаем изменение схемы. Добавим второй светодиод красного цвета и соединим все по схеме:

Отлично. Осталось написать скетч для управления двумя светодиодами.

Цель Ардуино урока: научиться подключать несколько светодиодов к плате Arduino UNO. Изучить работу с булевыми переменными.

Переменный тип boolean.

Логический (булевый) тип данных — boolean. Может принимать одно из двух значений true или false. boolean занимает в памяти один байт.

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

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

Строчка кода, которая приведена выше, меняет булевую переменную с true на false и наоборот с false на true.

Мигаем двумя светодиодами с помощью Arduino UNO.

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

Как видим, изменения в коде незначительные, и можно обойтись и без булевой переменной. Так зачем же она нужна?

Используя булевую переменную, мы сможем упростить алгоритм работы и уменьшить количество строк кода. Добавим переменную:

И добавим строку изменения значения булевой переменной. Данная строка меняет значение с ноля на логическую единицу. При следующем выполнении данной строки логическая единица меняется на логический ноль и так бесконечное количество раз.

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

Загружаем код в Arduino UNO.

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

Понравился Урок 3. Два светодиода. Arduino UNO, уроки для начинающих? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Источник

Работаем с множеством светодиодов

Мигать одним светодиодом не слишком интересно. В этом уроке мы рассмотрим работу с множеством светодиодов. Если проявить фантазию, то можно создавать интересные эффекты.

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

05.Control: ForLoopIteration

Для знакомства с циклом for в Arduino IDE есть пример File | Examples | 05.Control | ForLoopIteration.

Для эксперимента нам понадобятся шесть светодиодов. Соответственно, к ним нужно добавить шесть резисторов. Соединяем их как на рисунке. Задействуем цифровые выводы 2, 3, 4, 5, 6, 7.

Цель скетча — поочерёдно зажигать и гасить светодиоды в одном направлении, а затем в другом.

Доказательство, что код работает.

05.Control: Arrays

Обращаться к каждому светодиоду можно не только по очереди в цикле, но и через массив. Использование массивов даёт больше гибкости. Посмотрим на примере File | Examples | 5.Control | Arrays. Схема остаётся прежней из предыдущего примера.

Массив объявляется с помощью квадратных скобок, а затем к переменной массива обращаются, указывая в квадратных скобках индекс массива, который начинается с 0. Таким образом, чтобы обратиться к первому элементу массива, следует писать ledPins[0] и т.д. Комментарии к скетчу смотрите в предыдущем примере.

Если вы замените строку int ledPins[] = <2, 7, 4, 6, 5, 3>; на int ledPins[] = <2, 3, 4, 5, 6, 7>;, то получите точно такое же поведение светодиодов из предыдущего примера с циклом for, когда светодиоды загораются и гаснут по очереди. Но использование массива позволяет поменять начальное положение светодиодов, не меняя остальной код. И вы можете только в одном месте менять начальные позиции для запуска волны. Например, зададим массив через одного: .

Бегущие огни

Ещё один вариант бегущих по порядку огней. На этот раз уместим код в один цикл for, добавив переменную, следящую за направлением движения.

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

07.Display: barGraph (Световая шкала и потенциометр)

Рассмотрим пример с использованием светодиодной шкалы и потенциометра — Examples | 07.Display | barGraph. Если световой шкалы нет, то замените на 10 обычных светодиодов.

Изменяя вручную напряжение при помощи потенциометра, мы будем выводить информацию на световую шкалу.

Добавим на схему потенциометр. Средняя ножка ведёт на аналоговый вывод A0, а остальные две на 5 V и GND.

Данный пример интересен функцией map(), предназначенной для пропорционального перевода значений одного диапазона в значения другого диапазона. Мы знаем, что потенциометр может выводить результаты от 0 до 1023, а у нас всего десять светодиодов. Функция нам и поможет в преобразовании.

Все значения будут равномерно распределены от 0 до 10 (приблизительно 102 единицы потенциометра на одну единицу). Представим себе, что у нас потенциометр показывает значение 110 единиц, что соответствует значению 1 после применения функции. Первый светодиод в массиве имеет значение 0, т.е. меньше 1. Первый светодиод загорится, а остальные погаснут (если горели до этого). Поворачивая ручку потенциометра, мы увеличиваем значения и соответственно увеличиваем число включённых светодиодов. Поворачивая ручку потенциометра в обратную сторону, мы уменьшаем число включённых светодиодов. Чтобы следить за результатами, добавьте в код наблюдение за последовательным портом Serial

Модуль 2-цветного светодиода KY-011

Модуль выглядит как один светодиод, но на самом деле состоит из двух светодиодов разных цветов (красный и зелёный). и имеет три вывода. Применяется для индикации режима работы прибора, показа фаз протекания контролируемого процесса и позволяет экономить площадь передней панели прибора. Красно-зелёный светодиод имеет четыре состояния: красное свечение, зелёное, оранжевое и выключен. Оранжевое свечение будет при одновременном включении красного и зелёного полупроводников. Пример реализации: зелёный свет – прибор готов к работе, красный – ожидание, оранжевый — промежуточный.

Контакт S предназначен для соединения с общим проводом схемы, отрицательный полюс питания, средний контакт – красный источник света. При работе с модулем следует использовать резисторы (напр, 330Ω).

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

Скетч, в котором используем все доступные значения.

Модуль 2-цветного светодиода KY-029

Модуль KY-029 с общим катодом похож на модуль KY-011, только вместо светодиода на 5 мм используется двухцветный светодиод на 3 мм (зелёный и красный).

У модуля три вывода: (GND) — общий катод светодиодов, средний контакт — анод (+) красного светодиода, «S» — анод (+) зелёного светодиода.

Скетч используйте от модуля KY-011.

Семицветный светодиодный модуль KY-034

Модуль состоит из печатной платы, трёх выводов, сопротивления 10кОм (код SMD-резистора 103) и семицветного светодиода.

Семицветный мигающий светодиод имеет всего два контакта (плюс и минус). Достаточно добавить источник питания и светодиодный модуль будет мигать всеми цветами радуги в разных комбинациях. Происходит эта магия за счёт миниатюрной микросхемы, которая встроена в светодиод.

Программирования не требуется. Просто подключаем вывод к GND и S к 5V. При желании можете подключить не к питанию, а к цифровому пину Arduino и управлять включением и выключением светодиода (например, скетч Blink).

Входит в состав набора Набор из 37 датчиков

Источник

Чарлиплексинг (Charlieplexing) в Arduino – управление 12 светодиодами с 4 контактов

Чарлиплексинг (Charlieplexing) – это способ управления большим числом светодиодов с помощью использования небольшого числа контактов ввода/вывода. Чарлиплексинг во многом похож на обычную технологию мультиплексирования, однако в нем для значительного уменьшения числа используемых контактов используют трёхзначную логику (высокий уровень, низкий уровень и не подсоединен ни к чему). Цифровые выводы (контакты) большинства современных микроконтроллеров способны использовать подобную логику. Более подробно о чарлиплексинге можно прочитать в соответствующей статье Википедии.

Техника чарлиплексинга была названа по имени ее изобретателя – Чарли Аллена (Charlie Allen), который придумал ее в 1995 году. Примеры использования подобных мультиплексирующих (уплотняющих) технологий на нашем сайте уже рассматривались: в статье про часы на Arduino и 4-х разрядном семисегментном индикаторе и в статье про скроллинг текста на светодиодной матрице 8×8 с помощью Arduino.

Чарлиплексинг позволяет вам управлять N * (N – 1) светодиодами при использовании N контактов. Например, в этой статье мы рассмотрим управление 12 светодиодами с помощью 4-х контактов платы Arduino – 4*(4-1) =12.

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

Зачем использовать способ чарлиплексинга? Дело в том, что у платы Arduino достаточно мало свободных контактов (по сравнению с обычными микроконтроллерами) и при проектировании более менее сложных конструкций на Arduino, особенно с использованием ЖК дисплеев, светодиодных матриц и т.д., может возникнуть ситуация с нехваткой свободных контактов для подключения светодиодов. Вот в этом случае и может пригодиться технология чарлиплексинга, позволяющая существенно уменьшить число контактов, используемых для подключения светодиодов.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Светодиоды – 12 шт. (купить на AliExpress).
  3. Резисторы 330 Ом – 4 шт. (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Схема проекта

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

В представленной схеме 12 светодиодов подключены к 4 контактам платы Arduino с помощью светодиодов. К каждому контакту платы Arduino подключено 3 светодиода. Всего в схеме 6 групп светодиодов, по 2 светодиода в каждой группе. При этом в каждой группе светодиоды включены параллельно и встречно друг другу, поэтому в выбранный момент времени можно зажечь только один светодиод из группы.

К примеру, чтобы зажечь 1-й светодиод на представленной схеме, необходимо подать сигнал высокого уровня (HIGH) на контакт A и сигнал низкого уровня (LOW) на контакт B, а контакты C и D в это время должны быть отключенными (находиться в состоянии INPUT). Аналогичную процедуру необходимо проделать и для включения других светодиодов в схеме. Полная схема необходимых состояний контактов для включения светодиодов в нашей схеме показана на следующем рисунке.

После осуществления всех соединений в схеме у нас получилась конструкция, показанная на следующем рисунке. На этом рисунке отчетливо видно 6 групп светодиодов, в каждой группе светодиоды включены встречно друг другу. Питание на плату Arduino подается через USB порт.

Объяснение программы для Arduino

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

В самом начале программы определим (дадим осмысленные названия) всем используемым контактам. Также в этой части программы определим общее число светодиодов и состояние светодиода.

Источник

Adblock
detector