Будь-який колір складається з трьох кольорів: червоного, зеленого та синього, за допомогою простого RGB-світлодіода ви можете генерувати будь-який колір. Але обмеження RGB-світлодіода полягає в тому, що в ньому є три окремих світлодіоди, і для роботи з одним RGB-світлодіодом потрібні три висновки будь-якого мікроконтролера. Отже, неможливо підключити сотні світлодіодів одним мікроконтролером.
Для подолання цієї проблеми Adafruit створив світлодіодну стрічку NeoPixel. Для керування декількома світлодіодами RGB NeoPixel потрібно лише три штифти. Два штифти призначені для живлення та заземлення, а один штифт для даних In (DI). Контакт Data 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 штифт (дані в) до цифрового штифта No 36 Arduino Mega. Акуратно встановіть сенсорний екран TFT LCD на Arduino так, щоб GND MEGA знаходився під GND РК, а 5-контактний штифт Arduino підключався до 5-контактного РК-дисплея.
Будьте обережні, щоб не замінити GND та 5-контактний штифт світлодіодної стрічки NeoPixel, підключаючи її до Arduino, інакше це може пошкодити світлодіодну стрічку NeoPixel. Також зверніть увагу, що тут ми використовували Arduino Mega, але ви можете використовувати будь-яку іншу модель Arduino.
Підключення до Arduino до світлодіодної стрічки NeoPixel RGB:
Шпильки Arduino |
Шпильки NeoPixel Strip |
5v |
5v |
GND |
GND |
Цифровий контактний номер 36 |
DI (дані в) |
Робоче пояснення:
Робота світлодіода NeoPixel з Arduino дуже проста. Просто торкніться сенсорної кнопки будь-якого кольору на РК-дисплеї, на якому ви хочете засвітити світлодіодну стрічку NeoPixel. Світлодіод світиться відповідно до цього кольору. Код написаний таким чином, що ви можете повторювати це завдання нескінченно, не перезавантажуючи Arduino Mega. Ви можете переглянути код і демонстраційне відео в кінці цієї статті.
Коли на ЖК-дисплеї натискається будь-яка кнопка, дані надсилаються на Arduino, а Arduino надалі надсилає інструкцію NeoPixel Strip, щоб відповідно засвітилася. Наприклад, світлодіодна стрічка NeoPixel світиться зеленим кольором, коли ми натискаємо зелену кнопку на РК-дисплеї, а світлодіодна стрічка світиться червоним кольором, коли ми натискаємо червону кнопку тощо.
Пояснення програмування:
Для інтерфейсу TFT LCD з Arduino ми використали деякі бібліотеки. Усі бібліотеки містять один файл rar і їх можна завантажити за цим посиланням. Клацніть на файл «Клонувати або завантажити» та «Завантажити ZIP» та додайте до папки бібліотеки Arduino. Ця бібліотека потрібна для нормальної роботи TFT РК-дисплея.
#включати
Вам слід протестувати свій TFT-РК-дисплей, спаливши Arduino із прикладами кодів, поданих у бібліотеці, і перевірити, чи працюють коди належним чином. Спочатку перевірте графічний тест, потім калібруйте тест і, нарешті, тест фарби. Якщо ви виявите, що всі функції працюють нормально, почніть з коду, наведеного в цьому посібнику.
Також для належного функціонування світлодіодної стрічки NeoPixel RGB вам знадобиться ще одна бібліотека, яку можна завантажити звідси.
#включати
Як описано раніше, цифровий контакт 36 MEGA підключений до DI-контакту світлодіодної стрічки NeoPixel, як показано в коді нижче. Крім того, кількість світлодіодів у смузі 30, так як написано в коді:
#define PIN 36 #define NUM_LEDS 30
Кольори дисплея кнопок РК позначаються деякими кодами. Ви можете змінити ці коди відповідно до вашого РК-дисплея.
#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 ширина = 0; uint16_t висота = 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_delightBUTBON
Деякі функції використовуються для випромінювання кольору з NeoPixel, наприклад:
void EmitCyan (); порожнеча EmitWhite (); порожнеча EmitGreen (); void EmitYellow (); порожнеча EmitPink (); порожнеча 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 інтервал_x = 5………………..
void show Функція Калібрування () використовується для малювання кнопок на РК-дисплеї.
void showCalibration () {tft.setCursor (40, 0); для (uint8_t i = 0; i <8; i ++) {button.drawButton (); }}
Далі Повний код Arduino для освітлення світлодіодної стрічки NeoPixel бажаним кольором наведено нижче. Код трохи довгий, але простий, ви можете легко зрозуміти його.