Elke kleur bestaat uit drie kleuren: rood, groen en blauw, met een simpele RGB-led kun je elke kleur genereren. Maar de beperking van RGB-leds is dat er drie afzonderlijke leds in zitten en dat er drie pinnen van een microcontroller nodig zijn om één RGB-led te bedienen. Het is dus niet mogelijk om honderden leds met één microcontroller te verbinden.
Om dit probleem op te lossen heeft Adafruit de NeoPixel LED Strip ontwikkeld. Het vereist slechts drie pinnen om meerdere RGB NeoPixel-LED's aan te sturen. Twee pinnen zijn voor stroom en aarde en één pin is voor data in (DI). Data IN pin wordt gebruikt om de verschillende LED's in de strip te adresseren en aan te sturen met hun kleur, helderheid etc. Maar er is een Microcontroller voor nodig om NeoPixels te laten draaien. Arduino wordt heel vaak gebruikt met NeoPixel, dus vandaag zullen we leren om NeoPixel LED's te koppelen aan Arduino. U kunt meer over NeoPixels leren op AdaFruit.
Hier in dit project besturen we NeoPixel LED met behulp van Arduino en TFT LCD- aanraakscherm. We hebben 7 aanraakknoppen met verschillende kleuren gemaakt op 2,4 inch TFT LCD en wanneer we op de knop van een bepaalde kleur op het LCD-scherm tikken, licht de NeoPixel LED-strip op met dezelfde kleur van die knop. Hier hebben we gebruik gemaakt van NeoPixel Digital RGB ledstrip van 30 leds.
NeoPixel RGB LED kan in elke kleur worden verlicht en dus kunnen we meer knoppen op het LCD-scherm toevoegen om de LED in meer kleuren op te lichten bij het tikken op die knoppen. Andere mooie effecten en patronen kunnen ook worden toegevoegd met behulp van codering. U kunt een volledig Arduino-gestuurd decoratiesysteem bouwen met behulp van NEO Pixel-LED's en dit systeem bedienen via een LCD-scherm dat dicht bij u ligt.
Vereiste componenten:
- Arduino Mega of een ander Arduino-model
- 2,4 inch TFT LCD-scherm met SPFD5408-controller
- NeoPixel RGB ledstrip
- Verbindingsdraden
- USB-kabel of 12 V 1A-adapter
Circuitverbindingen:
Om NeoPixels Strip met Arduino Mega te verbinden, sluit u eenvoudig de Arduino 5V-pin aan op NeoPixel's 5V-pin en Mega's GND aan NeoPixel's GND en sluit u vervolgens NeoPixel DI-pin (data in) aan op Digital Pin nr. 36 van Arduino Mega. Monteer het TFT LCD Touch Shield voorzichtig over Arduino zodat GND van MEGA onder GND van LCD ligt en 5V pin van Arduino wordt aangesloten op 5V pin van LCD.
Zorg ervoor dat u de GND en 5V-pin van de NeoPixel LED-strip niet verwisselt tijdens het aansluiten op Arduino, anders zal de NeoPixel LED-strip beschadigd raken. Merk ook op dat we hier Arduino Mega hebben gebruikt, maar je kunt elk ander Arduino-model gebruiken.
Verbindingen met Arduino naar NeoPixel RGB LED Strip:
Arduino-pinnen |
De pinnen van NeoPixel Strip |
5v |
5v |
GND |
GND |
Digitale pin nr. 36 |
DI (data in) |
Werkende uitleg:
Het werken met NeoPixel LED met Arduino is heel eenvoudig. Tik gewoon op de aanraakknop van elke kleur op het LCD-scherm waarin u de NeoPixel LED-strip wilt laten gloeien. De LED licht op volgens die kleur. De code is zo geschreven dat je deze taak eindeloos kunt herhalen zonder de Arduino Mega te resetten. U kunt de code en demovideo aan het einde van dit artikel bekijken.
Wanneer op een knop op het LCD-scherm wordt getikt, worden gegevens naar Arduino verzonden en stuurt Arduino verder instructies naar NeoPixel Strip om dienovereenkomstig op te lichten. NeoPixel LED-strip licht bijvoorbeeld groen op als we op de groene knop op het LCD-scherm tikken en LED-strip licht rood op als we op de rode knop drukken, enzovoort.
Programmering Toelichting:
Om TFT LCD met Arduino te verbinden, hebben we enkele bibliotheken gebruikt. Alle bibliotheken komen in één rar-bestand en kunnen via deze link worden gedownload. Klik op 'Clone or download' en 'Download ZIP'-bestand en voeg het toe aan je Arduino-bibliotheekmap. Deze bibliotheek is nodig voor een goede werking van TFT LCD.
# omvatten
U moet uw TFT LCD testen door Arduino te branden met voorbeeldcodes die in de bibliotheek worden gegeven en controleren of de codes correct werken. Controleer eerst de grafische test, kalibreer vervolgens de test en tenslotte de verftest. Als je merkt dat alle functies allemaal goed werken, begin dan met de code die in deze tutorial wordt gegeven.
Ook voor een goede werking van de NeoPixel RGB LED-strip heeft u nog een bibliotheek nodig, die u hier kunt downloaden.
# omvatten
Zoals eerder beschreven is digitale pin 36 van MEGA verbonden met DI-pin van NeoPixel LED Strip, zoals weergegeven in onderstaande code. Ook het aantal LED's in de Strip is 30 dus zoals in code staat geschreven:
#define PIN 36 #define NUM_LEDS 30
Weergavekleuren van LCD-knoppen worden aangeduid met enkele codes. U kunt deze codes wijzigen volgens uw LCD-scherm.
#define ZWART 0x0000 #define GEEL 0x001F #define GROEN 0xF800 #define ROOD 0x07E0 #define CYAAN 0x07FF #define MAGENTA 0xF81F #define BLAUW 0xFFE0 #define WIT 0xFFFF
Enkele parameters voor de knoppen zoals grootte en positie zijn gedefinieerd in de code:
uint16_t breedte = 0; uint16_t hoogte = 0; uint16_t x = 40; uint16_t y = hoogte - 20; uint16_t w = 75; uint16_t h = 20;
h-parameter wordt gebruikt om de grootte van de knop op het LCD-scherm aan te passen. Als je er 40 van maakt, wordt de grootte van de knop verdubbeld. y parameter is y-coördinaat van LCD.
Touch-knoppen worden aangeduid met cijfers zoals weergegeven in code:
#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_Blauw 5 #define BUTTON_LightBlauw 6 #define BUTTON_LightBlue 6 #define BUTTON_LightBlauw
Sommige functies worden gebruikt om de kleur uit NeoPixel te halen, zoals:
leegte EmitCyan (); leegte EmitWhite (); leegte EmitGreen (); leegte EmitYellow (); leegte EmitPink (); void EmitBlack ();
Om de in te voeren digitale RGB-waarden voor de gegeven kleur te vinden, kunt u deze link volgen. Voer gewoon de kleur in die u wilt dat uw NeoPixel-strip gloeit, zoek de RGB-waarden voor die kleur en voer bovenstaande functies in.
void initializeButtons () functie wordt gebruikt om tekst en kleur aan knoppen te geven en ook om ze op de gewenste plaats op het LCD-scherm te plaatsen.
void initializeButtons () {uint16_t x = 40; uint16_t y = hoogte - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
void showCalibration () functie wordt gebruikt om de knoppen op het LCD-scherm te tekenen.
leegte showCalibration () {tft.setCursor (40, 0); voor (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
Verder wordt de volledige Arduino-code voor het gloeien van de NeoPixel LED-strip in de gewenste kleur hieronder gegeven. Code is een beetje lang, maar eenvoudig, u kunt de code gemakkelijk begrijpen.