Всеки цвят се състои от три цвята: червен, зелен и син, с помощта на обикновен RGB LED можете да генерирате всеки цвят. Но ограничението на RGB LED е, че той има три отделни светодиода вътре и изисква три щифта на всеки микроконтролер, за да управлява един RGB LED. Така че не е възможно да свържете стотици светодиоди с един микроконтролер.
За преодоляване на този проблем Adafruit създаде LED лента NeoPixel. Необходими са само три щифта за задвижване на няколко RGB NeoPixel светодиода. Два щифта са за захранване и заземяване и един щифт е за входящи данни (DI). ПИН за данни IN се използва за адресиране и управление на различните светодиоди в лентата с техния цвят, яркост и т.н. Но той изисква микроконтролер, за да стартира NeoPixels. Arduino се използва много често с NeoPixel, така че днес ще се научим да свързваме светодиодите NeoPixel с Arduino. Можете да научите повече за NeoPixels в AdaFruit.
Тук в този проект ние контролираме NeoPixel LED с помощта на Arduino и TFT LCD сензорен екран. Създадохме 7 сензорни бутона с различни цветове на 2,4-инчов TFT LCD и когато докоснем бутона на определен цвят на LCD, LED лентата NeoPixel светва със същия цвят като този бутон. Тук използвахме NeoPixel Digital RGB LED лента от 30 светодиода.
NeoPixel RGB LED може да бъде осветена във всеки цвят и така можем да добавим още бутони на LCD дисплея, за да свети LED в повече цветове при натискане на тези бутони. Други красиви ефекти и модели също могат да бъдат добавени с помощта на кодиране. Можете да изградите пълна система за декорация, контролирана от Arduino, използвайки светодиоди NEO Pixel и можете да контролирате тази система, като LCD е разположен близо до вас.
Необходими компоненти:
- Arduino Mega или всеки друг модел Arduino
- 2,4 инчов TFT LCD щит с контролер SPFD5408
- NeoPixel RGB LED лента
- Свързване на проводници
- USB кабел или адаптер 12 V 1A
Верижни връзки:
За да свържете NeoPixels Strip към Arduino Mega, просто свържете Arduino 5V щифт към 5V щифт на NeoPixel и GND на Mega към GND на NeoPixel и след това свържете NeoPixel DI щифт (данни в) към Digital Pin № 36 на Arduino Mega. Внимателно монтирайте TFT LCD сензорния щит върху Arduino, така че GND на MEGA да лежи под GND на LCD и 5V щифт на Arduino да се свърже с 5V щифт на LCD.
Внимавайте да не си размените GND и 5V щифт на LED лентата NeoPixel, докато го свързвате към Arduino, в противен случай това ще повреди LED лентата NeoPixel. Също така имайте предвид, че тук сме използвали Arduino Mega, но можете да използвате всеки друг модел Arduino.
Връзки към Arduino към NeoPixel RGB LED лента:
Arduino Pins |
Иглите на NeoPixel Strip |
5v |
5v |
GND |
GND |
Цифров щифт № 36 |
DI (данни в) |
Работно обяснение:
Работата с NeoPixel LED с Arduino е много лесна. Просто докоснете сензорния бутон от всеки цвят на LCD дисплея, в който искате да свети LED лентата NeoPixel. Светодиодът ще светне според този цвят. Кодът е написан по такъв начин, че да можете да повтаряте тази задача безкрайно, без да се налага да нулирате Arduino Mega. Можете да проверите кода и демонстрационния видеоклип в края на тази статия.
Когато на LCD дисплея се почука някой бутон, данните се изпращат до Arduino и Arduino допълнително изпраща инструкции до NeoPixel Strip, за да светне съответно. Например LED лентата NeoPixel свети в зелен цвят, когато докосваме зеления бутон на LCD, а LED лентата свети в червен цвят, когато натискаме червения бутон и т.н.
Обяснение на програмирането:
За да свържем TFT LCD с Arduino, използвахме някои библиотеки. Всички библиотеки са в един rar файл и могат да бъдат изтеглени от тази връзка. Кликнете върху „Клониране или изтегляне“ и „Изтегляне на ZIP“ и добавете към папката на вашата библиотека Arduino. Тази библиотека е необходима за правилното функциониране на TFT LCD.
#include
Трябва да тествате своя TFT LCD, като изгорите Arduino с примери за кодове, дадени в библиотеката, и да проверите дали кодовете работят правилно. Първо проверете графичния тест, след това калибрирайте теста и накрая тествайте боя. Ако установите, че всички функции работят добре, започнете с кода, даден в този урок.
Също така за правилното функциониране на NeoPixel RGB LED лента ще ви трябва още една библиотека, която можете да изтеглите от тук.
#include
Както е описано по-рано Digital Pin 36 на MEGA е свързан към DI pin на NeoPixel LED лента, както е показано в кода по-долу. Също така броят на светодиодите в лентата е 30, както е написано в кода:
#define PIN 36 #define NUM_LEDS 30
Цветовете на дисплея на LCD бутоните се обозначават с някои кодове. Можете да промените тези кодове според вашия LCD.
#define ЧЕРЕН 0x0000 #define ЖЪЛТ 0x001F #define GREEN 0xF800 #define ЧЕРВЕН 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 се използва за регулиране размера на бутона на LCD. Ако го направите 40, тогава размерът на бутона ще се удвои. y параметър е y координата на LCD.
Сензорните бутони са обозначени с цифри, както е показано в кода:
# определят БУТОНИ 9 # определят BUTTON_Red 0 # определят BUTTON_DarkRed 1 # определят BUTTON_RED 2 # определят BUTTON_DarkGreen 3 # определят BUTTON_DeepRed 4 # определят BUTTON_Blue 5 # определят BUTTON_LightBlue 6 # определят BUTTON_LightBlue1 7
Някои функции се използват за излъчване на цвета извън NeoPixel като:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
За да намерите цифровите RGB стойности, които трябва да бъдат въведени за дадения цвят, можете да следвате тази връзка. Просто въведете цвета, който искате вашата лента NeoPixel да свети, намерете RGB стойностите за този цвят и въведете горепосочените функции.
Функцията void initializeButtons () се използва за придаване на текст и цвят на бутоните, както и за поставянето им на необходимото място на LCD.
void initializeButtons () {uint16_t x = 40; uint16_t y = височина - 20; uint16_t w = 75; uint16_t h = 40; uint8_t интервал_x = 5………………..
void show Функцията Калибриране () се използва за изчертаване на бутоните на LCD дисплея.
void showCalibration () {tft.setCursor (40, 0); за (uint8_t i = 0; i <8; i ++) {бутони.drawButton (); }}
Освен това пълният код на Arduino за светене на LED лентата NeoPixel в желания цвят е даден по-долу. Кодът е малко дълъг, но прост, можете лесно да го разберете.