På ei vanleg LED-stripe lyser alle diodane likt. Dei meir avanserte LED-stripene har ein liten mikrokontrollar montert saman med kvar diode, og diodane kan dermed bli styrte individuelt.
Denne LED-stripa lyser med ulik farge på kvar diode. Korleis er dette mogleg?
Adresserbare LED-striper er ein type LED-striper som let deg kontrollere kvar enkelt LED individuelt. Du kan altså forandre farge og lysstyrke på kvar LED uavhengig av dei andre LED-ane på stripa.
Den vanlegaste typen adresserbar LED-stripe bruker ein eigen mikrokontrollar av typen WS2812 eller liknande LED-brikker knytt til kvar LED.
Kvar LED på stripa har ein innebygd mikrokontrollar (kontrollarbrikke) som let deg sende kommandoar til han. Kontrollaren får beskjed om den aktuelle LED-en skal bli skrudd av/på, lysstyrke og eventuell farge. Vi kallar slike mikrokontrollarar LED-brikker.
Dataoverføring
Data blir sende langs stripa som ein kode i form av ein serie med binære data. For kvar LED på stripa må du sende ein pakke med data som inneheld informasjon om ønskt farge og lysstyrke. Desse datapakkane har unike namn som blir mottekne av LED-brikkene, men berre den databrikka som har rett adresse, les dataa i pakken og regulerer den aktuelle LED-en.
Klokkesignal
I tillegg til data blir det òg sendt eit klokkesignal langs stripa. Dette signalet blir brukt av kvar LED-brikke for å vite når ho skal lese inn dataa som blir sende til ho.
Adresserbare LED-striper har vanlegvis tre tilkoplingspunkt:
straumtilkopling (+5V)
jording (GND)
datainngang (DIN) eller datatilkopling
Straumtilkoplinga er der du koplar til straumforsyninga som gir spenning til LED-stripa. Dei fleste adresserbare LED-striper opererer på 5 volt, sjølv om nokre kan krevje 12 volt.
Jordingstilkoplinga blir brukt for jording, vanlegvis ved å kople jordleidninga frå straumforsyninga til dette punktet.
Datainngangspunktet blir brukt til å sende data frå mikrokontrollaren (til dømes Arduino) til LED-stripa. Data blir som sagt sende i form av binære signal som fortel kvar LED på stripa kva farge og lysstyrke han skal vise. Det er viktig å kople datainngangen til rett pinne på mikrokontrollaren og å bruke rett protokoll for kommunikasjon, til dømes WS2812-protokollen for WS2812 LED-striper.
Nokre adresserbare LED-striper kan ha ekstra tilkoplingspunkt, til dømes for ekstern styring, men desse vil variere avhengig av modellen og produsenten av LED-stripa.
Dette koplingsskjemaet viser korleis du kan kople ein Arduino til ei adresserbar LED-stripe.
Når du skal kople LED-stripa til din Arduino, må du nytte tre leidningar kopla til pinnane +5V og GND på Arduinoen, i tillegg til ein vald digitalport, i dette tilfellet D2. På LED-stripa blir leidningane kopla frå +5V til +5V, GND til GND og D2 til DIN (Digital IN).
Denne Arduinoen er kopla til ei adresserbar LED-stripe. Klarer du å sjå kva pinnar som blir nytta på Arduinoen og på LED-stripa?
Når det gjeld å programmere adresserbare LED-striper med Arduino, kan du følge desse trinna:
Installer biblioteket: Først må du installere eit bibliotek som let Arduino-koden din kommunisere med adresserbare LED-striper. Det mest populære biblioteket for dette formålet er <FastLED> eller <Adafruit_NeoPixel.h>. Sjekk spesifikasjonane for LED-stripa di for å finne rett bibliotek.
Kople opp LED-stripa: Kople LED-stripa til Arduino. Pass på å kople rett pinne på LED-stripa til rett pinne på Arduino. Du vel 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 ønskt farge og lysstyrke for kvar LED på stripa.
Last opp koden: Last opp koden til Arduinoen din og sjå LED-stripa lyse opp i ønskt mønster eller farge.
Under får du fire enkle døme på korleis du kan programmere ein Arduino til å styre adresserbare LED-striper.
Du kan prøve ut ulike parameter i koden for å skape ditt eige mønster.
Dømekode 1: Blinkande LED
Dette dømet vil få LED-stripa til å blinke raudt, grønt og blått med ei forseinking på eit halvt sekund mellom kvart blink. Du kan tilpasse koden for å oppnå ulike mønster, fargar og effektar på LED-stripa di.
I setup()-funksjonen legg du til LED-stripa ved å bruke FastLED-biblioteket. Du spesifiserer kva type LED-stripe du har kopla til (WS2812), LED-pinnen (LED_PIN), fargeordninga (GRB), og du sender med arrayen (datastrukturen) "leds" og talet på LED-ar (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-ane først sette til raud farge med full lysstyrke ved å brukefill_solid()-funksjonen frå FastLED-biblioteket.
Deretter blir denne fargen vist på LED-stripa ved å kalle FastLED.show().
Etter det ventar koden i 30 millisekund ved hjelp av delay(30).
Deretter blir denne prosessen gjenteken for å setje alle LED-ane til grønt og deretter til blått, med tilsvarande pausar mellom fargeskifta.
Dømekode 2: Regnbogeeffekt
Denne koden skaper ein glidande regnbogeeffekt som beveger seg langs LED-stripa.
I loop()-funksjonen genererer du ein regnbogeeffekt ved å bruke ei for-løkke som går gjennom kvar LED på stripa. Du bruker CHSV()-funksjonen til å setje fargen til kvar LED basert på posisjonen han har i stripa. CHSV() tek tre argument: hue (farge), saturation (metting) og value (verdi).
I dette tilfellet aukar du gradvis hue-verdien basert på posisjonen til LED-en for å skape ein regnbogeeffekt. Deretter bruker du FastLED.show() for å oppdatere fargane på LED-stripa, og delay(30) for å legge til ei lita forseinking slik at du kan sjå effekten. Denne forseinkinga bestemmer òg kor fort regnbogeeffekten beveger seg langs LED-stripa.
Ei for-løkke går gjennom alle LED-ane i stripa (NUM_LEDS gonger).
Inne i løkka blir kvar LED sett til ein farge som svarer til ein bestemd posisjon i ein regnboge. Dette blir gjort ved å bruke CHSV (Cylindrical Hue, Saturation, Value) til å definere fargen basert på posisjonen til LED-en i stripa (i), der fargeskiftet går frå raudt til grønt til blått og tilbake til raudt.
Etter at alle LED-ane har fått tildelt fargane sine, blir denne fargeeffekten vist på LED-stripa ved å hente inn og køyre FastLED.show().
Deretter ventar koden i 30 millisekund ved hjelp av delay(30) før han begynner på ein ny iterasjon (gjentaking) av løkka.
Dømekode 3: Pusteeffekt
Denne koden simulerer ein pusteeffekt ved å gradvis forandre lysstyrken til LED-stripa.
Ei for-løkke går gjennom verdiar frå 0 til 255, som representerer lysstyrken til LED-ane.
Inne i løkka blir lysstyrken til kvar LED berekna ved hjelp av ein formel basert på sinus og eksponentialfunksjon. Dette skaper ein "pusteeffekt" der lysstyrken aukar og deretter minkar over tid.
LED-stripa blir fylt med ein raud farge som har den berekna lysstyrken akkurat no.
Deretter blir denne fargen vist på LED-stripa ved å kalle FastLED.show().
Etter det ventar koden i 20 millisekund ved hjelp av delay(20) før neste iterasjon (gjentaking) av løkka.
Dømekode 4: Lysande mønster
Denne koden vil få ei lysande "bølge" til å bevege seg langs LED-stripa.