Styre lysdioder med Arduino

Styre lysdioder med Arduino

I dette kapittelet skal vi endelig begynne å styre lysdioder med Arduino. Vi skal også gå gjennom hva PWM-styring innebærer, og hva det kan brukes til.

Lysdiodestyring

I følgende eksempel skal vi få fire lysdioder (LED) til å bli tent etter hverandre og deretter slukket etter hverandre. Ved å koble dem til hver sin GPIO-pinne på utviklingskortet blir det enkelt å adressere dem individuelt.

Ifølge utregningen vår bør vi koble lysdiodene i serie med hver sin motstand på 300 Ω.

Siden vi ikke har tilgang til slike motstander, bruker vi motstander på 330 Ω i stedet. Vi kan konstatere at de klarer å håndtere varmeutviklingen uten problemer.

Ved å koble sammen strømforsyningen med utviklingskortet slik som bildet viser, kan vi velge om vi vil strømforsyne den ferdige løsningen via USB-porten på utviklingskortet eller DC-kontakten på strømforsyningen.

 Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

Selve skissen for å styre lysdiodene kan gjøres kort takket være for-løkker. Vi begynner med å lagre hvilken GPIO-pinne vi vil bruke, i et byte-array. Deretter går vi gjennom arrayet for å angi GPIO-pinnene som utganger. Til slutt skriver vi en løkke for å tenne lysdiodene og en for å slukke dem. Vi legger inn en liten forsinkelse i begge løkkene. Ellers hadde tenningen og slukkingen skjedd så raskt at det knapt hadde vært synlig.

FourLed.ino

PWM-styring

Det hadde vært enda mer elegant hvis de fire lysdiodene ble dimmet opp og ned. Det kan vi ikke gjøre med digitalWrite, siden den funksjonen i praksis bare slår spenningen på eller av (HIGH eller LOW). Det finnes imidlertid en annen funksjon som kan dimme lysdiodene for oss: analogWrite.

Med analogWrite kan vi angi en verdi (mellom 0 og 255) for hvor sterkt lysdiodene skal lyse. Ved hjelp av løkker kan vi suksessivt øke lysstyrken (øke verdien) og senke lysstyrken (senke verdien). Vi kan få til dette ved å legge inn en for-løkke i de eksisterende for-løkkene.

Vi bruker variabelen i til å hoppe mellom lysdiodene og variabelen til å endre lysstyrken.

PwmLed.ino

AnalogWrite er egentlig et misvisende navn fordi funksjonen ikke stiller inn noe analogt. AnalogWrite er i bunn og grunn en teknologi som kalles pulsbreddemodulering (PWM, Pulse-Width Modulation). Pulsbreddemodulering innebærer i dette tilfellet at spenningen slås på og av så raskt at vi ikke kan merke det. Ved å bestemme hvor stor andel av tiden spenningen er slått på, kan Arduinoen få lysdiodene til å lyse med forskjellig styrke.

AnalogWrite(0) innebærer at spenningen er slått på 0 % av tiden. AnalogWrite(255) innebærer at spenningen er slått på 100 % av tiden.

PWM-styring som slukker lysdiodene.
PWM-styring som får lysdiodene til å lyse svakt.
PWM-styring som får lysdiodene til å lyse sterkt.
PWM-styring som får lysdiodene til å lyse med full styrke.

Det er en grunn til at vi koblet lysdiodene til nettopp GPIO-pinne 6, 9, 10, 11. Sammen med GPIO-pinne 3 og 5 er det nemlig disse GPIO-pinnene som har støtte for PWM-styring. Det indikeres av tildesymbolet ved siden av de fysiske pinnene (~). 

GPIO-pinnene med tildesymbol har PWM-støtte.

Styring av RGB-lysdiode

Prinsippet for å koble til RGB-lysdioder er det samme som for vanlige lysdioder. Den eneste forskjellen er at fire ben skal kobles til (i stedet for to ben). I følgende eksempel bruker vi en av RGB-lysdiodene som er inkludert i bokens medfølgende komponentpakke. Den er av typen common cathode (felles jord/minus).

Vi trenger tre motstander for tilkoblingen (én for hver farge på lysdioden). Hvilken resistans motstandene skal ha regnes ut på samme måte som for vanlige lysdioder. Den eneste forskjellen er at RGB-lysdioden skal drives med 20 mA per farge (i stedet for 10 mA).

Ifølge utregningen skal motstanden ha en resistans på 150 Ω. Den verdien finnes i E24-serien, og vi burde derfor kunne velge den. Vi har imidlertid ikke en slik motstand, så vi tar en motstand på 220 Ω i stedet. Konsekvensen av å bruke en motstand med høyere resistans er at lysdioden ikke lyser like sterkt.

Vi må også kontrollere at vi ikke overstiger motstandens nominelle effekt. Det gjør vi med effektberegningsformelen.

Siden 60 mW er langt under motstandens nominelle effekt på 250 mW, kan vi bruke den uten risiko for overoppheting. Selve koblingen ser derfor ut som følger. Husk at RGB-lysdiodens lengste ben alltid skal kobles til minus.

Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

Med de fysiske koblingene på plass kan vi enkelt styre hvilken eller hvilke farger lysdioden skal lyse med. Følgende skisse dimmer opp lysdioden i rød farge og går deretter over til grønt og blått før den slukkes igjen.

PwmRgbLed.ino

Sist endret: 2017-09-08