Jebkuru krāsu veido trīs krāsas: sarkana, zaļa un zila, izmantojot vienkāršu RGB LED, jūs varat ģenerēt jebkuru krāsu. Bet RGB LED ierobežojums ir tāds, ka tā iekšpusē ir trīs atsevišķi gaismas diodes, un, lai darbinātu vienu RGB LED, ir nepieciešami trīs jebkura mikrokontrollera tapas. Tāpēc nav iespējams savienot simtiem gaismas diodes ar vienu mikrokontrolleru.
Lai pārvarētu šo problēmu, Adafruit ir izveidojis NeoPixel LED Strip. Lai vadītu vairākas RGB NeoPixel gaismas diodes, ir nepieciešamas tikai trīs tapas. Divas tapas ir paredzētas jaudai un zemei, un viena tapa ir paredzēta datu ievadei (DI). Data IN pin tiek izmantots, lai adresētu un kontrolētu sloksnes dažādās gaismas diodes ar to krāsu, spilgtumu utt. Bet, lai palaistu NeoPixels, tam ir nepieciešams mikrokontrolleris. Arduino ļoti bieži lieto kopā ar NeoPixel, tāpēc šodien mēs iemācīsimies saskarē NeoPixel LED ar Arduino. Jūs varat uzzināt vairāk par NeoPixels vietnē AdaFruit.
Šajā projektā mēs kontrolējam NeoPixel LED, izmantojot Arduino un TFT LCD skārienekrānu. Mēs esam izveidojuši 7 dažādu krāsu skārienpogas 2,4 collu TFT LCD ekrānā, un, pieskaroties LCD noteiktas krāsas pogai, NeoPixel LED lente izgaismo ar tādu pašu šīs pogas krāsu. Šeit mēs izmantojām NeoPixel Digital RGB LED sloksni ar 30 LED.
NeoPixel RGB LED var apgaismot jebkurā krāsā, tāpēc mēs varam pievienot vairāk pogu LCD, lai spīdētu LED vairāk krāsās, pieskaroties šīm pogām. Izmantojot Coding, var pievienot arī citus skaistus efektus un modeļus. Izmantojot NEO Pixel gaismas diodes, varat izveidot pilnu Arduino kontrolētu apdares sistēmu un vadīt šo sistēmu ar LCD, kas atrodas jums blakus.
Nepieciešamās sastāvdaļas:
- Arduino Mega vai jebkurš cits Arduino modelis
- 2,4 collu TFT LCD ekrāns ar SPFD5408 kontrolieri
- NeoPixel RGB LED lente
- Vadu savienošana
- USB kabelis vai 12 V 1A adapteris
Ķēdes savienojumi:
Lai pievienotu NeoPixels Strip ar Arduino Mega, vienkārši pievienojiet Arduino 5V tapu ar NeoPixel 5V kontaktu un Mega GND ar NeoPixel GND un pēc tam pievienojiet NeoPixel DI pin (dati iekšā) ar Arduino Mega digitālo tapu Nr. 36. Uzmanīgi piestipriniet TFT LCD skārienekrānu virs Arduino tā, lai MEGA GND atrastos zem LCD GND, un 5 V Arduino tapa varētu savienoties ar 5 V pin LCD.
Pieslēdzot Arduino, nemainiet GND un 5V NeoPixel LED lentes tapu, pretējā gadījumā tas sabojās NeoPixel LED sloksni. Ņemiet vērā arī to, ka šeit mēs izmantojām Arduino Mega, bet jūs varat izmantot jebkuru citu Arduino modeli.
Savienojumi ar Arduino ar NeoPixel RGB LED sloksni:
Arduino Pins |
NeoPixel Strip tapas |
5v |
5v |
GND |
GND |
Digitālā tapa Nr. 36 |
DI (dati) |
Darba skaidrojums:
Darbs no NeoPixel LED ar Arduino ir ļoti viegli. Vienkārši pieskarieties jebkuras krāsas skārienpogai LCD, kurā vēlaties mirdzēt NeoPixel LED sloksni. Gaismas diode iedegsies atbilstoši šai krāsai. Kods ir rakstīts tā, lai jūs varētu bezgalīgi atkārtot šo uzdevumu, neatjaunojot Arduino Mega. Kodu un demonstrācijas video varat pārbaudīt šī raksta beigās.
Pieskaroties jebkurai pogai LCD, dati tiek nosūtīti uz Arduino un Arduino tālāk nosūta instrukcijas NeoPixel Strip, lai attiecīgi iedegtos. Piemēram, NeoPixel LED lente mirgo zaļā krāsā, kad pieskaramies LCD ekrāna zaļajai pogai, un LED josla mirgo sarkanā krāsā, kad nospiežam sarkano pogu utt.
Programmēšanas skaidrojums:
TFT LCD saskarnei ar Arduino mēs esam izmantojuši dažas bibliotēkas. Visas bibliotēkas ir vienā rar failā, un tās var lejupielādēt no šīs saites. Noklikšķiniet uz “Klonēt vai lejupielādēt” un “Lejupielādēt ZIP” failu un pievienojiet to savai Arduino bibliotēkas mapei. Šī bibliotēka ir nepieciešama, lai pareizi darbotos TFT LCD.
# iekļaut
Jums jāpārbauda TFT LCD, sadedzinot Arduino ar bibliotēkā sniegtajiem kodu piemēriem un jāpārbauda, vai kodi darbojas pareizi. Vispirms pārbaudiet grafikas testu, pēc tam kalibrējiet testu un, visbeidzot, krāsojiet. Ja atklājat, ka visas funkcijas darbojas nevainojami, sāciet ar kodu, kas norādīts šajā apmācībā.
Lai pareizi darbotos NeoPixel RGB LED sloksne, jums būs nepieciešama vēl viena bibliotēka, kuru var lejupielādēt šeit.
# iekļaut
Kā aprakstīts iepriekš, MEGA digitālais tapa 36 ir savienots ar NeoPixel LED joslas DI kontaktu, kā parādīts zemāk esošajā kodā. Arī gaismas diodes sloksnē ir 30, kā tas ir rakstīts kodā:
#define PIN 36 #define NUM_LEDS 30
LCD pogu displeja krāsas ir apzīmētas ar dažiem kodiem. Šos kodus var mainīt atbilstoši 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
Daži pogu parametri, piemēram, izmērs un pozīcija, ir noteikti kodā:
uint16_t platums = 0; uint16_t augstums = 0; uint16_t x = 40; uint16_t y = augstums - 20; uint16_t w = 75; uint16_t h = 20;
h parametru izmanto, lai pielāgotu LCD pogas lielumu. Ja jūs padarīsit to 40, pogas izmērs tiks dubultots. y parametrs ir LCD koordināta y.
Skārienpogas tiek apzīmētas ar cipariem, kā parādīts kodā:
#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 #
Dažas funkcijas tiek izmantotas, lai izstarotu krāsu no NeoPixel, piemēram:
anulēt EmitCyan (); anulēt EmitWhite (); anulēt EmitGreen (); anulēt EmitYellow (); anulēt EmitPink (); anulēt EmitBlack ();
Lai atrastu digitālās RGB vērtības, kas jāievada dotajai krāsai, varat sekot šai saitei. Vienkārši ievadiet krāsu, kādā vēlaties, lai NeoPixel sloksne spīd, atrodiet šīs krāsas RGB vērtības un ievietojiet iepriekš minētās funkcijas.
Funkcija void initializeButtons () tiek izmantota, lai pogām piešķirtu tekstu un krāsas, kā arī lai tās novietotu vajadzīgajā LCD vietā.
void initializeButtons () {uint16_t x = 40; uint16_t y = augstums - 20; uint16_t w = 75; uint16_t h = 40; uint8_t atstarpes_x = 5………………..
funkcija kalibrēšana () tiek izmantota, lai uzzīmētu pogas LCD ekrānā.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {pogas.drawButton (); }}
Tālāk ir sniegts pilns Arduino kods NeoPixel LED sloksnes kvēlošanai vēlamajā krāsā. Kods ir mazliet garš, bet vienkāršs, kodu var viegli saprast.