Bet kurią spalvą sudaro trys spalvos: raudona, žalia ir mėlyna. Naudodami paprastą RGB šviesos diodą galite sukurti bet kokią spalvą. Tačiau RGB šviesos diodų apribojimas yra tas, kad jame yra trys atskiri šviesos diodai ir norint valdyti vieną RGB šviesos diodą reikia trijų bet kurio mikrovaldiklio kaiščių. Taigi neįmanoma sujungti šimtų šviesos diodų su vienu mikrovaldikliu.
Norėdami įveikti šią problemą, „Adafruit“ sukūrė „ NeoPixel LED Strip“. Norint valdyti kelis RGB „NeoPixel“ šviesos diodus, reikia tik trijų kaiščių. Du kaiščiai skirti maitinti ir įžeminti, o vienas kaištis skirtas duomenų įvestims (DI). „Data IN“ kaištis naudojamas skirtingiems juostos šviesos diodams nukreipti ir valdyti jų spalva, ryškumu ir pan. Tačiau norint, kad „NeoPixels“ veiktų, reikia mikrovaldiklio. „Arduino“ labai dažnai naudojamas su „NeoPixel“, todėl šiandien išmoksime sąveikauti „NeoPixel“ šviesos diodus su „Arduino“. Daugiau apie „NeoPixels“ galite sužinoti „AdaFruit“.
Šiame projekte mes valdome „NeoPixel LED“ naudodami „Arduino“ ir TFT LCD jutiklinį ekraną. 2,4 colių TFT skystųjų kristalų ekrane sukūrėme 7 skirtingų spalvų jutiklinius mygtukus ir palietus tam tikros spalvos mygtuką LCD ekrane, „NeoPixel“ LED juosta apšviečiama ta pačia to mygtuko spalva. Čia mes panaudojome „ NeoPixel Digital RGB“ LED juostą iš 30 šviesos diodų.
„NeoPixel RGB“ šviesos diodą galima apšviesti bet kokia spalva, todėl mes galime pridėti daugiau mygtukų LCD, kad švytintumėte daugiau spalvų spustelėdami tuos mygtukus. Kiti gražūs efektai ir modeliai taip pat gali būti pridėti naudojant kodavimą. Galite sukurti pilną „ Arduino“ valdomą dekoravimo sistemą naudodami „NEO Pixel“ šviesos diodus ir valdyti šią sistemą šalia jūsų esančiame LCD ekrane.
Reikalingi komponentai:
- „Arduino Mega“ ar bet kuris kitas „Arduino“ modelis
- 2,4 colių TFT LCD ekranas su SPFD5408 valdikliu
- NeoPixel RGB LED juosta
- Laidų sujungimas
- USB kabelis arba 12 V 1A adapteris
Grandinės jungtys:
Norėdami prijungti „NeoPixels Strip“ prie „Arduino Mega“, tiesiog prijunkite „Arduino 5V“ kaištį prie „NeoPixel“ 5 V kaiščio, o „Mega“ GND - prie „NeoPixel“ GND, tada prijunkite „ NeoPixel DI“ kaištį (duomenys į) prie „Arduino Mega“ skaitmeninio kaiščio Nr. 36. Atsargiai pritvirtinkite TFT LCD jutiklinį ekraną ant „Arduino“ taip, kad MEGA GND būtų po LCD GND, o 5 V „Arduino“ kaištis sujungtų su 5 V kaiščiu LCD.
Prijunkite prie „Arduino“, kad nesikeistumėte „GND“ ir 5 V „NeoPixel“ LED juostos kaiščio, nes kitaip jis sugadins „NeoPixel“ LED juostą. Taip pat atkreipkite dėmesį, kad čia mes naudojome „Arduino Mega“, bet galite naudoti bet kurį kitą „Arduino“ modelį.
Jungtys su „Arduino“ prie „NeoPixel RGB LED Strip“:
„Arduino“ smeigtukai |
„NeoPixel Strip“ smeigtukai |
5v |
5v |
BND |
BND |
Skaitmeninis kaištis Nr. 36 |
DI (duomenys) |
Darbinis paaiškinimas:
„ NeoPixel LED“ dirbti su „Arduino“ yra labai paprasta. Tiesiog palieskite bet kurios spalvos jutiklinį mygtuką LCD, kuriame norite švyti „NeoPixel“ LED juostą. Šviesos diodas užsidegs pagal tą spalvą. Kodas parašytas taip, kad galėtumėte be galo pakartoti šią užduotį, nenorėdami iš naujo nustatyti „Arduino Mega“. Galite patikrinti kodą ir demonstracinį vaizdo įrašą šio straipsnio pabaigoje.
Palietus bet kurį mygtuką LCD ekrane, duomenys siunčiami į „Arduino“, o „Arduino“ toliau siunčia instrukcijas „NeoPixel Strip“, kad atitinkamai užsidegtų. Pavyzdžiui, „NeoPixel“ šviesos diodų juosta šviečia žalia spalva, kai paliečiame LCD mygtuką „Žalia“, o LED juosta šviečia raudona spalva, kai paspaudžiame raudoną mygtuką ir pan.
Programavimo paaiškinimas:
Norėdami susieti TFT LCD su „Arduino“, mes naudojome kai kurias bibliotekas. Visos bibliotekos yra viename rar faile ir jas galima atsisiųsti iš šios nuorodos. Spustelėkite „Klonuoti arba atsisiųsti“ ir „Atsisiųsti ZIP“ failą ir pridėti prie „Arduino“ bibliotekos aplanko. Ši biblioteka reikalinga tinkamam TFT LCD veikimui.
# įtraukti
Turėtumėte išbandyti TFT LCD įrašydami „Arduino“ su bibliotekoje pateiktais kodų pavyzdžiais ir patikrinkite, ar kodai veikia tinkamai. Pirmiausia patikrinkite grafikos testą, tada kalibruokite testą ir galiausiai dažykite testą. Jei pastebėsite, kad visos funkcijos veikia gerai, pradėkite nuo kodo, pateikto šioje pamokoje.
Kad tinkamai veiktų „NeoPixel RGB LED“ juosta, jums reikės dar vienos bibliotekos, kurią galite atsisiųsti iš čia.
# įtraukti
Kaip aprašyta anksčiau, MEGA skaitmeninis kaištis 36 yra prijungtas prie „NeoPixel“ LED juostos DI kaiščio, kaip parodyta žemiau esančiame kode. Šviesos diodų skaičius juostoje yra 30, kaip parašyta kodu:
#define PIN 36 #define NUM_LEDS 30
Skystųjų kristalų mygtukų ekrano spalvos žymimos kai kuriais kodais. Šiuos kodus galite pakeisti pagal savo LCD ekraną.
#define BLACK 0x0000 #define geltona 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Kai kurie mygtukų parametrai, pvz., Dydis ir padėtis, yra apibrėžti kode:
uint16_t plotis = 0; uint16_t aukštis = 0; uint16_t x = 40; uint16_t y = aukštis - 20; uint16_t w = 75; uint16_t h = 20;
h parametras naudojamas LCD ekrano mygtuko dydžiui reguliuoti. Jei padarysite 40, mygtuko dydis padvigubės. y parametras yra LCD ekrano y koordinatė.
Jutikliniai mygtukai žymimi skaičiais, kaip parodyta kodu:
#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_LightBlue 6 #
Kai kurios funkcijos naudojamos „NeoPixel“ spalvai skleisti, pavyzdžiui:
niekinis EmitCyan (); niekinis EmitWhite (); anuliuoti „EmitGreen“ (); anuliuoti EmitYellow (); anuliuoti „EmitPink“ (); anuliuoti „EmitBlack“ ();
Norėdami rasti skaitmenines RGB reikšmes, kurias reikia įvesti nurodytai spalvai, galite spustelėti šią nuorodą. Tiesiog įveskite spalvą, kurią norite, kad „NeoPixel“ juosta švytėtų, raskite tos spalvos RGB reikšmes ir įdėkite aukščiau nurodytas funkcijas.
„void initializeButtons“ ( funkcija) naudojama mygtukams suteikti tekstui ir spalvoms bei padėti juos į reikiamą vietą LCD ekrane.
negalioja inicijuoti mygtukai () {uint16_t x = 40; uint16_t y = aukštis - 20; uint16_t w = 75; uint16_t h = 40; uint8_t tarpai_x = 5………………..
kalibravimo () funkcija naudojama piešti LCD ekrano mygtukus.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {mygtukai.drawButton (); }}
Toliau pateikiamas visas „ Arduino“ kodas, skirtas „NeoPixel“ LED juostos švytėjimui norima spalva. Kodas yra šiek tiek ilgas, bet paprastas, kodą galite lengvai suprasti.