Любой цвет состоит из трех цветов: красного, зеленого и синего, с помощью простого светодиода RGB вы можете создать любой цвет. Но ограничение светодиода RGB заключается в том, что он имеет три отдельных светодиода внутри и требует трех контактов любого микроконтроллера для работы одного светодиода RGB. Так что соединить сотни светодиодов с одним микроконтроллером невозможно.
Чтобы решить эту проблему, Adafruit создала светодиодную ленту NeoPixel. Для управления несколькими светодиодами RGB NeoPixel требуется всего три контакта. Два контакта предназначены для питания и заземления, а один - для ввода данных (DI). Вывод данных IN используется для адресации и управления различными светодиодами в полосе с их цветом, яркостью и т. Д. Но для работы NeoPixels требуется микроконтроллер. Arduino очень часто используется с NeoPixel, поэтому сегодня мы научимся сопрягать светодиоды NeoPixel с Arduino. Вы можете узнать больше о NeoPixels на AdaFruit.
В этом проекте мы управляем светодиодом NeoPixel с помощью сенсорного экрана Arduino и TFT LCD. Мы создали 7 сенсорных кнопок разных цветов на 2,4-дюймовом TFT ЖК-дисплее, и когда мы нажимаем кнопку определенного цвета на ЖК-дисплее, светодиодная полоса NeoPixel загорается тем же цветом, что и эта кнопка. Здесь мы использовали светодиодную ленту NeoPixel Digital RGB из 30 светодиодов.
Светодиод NeoPixel RGB может светиться любым цветом, поэтому мы можем добавить больше кнопок на ЖК-дисплей, чтобы светодиоды светились большим количеством цветов при нажатии на эти кнопки. С помощью кодирования можно также добавить другие красивые эффекты и шаблоны. Вы можете построить полностью управляемую Arduino систему украшения с использованием светодиодов NEO Pixel и управлять этой системой с помощью ЖК-дисплея, расположенного рядом с вами.
Необходимые компоненты:
- Arduino Mega или любая другая модель Arduino
- 2,4-дюймовый TFT ЖК-экран с контроллером SPFD5408
- Светодиодная лента NeoPixel RGB
- Подключение проводов
- USB-кабель или адаптер 12 В, 1 А
Схема подключения:
Чтобы подключить NeoPixels Strip к Arduino Mega, просто подключите вывод Arduino 5V к выводу 5V NeoPixel, а GND Mega к GND NeoPixel, а затем подключите вывод NeoPixel DI (вход данных) к цифровому выводу № 36 Arduino Mega. Осторожно установите сенсорный экран TFT LCD Touch Shield над Arduino так, чтобы GND MEGA находился ниже GND LCD, а вывод 5V Arduino соединялся с выводом 5V LCD.
Следите за тем, чтобы при подключении к Arduino не переставлять контакты GND и 5V светодиодной ленты NeoPixel, в противном случае это может повредить светодиодную ленту NeoPixel. Также обратите внимание, что здесь мы использовали Arduino Mega, но вы можете использовать любую другую модель Arduino.
Подключение к Arduino светодиодной ленты NeoPixel RGB:
Контакты Arduino |
Булавки NeoPixel Strip |
5в |
5в |
GND |
GND |
Цифровой контактный номер 36 |
DI (данные в) |
Рабочее объяснение:
Работать с NeoPixel LED с Arduino очень просто. Просто нажмите сенсорную кнопку любого цвета на ЖК-дисплее, на котором вы хотите осветить светодиодную ленту NeoPixel. Светодиод загорится в соответствии с этим цветом. Код написан таким образом, что вы можете повторять эту задачу бесконечно, не перезагружая Arduino Mega. Вы можете проверить код и демонстрационное видео в конце этой статьи.
При нажатии любой кнопки на ЖК-дисплее данные отправляются в Arduino, а Arduino далее отправляет инструкции в NeoPixel Strip, чтобы загореться соответствующим образом. Например, светодиодная лента NeoPixel светится зеленым цветом, когда мы нажимаем зеленую кнопку на ЖК-дисплее, а светодиодная лента светится красным цветом, когда мы нажимаем красную кнопку и так далее.
Объяснение программирования:
Для взаимодействия TFT LCD с Arduino мы использовали несколько библиотек. Все библиотеки представлены в одном rar-файле и могут быть загружены по этой ссылке. Нажмите «Клонировать или загрузить», «Загрузить ZIP-файл» и добавьте его в папку библиотеки Arduino. Эта библиотека необходима для правильного функционирования TFT LCD.
#включают
Вы должны протестировать свой TFT-дисплей, записав Arduino с примерами кодов, приведенными в библиотеке, и проверить, правильно ли работают коды. Сначала проверьте графический тест, затем откалибруйте тест и, наконец, тест на рисование. Если вы обнаружите, что все функции работают нормально, начните с кода, приведенного в этом руководстве.
Также для правильной работы светодиодной ленты NeoPixel RGB вам понадобится еще одна библиотека, которую можно скачать отсюда.
#включают
Как описано ранее, цифровой вывод 36 MEGA подключен к выводу DI светодиодной ленты NeoPixel, как показано в коде ниже. Также количество светодиодов в полосе 30, как написано в коде:
#define PIN 36 #define NUM_LEDS 30
Цвета дисплея кнопок LCD обозначены некоторыми кодами. Вы можете изменить эти коды в соответствии с вашим ЖК-дисплеем.
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Некоторые параметры кнопок, такие как размер и положение, определены в коде:
uint16_t width = 0; uint16_t height = 0; uint16_t x = 40; uint16_t y = высота - 20; uint16_t w = 75; uint16_t h = 20;
Параметр h используется для регулировки размера кнопки на ЖК-дисплее. Если сделать 40, то размер пуговицы увеличится вдвое. Параметр y - координата y ЖК-дисплея.
Сенсорные кнопки обозначены цифрами, как показано в коде:
#define BUTTONS 9 #define BUTTON_Red 0 #define BUTTON_DarkRed 1 #define BUTTON_RED 2 #define BUTTON_DarkGreen 3 #define BUTTON_DeepRed 4 #define BUTTON_Blue 5 #define BUTTON 6 # определить BUTTON_Blue 5 #_define BUTTlue
Некоторые функции используются для передачи цвета из NeoPixel, например:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Чтобы найти цифровые значения RGB, которые нужно ввести для данного цвета, вы можете перейти по этой ссылке. Просто введите цвет, которым должна светиться ваша полоса NeoPixel, найдите значения RGB для этого цвета и введите указанные выше функции.
Функция void initializeButtons () используется для придания кнопкам текста и цвета, а также для размещения их в нужном месте на ЖК-дисплее.
void initializeButtons () {uint16_t x = 40; uint16_t y = высота - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
Функция void showCalibration () используется для рисования кнопок на ЖК-дисплее.
void showCalibration () {tft.setCursor (40, 0); для (uint8_t я = 0; я <8; я ++) {buttons.drawButton (); }}
Ниже приведен полный код Arduino для подсветки светодиодной ленты NeoPixel желаемым цветом. Код немного длинен, но прост, вы можете легко понять код.