På ei vanlig LED-stripe lyser alle diodene likt. De mer avanserte LED-stripene har en liten mikrokontroller montert sammen med hver diode, og diodene kan dermed styres individuelt.
Denne LED-stripa lyser med ulik farge på hver diode. Hvordan er dette mulig?
Adresserbare LED-striper er en type LED-striper som lar deg kontrollere hver enkelt LED individuelt. Du kan altså endre farge og lysstyrke på hver LED uavhengig av de andre LED-ene på stripa.
Den vanligste typen adresserbar LED-stripe bruker en egen mikrokontroller av typen WS2812 eller liknende LED-brikker tilknytta hver LED.
Hver LED på stripa har en innebygd mikrokontroller (kontrollerbrikke) som lar deg sende kommandoer til den. Kontrolleren mottar beskjed om den aktuelle LED-en skal skrus av/på, lysstyrke og eventuell farge. Vi kaller slike mikrokontrollere LED-brikker.
Dataoverføring
Data sendes langs stripa som en kode i form av en serie med binære data. For hver LED på stripa må du sende ei pakke med data som inneholder informasjon om ønska farge og lysstyrke. Disse datapakkene har unike navn som blir mottatt av LED-brikkene, men bare den databrikken som har riktig adresse, leser dataene i pakka og regulerer den aktuelle LED-en.
Klokkesignal
I tillegg til data sendes det også et klokkesignal langs stripa. Dette signalet brukes av hver LED-brikke for å vite når den skal lese inn dataene som sendes til den.
Adresserbare LED-striper har vanligvis tre tilkoplingspunkter:
strømtilkopling (+5V)
jording (GND)
datainngang (DIN) eller datatilkopling
Strømtilkoplinga er der du kopler til strømforsyninga som gir spenning til LED-stripa. De fleste adresserbare LED-striper opererer på 5 volt, selv om noen kan kreve 12 volt.
Jordingstilkoplinga brukes for jording, vanligvis ved å kople jordledningen fra strømforsyninga til dette punktet.
Datainngangspunktet brukes til å sende data fra mikrokontrolleren (for eksempel Arduino) til LED-stripa. Data sendes som sagt i form av binære signaler som forteller hver LED på stripa hvilken farge og lysstyrke den skal vise. Det er viktig å kople datainngangen til riktig pinne på mikrokontrolleren og å bruke riktig protokoll for kommunikasjon, for eksempel WS2812-protokollen for WS2812 LED-striper.
Noen adresserbare LED-striper kan ha ekstra tilkoplingspunkter, for eksempel for ekstern styring, men disse vil variere avhengig av modellen og produsenten av LED-stripa.
Dette koplingsskjemaet viser hvordan du kan kople en Arduino til ei adresserbar LED-stripe.
Når du skal kople LED-stripa til din Arduino, må du benytte tre ledninger kopla til pinnene +5V og GND på Arduinoen, i tillegg til en valgt digitalport, i dette tilfellet D2. På LED-stripa koples ledningene fra +5V til +5V, GND til GND og D2 til DIN (Digital IN).
Denne Arduinoen er kopla til ei adresserbar LED-stripe. Klarer du å se hvilke pinner som benyttes på Arduinoen og på LED-stripa?
Når det gjelder å programmere adresserbare LED-striper med Arduino, kan du følge disse trinnene:
Installer biblioteket: Først må du installere et bibliotek som lar Arduino-koden din kommunisere med adresserbare LED-striper. Det mest populære biblioteket for dette formålet er <FastLED> eller <Adafruit_NeoPixel.h>. Sjekk spesifikasjonene for LED-stripa di for å finne riktig bibliotek.
Kople opp LED-stripa: Kople LED-stripa til Arduino. Pass på å kople riktig pinne på LED-stripa til riktig pinne på Arduino. Du velger pinne for digitalt signal i programmet, i tillegg til spenning +5V og jording GND.
Skriv koden: Bruk Arduino IDE til å skrive koden din. Du kan bruke FastLED-biblioteket til å enkelt kontrollere LED-stripa. I koden din kan du angi ønska farge og lysstyrke for hver LED på stripa.
Last opp koden: Last opp koden til Arduinoen din og se LED-stripa lyse opp i ønska mønster eller farge.
Under får du fire enkle eksempler på hvordan du kan programmere en Arduino til å styre adresserbare LED-striper.
Du kan prøve ut ulike parameter i koden for å skape ditt eget mønster.
Eksempelkode 1: Blinkende LED
Dette eksempelet vil få LED-stripa til å blinke rødt, grønt og blått med en forsinkelse på et halvt sekund mellom hvert blink. Du kan tilpasse koden for å oppnå forskjellige mønstre, farger og effekter på LED-stripa di.
I setup()-funksjonen legger du til LED-stripa ved å bruke FastLED-biblioteket. Du spesifiserer hvilken type LED-stripe du har kopla til (WS2812), LED-pinnen (LED_PIN), fargeordninga (GRB), og du sender med arrayen (datastrukturen) "leds" og antall LED-er (NUM_LEDS).
Loop() A
void loop() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(i * 255 / NUM_LEDS, 255, 255);
}
FastLED.show();
delay(30);
}
Forklaring
I loop()-funksjonen blir alle LED-ene først satt til rød farge med full lysstyrke ved å brukefill_solid()-funksjonen fra FastLED-biblioteket.
Deretter vises denne fargen på LED-stripa ved å kalle FastLED.show().
Etter det venter koden i 30 millisekunder ved hjelp av delay(30).
Deretter gjentas denne prosessen for å sette alle LED-ene til grønt og deretter til blått, med tilsvarende pauser mellom fargeskiftene.
Eksempelkode 2: Regnbueeffekt
Denne koden skaper en glidende regnbueeffekt som beveger seg langs LED-stripa.
I loop()-funksjonen genererer du en regnbueeffekt ved å bruke ei for-løkke som går gjennom hver LED på stripa. Du bruker CHSV()-funksjonen til å sette fargen til hver LED basert på posisjonen den har i stripa. CHSV() tar tre argumenter: hue (farge), saturation (metning) og value (verdi).
I dette tilfellet øker du gradvis hue-verdien basert på LED-ens posisjon for å skape en regnbueeffekt. Deretter bruker du FastLED.show() for å oppdatere fargene på LED-stripa, og delay(30) for å legge til en liten forsinkelse slik at du kan se effekten. Denne forsinkelsen bestemmer også hvor fort regnbueeffekten beveger seg langs LED-stripa.
Ei for-løkke går gjennom alle LED-ene i stripa (NUM_LEDS ganger).
Inne i løkka blir hver LED satt til en farge som tilsvarer en bestemt posisjon i en regnbue. Dette gjøres ved å bruke CHSV (Cylindrical Hue, Saturation, Value) til å definere fargen basert på posisjonen til LED-en i stripa (i), hvor fargeskiftet går fra rødt til grønt til blått og tilbake til rødt.
Etter at alle LED-ene har fått tildelt sine farger, vises denne fargeeffekten på LED-stripa ved å hente inn og kjøre FastLED.show().
Deretter venter koden i 30 millisekunder ved hjelp av delay(30) før den begynner på en ny iterasjon (gjentakelse) av løkka.
Eksempelkode 3: Pusteeffekt
Denne koden simulerer en pusteeffekt ved å gradvis endre lysstyrken til LED-stripa.
Ei for-løkke går gjennom verdier fra 0 til 255, som representerer lysstyrken til LED-ene.
Inne i løkka blir lysstyrken til hver LED beregna ved hjelp av en formel basert på sinus og eksponentialfunksjon. Dette skaper en "pusteeffekt" der lysstyrken øker og deretter avtar over tid.
LED-stripa blir fylt med en rød farge som har den beregna lysstyrken for øyeblikket.
Deretter vises denne fargen på LED-stripa ved å kalle FastLED.show().
Etter det venter koden i 20 millisekunder ved hjelp av delay(20) før neste iterasjon (gjentakelse) av løkka.
Eksempelkode 4: Lysende mønster
Denne koden vil få en lysende "bølge" til å bevege seg langs LED-stripa.