Hands-on med Arduino
Denne gang skal vi gennemgå et meget simpelt Arduinoprojekt i ord og billeder. For en af fordelene ved platformen er, at den på grund af sin fleksibilitet, pris og store online fællesskab, er et godt sted at begynde hvis man vil have et fundament for kommende projekter og eksperimenter, eller blot en bedre forståelse af, hvordan denne type elektronik fungerer og kan anvendes.
Projektet består i al sin enkelhed i, at få en lysdiode til at fade op og ned. Det benytter såkaldt Pulse Width Modulation, eller PWM, til at skabe effekten, ved at tænde og slukke for et digitalt signal meget hurtigt. Den detalje behøver man heldigvis ikke hænge sig i, i første omgang. Man kan godt starte med at lave projektet og derefter sætte sig ind i, hvordan det fungerer.
Så lad os kaste os ud i det! Projektet kræver en Arduino Uno, en modstand på 220 ohm, et breadboard og en LED (lysdiode). Komponenterne forbindes som vist nedenfor; lysdiodens korte ben forbindes til Arduinoens Pin 9 gennem modstanden og det lange ben direkte i Arduinoens Ground. Uden foregående kendskab til elektronik vil dette være sort snak, men det smukke er, at elektronikken fungerer alligevel, så længe opskriften følges.
Med hardwaren på plads, er det tid til at begynde på software- og kodedelen. Den nemmeste måde at komme i gang med at programmere Arduino er, at hente Arduinosoftwaren fra hjemmesiden arduino.cc – det findes i OS X, Windows og Linux varianter og gør det nemt at få koden fra computeren over på Arduinoens chip. Installationsproceduren er naturligvis lidt forskellig, alt efter hvilket styresystem du bruger, men er aldrig overmåde kompliceret.
Åbn den nyligt installerede software og klik gerne lidt rundt, så du bliver bekendt med den. Du kan finde en lille video, der viser installationen og første åbning af softwaren på samdata.mememaker.com/arduino101.html. Her ligger også lidt andre relevante YouTube-videoer.
Det projekt vi skal gennemgå findes på arduino.cc/en/Tutorial/Fade og er allerede ret godt beskrevet. Vi går det alligevel igennem her, for at komme helt rundt om projektet på dansk.
Ethvert Arduinoprojekt består som minimum af to funktioner: Setup, der køres en gang, når Arduinoen bootes op, og Loop, der køres igen og igen, så længe Arduinoen er tændt. I vores eksempel lægger vi dog ud med at definere nogen variable, som vi kan gøre brug af i koden nedenfor. Det ser således ud i koden (int betyder integer dvs. et heltal):
int led = 9; // the pin that the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
Hvordan de tre variable påvirker koden bliver tydeligt lige om lidt. Indtil videre er det bare tre heltal, som vi bestemmer skal være hhv. 9, 0 og 5.
Herefter følger den obligatoriske setup-funktion:
// the setup routine runs once when you press reset:
void setup() {
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
}
De digitale pins (rækken ’øverst’ på Arduinoen) kan konfigureres til at være enten input eller output. Her skal pin 9 være det output, der sender signal til vores lysdiode.
Og nu til loop-funktionen, der kører om og om igen på Arduinoens chip:
// the loop routine runs over and over again forever:
void loop() {
// set the brightness of pin 9:
analogWrite(led, brightness);
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
Dyb indånding
Først i loopet bruges analogWrite-funktionen til at sætte lysintensiteten på lysdioden. Første gang denne kode looper vil brightness være 0, som vi angav, da vi bestemte at int brightness = 0; helt i starten af koden.
Herefter øges intensiteten med 5 (det fadeAmount vi angav i kodens tredje linje), for hver gang denne bid kode afvikles.
Lysdiodens intensitet går fra 0 (slukket) til 255 (fuldt blus) og derfor skal der bruges et stykke kode, der får brightness-variablen til at tælle baglæns fra 255, når maximum rammes og derefter op igen fra 0. Det klares ved hjælp af en såkaldt if-sætning der, hvis man skulle beskrive den, ville læses som: “Hvis brightness er lig med 0 ELLER (symboliseret ved ||-tegnene) brightness er lig med 255, så ændrer vi fadeAmount-variablens fortegn.”
Sidste del af koden sætter programmet på pause i 30 milisekunder, inden loop-funktionen køres igen og herligheden gentages.
Således tager et simpelt Arduinoprojekt sig ud i hardware og software. En naturlig videreudvikling af projektet kunne være, at forbinde lysdioden med sin e-mail adresse, så den tændte, når der var ulæste e-mails eller, i en mere realistisk version, sætte tempoet i vejret, alt afhængig af hvor mange ulæste e-mails der venter i indbakken.
Og mulighederne er som nævnt så godt som uendelige. Hvad enten man vil forbinde Arduinoen til indhold fra internettet, eller lade den være stand-alone og f.eks. benytte sensorer til at aktivere servomotorer på en robot eller lysdioder på et kunstværk, kan man sandsynligvis finde et lignende projekt online, som man kan tage udgangspunkt i og modificere og eksperimentere sig videre derfra.