Styr lysdioder med Arduino

Lysdiodsstyrning

I följande exempel vill vi få fyra lysdioder (LED) att tändas efter varandra och sedan släckas efter varandra. Genom att koppla dem till varsitt GPIO-stift på utvecklings­kortet blir det lätt att adressera dem individuellt. 

Enligt vår uträkning bör vi koppla lysdioderna i serie med varsin 300 Ω-resistor. 

23-1_1.png

Eftersom vi inte har tillgång till några sådana resistorer använder vi 330 Ω-resistorer i stället. Vi kan konstatera att de klarar värmeutvecklingen utan problem.

23-1_2.png

Genom att koppla samman nätaggregatet med utvecklingskortet enligt bilden kan vi välja om vi vill strömförsörja den färdiga lösningen via USB-porten på utvecklingskortet eller DC-kontakten på nätaggregatet.

23-1_3.png

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Själva sketchen för att styra lysdioderna kan göras kort tack vare for-loopar. Vi börjar med att spara vilka GPIO-stift vi vill använda i en byte-array. Sedan loopar vi genom ­arrayen för att sätta GPIO-stiften som utgångar. Slutligen skriver vi en loop för att tända lysdioderna och en loop för att släcka lysdioderna. Vi lägger in en liten fördröjning i båda looparna. Annars hade tändningarna och släckningarna skett så snabbt att de inte hade synts. 

Ersätter kod 1.PNG

https://github.com/kjellcompany/Arduino_701/blob/master/FourLed/FourLed.ino

PWM-styrning

Det hade varit ännu snyggare om de fyra lysdioderna dimrades upp och ned. Det går inte att åstadkomma med digitalWrite, eftersom digitalWrite enbart styr till- och frånslag av spänning (HIGH eller LOW). Det finns dock en annan funktion som kan dimra lysdioderna åt oss: analogWrite. 

Med analogWrite kan vi sätta ett värde (mellan 0 och 255) för hur starkt lysdioderna ska lysa. Med hjälp av loopar kan vi successivt öka ljusstyrkan (höja värdet) sedan successivt sänka ljusstyrkan (sänka värdet). För att åstadkomma detta lägger vi en for-loop inne i de redan befintliga for-looparna. 

Vi använder variabeln i för att stega mellan lysdioderna och variabeln j för att räkna upp ljusstyrkan. 

Ersätter kod 2.PNG

https://github.com/kjellcompany/Arduino_701/blob/master/PwmLed/PwmLed.ino

AnalogWrite är egentligen ett missvisande namn då funktionen inte ställer in något analogt. AnalogWrite är i grund och botten en teknik som kallas pulsbreddsmodulering (PWM, pulse-width modulation). Pulsbreddsmodulering innebär i det här fallet att spänningen slås på och av så snabbt att vi inte kan märka det. Genom att bestämma hur stor andel av tiden som spänningen är påslagen kan Arduinon få lysdioderna att lysa med olika styrka. 

AnalogWrite(0) innebär att spänningen är påslagen 0 % av tiden. AnalogWrite(255) innebär att spänningen är påslagen 100 % av tiden. 

23-2_1.png

PWM-styrning som släcker lysdioderna.

23-2_2.png

PWM-styrning som får lysdioderna att lysa svagt.

23-2_3.png

PWM-styrning som får lysdioderna att lysa starkt.

23-2_4.png

PWM-styrning som får lysdioderna att lysa med full styrka.

Det finns en anledning till att vi kopplade lysdioderna till just GPIO-stift 6, 9, 10, 11. Tillsammans med GPIO-stift 3 och 5 är det nämligen dessa GPIO-stift som har stöd för PWM-styrning. Det indikeras av tilde-symbolen bredvid de fysiska stiften (~). 

23-2_5.png

GPIO-stiften med tilde-symbol har PWM-stöd

Styrning av RGB-lysdiod

Principen för att koppla in RGB-lysdioder är densamma som för vanliga lysdioder. Den enda stora skillnaden är att fyra ben ska anslutas (i stället för två ben). I följande exempel använder vi en av RGB-lysdioderna som följer med i bokens tillhörande komponentkit. Den är av common cathode-typen (gemensam jord/minus). 

För inkopplingen behövs tre resistorer (en för varje färg på lysdioden). Vilken resistans som resistorerna ska ha räknas ut på samma sätt som för vanliga lysdioder. Enda skillnaden är att RGB-lysdioden ska drivas på 20 mA per färg (i stället för 10 mA). 

23-3_1.png

Enligt uträkningen ska resistorn ha en resistans på 150 Ω. Det värdet finns i E24-serien och vi skulle därför kunna välja det. Vi har dock inte tillgång till någon sådan resistor, så vi tar en 220 Ω-resistor i stället. Konsekvensen av att använda en resistor med högre resistans är att lysdioden inte lyser lika starkt. 

Vi måste även undersöka att vi inte överskrider resistorns märkeffekt. Det gör vi med effektberäkningsformeln.

23-3_2.png

Eftersom 60 mW är långt under resistorns märkeffekt på 250 mW kan vi använda den utan risk för överhettning. Själva kopplingen ser därför ut på följande vis. Tänk på att RGB-lysdiodens längsta ben ska kopplas till minus. 

23-3_3.png

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Med de fysiska kopplingarna på plats kan vi enkelt styra med vilken eller vilka färger som lysdioden ska lysa. Följande sketch dimrar upp lysdioden i röd färg och vandrar sedan successivt över till grönt och blått innan den släcks igen.

Ersätter kod 3.PNG

https://github.com/kjellcompany/Arduino_701/blob/master/PwmRgbLed/PwmRgbLed.ino

Senast ändrad: 2017-01-24
LysdiodsstyrningPWM-styrningStyrning av RGB-lysdiod
Få mer. Bli medlem!

Som medlem hos oss får du alltid lite mer. Som till exempel låga medlemspriser, unika kampanjer, 100 dagars öppet köp och bonuscheckar. Dessutom sparas alla dina köp i ditt medlemskap så att du slipper spara papperskvitton för eventuella returer. Ditt medlemskap är helt digitalt och helt kortlöst. Och väldigt smidigt.

Läs mer
Medlem i trygg e-handel
KUNSKAP OCH TILLBEHÖR TILL HEMELEKTRONIK© Copyright 2024 Kjell & Company
Det verkar som att du använder en gammal webbläsare, det kan göra att allt inte fungerar eller ser ut som det borde.