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å utvecklingskortet blir det lätt att adressera dem individuellt.
Enligt vår uträkning bör vi koppla lysdioderna i serie med varsin 300 Ω-resistor.
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.
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.
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.
https://github.com/kjellcompany/Arduino_701/blob/master/FourLed/FourLed.ino
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.
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.
PWM-styrning som släcker lysdioderna.
PWM-styrning som får lysdioderna att lysa svagt.
PWM-styrning som får lysdioderna att lysa starkt.
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 (~).
GPIO-stiften med tilde-symbol har PWM-stöd
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).
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.
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.
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.
https://github.com/kjellcompany/Arduino_701/blob/master/PwmRgbLed/PwmRgbLed.ino
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