Работа с модулем восьми светодиодов RGB типа WS2812
1 августа 2022
Данный модуль, представленный в виде платы, на которой размещено 8 RGB светодиодов типа WS2812. Скорей всего Вы уже знаете, в чем разница светодиодов и RGB светодиодов.
На фото представленному ниже, конструкция обычного RGB светодиода, который Вы можете приобрести в нашем магазине:
Данный светодиод может светиться одним з трех цветов (красный, зеленый, синий). Из трех цветов Вы можете получить 16 777 216 оттенков. Согласитесь, число достаточно большое.
В нашем модуле используют не обычные RGB светодиоды, а типа WS2812B. В каждом таком светодиоде есть встроенный контролер ШИМ, и возможно управлять каждым светодиодом отдельно, потому что каждый из них имеет адрес. Возможно где-то уже встречали понятие «адресный светодиод», так вот это светодиод, который имеет свой адрес и помощью данного адреса мы можем обращаться к светодиоду.
Наш модуль имеет следующий вид, и на обратной стороне платы имеет два участка подключение (слева и справа).
Подключение модуля RGB к отладочной плате Ардуино, представлено в таблице ниже, обратите внимания, что подключать стоит именно к ШИМ порту, со значком “~”.
RGB |
Arduino |
GND |
GND |
IN |
~5 |
VCC |
|
GND |
GND |
Область применения адресных, то есть управляемых светодиодов достаточно огромная. К примеру, их можно использовать в различных рекламных вывесках, домашнем или офисном интерьере. К данному модулю можно подключить точно такое же модуль, что расширить количество адресных светодиодов, возможно подключать и другие светодиодные ленты (главное, чтобы был одинаковый тип светодиода, и внести правки в код).
После успешного подключения модуля к плате Арудино, нам необходимо написать и загрузить программу. Время написания программы может занять много вашего времени, так как все зависит от постановленной задачи в проекте и от ваших навыков в программирование. Вы можете обратиться в RoboStore и мы поможем написать Вам программу.
Нам необходимо скачать библиотеку FastLED_NeoPixel, использование готовых библиотек гораздо упрощает написания кода.
Скачать библиотеку для RGB
Пример программы текста, можно скачать тут:
Пример программы
Видео роботы данного скетча:
Все необходимое Вы можете приобрести в нашем – интернет-магазине RoboStore.
Поделиться
Поделится
Поделится
Новый комментарий
Войти с помощью
Отправить
Ручной энкодер инкрементный, он же датчик угла поворота на 100 тактов. Недообзор.
Ручной энкодер, он же ручной генератор импульсов (РГИ) — электромеханическое устройство, которое преобразует угловое положение или движение вращающейся ручки, в электрические выходные сигналы.
Помаленьку готовлюсь к очередному долгострою, когда же я его доделаю большому проекту.
И пока я разгребаю сделанные по ходу пьесы фото, мы будем рассматривать кое-какие интересные железки.
Внешний вид
Упакован герой обзора в картонную коробку.
Какая интересная коробочка
Энкодер в блистере, до стенок коробки хороший зазор, неплохо упаковано.
А вот и сам герой обзора.
Энкодер массивный, чувствуется вес — 178 г. Щелчки при повороте четкие.
Подключение проводов осуществляется клеммами под винт. У нас простой энкодер, с двумя каналами A и B. Есть аналогичные модели с 6 клеммами — в них используется дифференциальный сигнал.
Продавец заботливо предоставил все необходимые размеры:
Разборка
Приступим к разборке. Откручиваем 3 крепежных гайки,
уплотнительное кольцо и пластиковую защитную крышку, выкручиваем ручку.
Плата сидит на шпеньках, аккуратно приподнимаем.
На диске видим отпечатки пальцев сборщика.
Очевидно, что для определения угла поворота используются 2 фотодатчика.
Картинка из wikipedia, показывающая как оно работает.
Данные сигналы элементарно кодируются в бинарном виде:
Зная текущее и предыдущее значения A и B можно определить направление вращения энкодера:
По теме можно почитать Efficiently Reading Quadrature With Interrupts, Ардуино головного мозга: импульсный датчик положения, Подключение Энкодера К Arduino.
Тестирование
Подключаемся к логическому анализатору.
Крутим ручку с разной скоростью.
Смотрим левое и правое вращение.
Посмотрим фронты чем есть (DSO138).
Спад несущественно растянут.
Какие могут быть проблемы у таких датчиков? Механические загрязнения, закрывающие сенсор или прорези диска. Для того и разбирал — продул внутренности и осмотрел на явные косяки.
Что еще? Положения механической трещетки не соответствуют прорезям оптического диска (диск криво приклеен). То есть выставляемое положение энкодера немного не соответствуют снимаемым показаниям (фаза сдвинута), и эта ошибка постепенно накапливается.
Тестирование простеньким скетчем для Arduino не выявило ложных срабатываний в обратном направлении — крутим ручку в одну сторону, счетчик идет только в одну строну. Момент смены направления обрабатывался четко.
В прямом направлении на ложные двойные срабатывания тестировал, пока было терпение. Либо мне повезло с датчиком, либо мне просто терпения не хватило.
Может еще и трещетка нечетко работать — там пружинка и диск с прорезями, как шестеренка. Решается чисткой, подгибанием пружинки. Либо замена пружинки, но это трудновыполнимо.
Данных проблем при первоначальном тестировании выявлено не было. На этом этапе пока остановимся.
Товар приобретен самостоятельно
Как использовать RGB-светодиод с Arduino
В этом уроке по Arduino мы узнаем, как использовать RGB-светодиод с Arduino. Также мы научимся настраивать цвет светодиода RGB. Давайте начнем кодировать Arduino, чтобы сделать RGB-светодиод Awesome.
Светодиод RGB состоит из трех цветов в комбинациях, но мы можем получить больше цветов, используя эти цвета, т. е. красный, зеленый и синий.
Вот еще несколько уроков для вас:
Содержание
Что такое светодиод RGB?
Светодиоды RGB содержат красные, зеленые и синие элементы в одном корпусе. RGB-светодиод состоит из четырех штырьков с соединенными вместе анодами (известными как общий анод) или катодами, соединенными вместе (известными как общий катод).
В основном эти типы светодиодов RGB используются в лампах, декоративных светильниках и гирляндах.
В этом уроке мы будем использовать светодиод RGB, который имеет общий катод и разные аноды: красный, зеленый и синий.
Необходимые компоненты
- Светодиод RGB
- 3 резистора (300 Ом – 1 кОм)
- Arduino Uno
- Макетная плата
- Перемычки
Штыревые соединения
Мы используем светодиод RGB с общим катодом. Подключите катод светодиода RGB, который является более длинной ножкой, к заземлению (GND) Arduino, а остальные три ножки — к контактам 3, 5 и 6 Arduino вместе с резистором 220 Ом на каждой ножке. Резистор предотвратит протекание тока и разрыв светодиода. См. схему ниже.
Принципиальная схема
Код для RGB-светодиода Arduino
Скопируйте приведенный ниже код и загрузите его на плату Arduino с помощью IDE.
Приведенный выше код работает следующим образом:
- Контакт 3 становится ВЫСОКИМ.
- Подождите 500 мс.
- Контакт 3 становится НИЗКИМ, а контакт 5 становится ВЫСОКИМ.
- Подождите 500 мс.
- Контакт 5 становится НИЗКИМ, а контакт 6 становится ВЫСОКИМ.
- Подождите 500 мс.
- Контакт 6 становится НИЗКИМ.
- Повторить с шага 1.
Выход
В приведенном выше примере у нас есть код Arduino для мигания светодиодом RGB. Светодиод RGB при мигании показывает только три цвета: красный, зеленый и синий.
Теперь мы хотим настроить цвет светодиода RGB, чтобы показать больше цветов. Мы используем функцию RGB_color , чтобы исследовать больше цветов.
Код для настройки цвета светодиода RGB
В приведенном ниже коде RGB_color(255, 0, 0) является функцией цветового кода, если есть определенный цвет, который вы хотите попробовать и создать, найдите себе сеть цветовую диаграмму, введя веб-цветовую диаграмму в вашу любимую поисковую систему.
Другой код для настройки цвета светодиода RGB
Выход
Устранение неполадок/ошибок
- Неправильное подключение светодиода, поэтому убедитесь, что подключение светодиода правильное.
- Используйте резистор, чтобы избежать разрыва светодиода.
- Соединение проводов может быть ослаблено.
Мигание светодиода с помощью Arduino UNO
Итак, вы здесь, потому что хотите начать изучать некоторые основы Arduino… Итак, давайте начнем с самого основного… нет, этот «учебник» на самом деле немного более базовый, чем то, что вы имеете в виду. Для этого требуется только следующее:
Иметь ЛЮБУЮ плату Arduino.
Установлены драйверы и необходимое программное обеспечение для платы, которую вы используете.
Есть макетная плата.
Имеют один светодиод.
Иметь один резистор (желательно 220 Ом).
И несколько соединительных проводов (М-М).
На самом деле это ВСЕ, что вам понадобится для моего второго урока. Просто следуйте рисункам и схемам ниже, и вы не заблудитесь на этом пути. В C… это язык, на котором вы будете программировать, вы должны помнить:
HIGH=ON
LOW=OFF
ОК! Итак, теперь мы готовы приступить к обучению HIGH/LOW.
В моих уроках вы всегда обнаружите, что я использую
ШАГ 1: «Макетная схема»
Посмотрите на схему ниже, как я подключаю это на макетной плате.
Теперь осталось подключить Arduino к + и Gnd, а затем запрограммировать!
Шаг 2: «Подключение к плате»
Этот шаг может быть немного сложным, так что будьте внимательны. На Duemilanove (тот, который я использую для этой демонстрации) есть — избегая аналогового входа и слотов питания — 16 контактов, к которым вы можете подключить свой светодиод. Итак, у вас есть контакты 0–13 (это 14 контактов, включая 0), один контакт Gnd и Aref. На данный момент мы будем использовать контакт Gnd (второй с последнего на вашей плате) и один контакт между 1-13. Важно помнить, какой контакт вы используете, потому что вам нужно определить его, когда вы программируете чип ATmega на плате.
Для этой демонстрации я выбрал контакт 5 для + (КРАСНАЯ перемычка) и контакт Gnd (ЧЕРНЫЙ/Земля) и соединил их следующим образом:
Шаг 3: «ПРОГРАММИРОВАНИЕ»
Теперь, когда мы все подключили, давайте запустим! Первое, что вам нужно сделать (вместо того, чтобы перепроверять, не собираетесь ли вы что-то закоротить), — это подключить плату к компьютеру. После того, как вы подключили плату, вы увидите фиксированный светодиод на контакте 9.начать мигать в течение нескольких секунд. Это означает, что плата работает правильно, и вы готовы запустить Arduino IDE.
Откройте Arduino IDE, и вы готовы начать программирование. Не забывайте, что вы пишете код на C, поэтому, прежде чем я начну писать команды, вы должны помнить: ОЧЕНЬ ВАЖНА ЧУВСТВИТЕЛЬНОСТЬ К РЕГИСТРУ!
Хотя другие языки программирования могут выдавать сообщения об ошибках, этот редактор намного сложнее. На самом деле, это не так удобно для пользователя, как вы можете себе представить, и если вы похожи на меня, то есть больше интересуетесь результатами, а не деталями, вам может быть трудно понять ошибки, которые вы можете совершить. или будет получать.
Итак, давайте взглянем на кое-что действительно интересное, что программисты Arduino установили в свой редактор, чтобы таким людям, как мы, было легче узнать, когда мы делаем ошибки. Если вы вводите команду, которая не распознается системой, команда остается в обычном цвете текста.
Ниже показаны два примера правильных и неправильных команд. Прежде чем вы на самом деле прочитаете ниже и поймете, какая ошибка была намеренно допущена в командах, вы должны попытаться найти ее самостоятельно. Так что смотрите внимательно.
Во второй команде – Void loop () – команда должна быть void loop, а не Void с большой буквы V. Вот так легко ошибиться в Редакторе. Так что обратите внимание. И помните, что хорошие руководители по программированию создают хорошие программы, особенно если вы работаете над довольно большой программой для своих проектов.
Итак, теперь мы знаем, как избежать нескольких основных ошибок, мы усвоили несколько действительно хороших принципов программирования и знаем, что ПЕРВЫЕ две команды, о которых мы говорили, это:
void setup ()
{
}
void loop()
{
}
Это 2 САМЫЕ основные команды, которые должны присутствовать с чем-либо внутри них или без них, иначе ваша программа не запустится.
Итак, мы поговорили о командах настройки и цикла, теперь давайте пропустим ток через наш светодиод. Помните, мы подключили КРАСНЫЙ провод к контакту 5, а ЧЕРНЫЙ к Gnd.
Первое, что нам нужно сделать, это определить, где находится светодиод. Для этого мы используем целое число ( >int) cmd следующим образом:
Теперь давайте немного проанализируем это.
Таким образом, у нас есть >int ledPin = 5:
Здесь следует отметить две вещи:
«ledPin» можно изменить на любое имя, которое вы хотите, если вы его помните, и пока 5 — это контакт, который вы подключили КРАСНУЮ перемычку к.
И «;» (Точка с запятой). Сейчас это тоже важно. Просто помните, что в конце каждой строки ВНУТРИ КОМАНДЫ вам нужно добавить «;». Есть исключения из этого, и вы узнаете их по ходу дела.
Теперь мы определили контакт, по которому должен течь ток. Что будет дальше?
Теперь нам нужно определить, в каком РЕЖИМЕ будет работать пин. В среде Arduino есть 2 вида режимов, INPUT/OUTPUT, оба из которых должны быть написаны ЗАГЛАВНЫМИ БУКВАМИ! Чтобы определить режимы, мы используем команду >pinMode(ledPin, OUTPUT).
Мы используем ВЫХОД, потому что пытаемся управлять светодиодом. Светодиод — это устройство ввода, поэтому контакт должен быть выходом. Если бы мы пытались воспринять кнопку, устройство вывода, мы бы использовали INPUT во втором поле pinMode.
В итоге команда выглядит так:
ОЧЕНЬ ВАЖНО
Обратите внимание, как команда pinMode расположена внутри {} для команды настройки void? >pinMode cmd всегда должен быть там, так как вы определяете настройки для скетча/программы, которую собираетесь загрузить.
Теперь, когда мы закончили с определением режима вывода, давайте посмотрим на некоторые результаты. Зажжем светодиод.
Чтобы зажечь светодиод, нам нужен какой-то переключатель. Что-то, что вызовет включение светодиода (HIGH или ON). Поскольку контакт, который мы используем, является ЦИФРОВЫМ контактом, нам нужно использовать команду digitalWrite, синтаксис которой:
.Давайте попробуем загрузить это на доску и посмотрим, что получится! Для загрузки убедитесь, что в инструментах выбрана правильная плата и COM-порт, затем нажмите кнопку со стрелкой рядом с галочкой.
Светодиод должен загореться (если нет, проверьте проводку). Теперь, чтобы отключить его, вам нужно только добавить LOW вместо HIGH.
Шаг 4:
Теперь я познакомлю вас с новой командой, которая позволит вам делать довольно крутые вещи, если вы можете смотреть немного нестандартно и проявлять творческий подход, отложите. Так что в основном то, что делает задержка, именно то, что она говорит. Он задерживает действие, которое вы уже определили. Так, например, в скетче, который мы составили выше, если мы добавим задержку, скажем, 500 мс (миллисекунд), а затем переключим светодиод с ВЫСОКОГО на НИЗКИЙ с другой задержкой той же продолжительности, то есть:
Вот что мы сделали внутри цикла:
Мы включили светодиод с помощью HIGH,
Мы допускаем задержку 500 мс (1/2 с), Светодиод выключен с помощью LOW,
Мы допускаем задержку в 500 мс (1/2 с),
Вопрос: Что произойдет, если вышеуказанное НЕ будет расположено внутри пустого цикла CMD7?
Если бы приведенный выше код не находился внутри цикла, то он длился бы всего 1 секунду = 1000 миллисекунд. Программа бы включила светодиод один раз, а затем выключила бы его, а затем оставила бы его выключенным. Попробуй это!
Прочитав этот очень простой учебник, я надеюсь, что вы поняли, как использовать цикл, задержку, команды HIGH и LOW, а также команды integer и digitalWrite.