Programmeringsspråket i Arduino IDE
Arduino er ei populær plattform for elektronisk prototyping og utvikling. Arduino-programmeringsspråket er basert på C og C++, eit av dei mest brukte og velkjende programmeringsspråka i verda. Denne artikkelen er ein guide til Arduino-programmeringsspråket og tek for seg kommandoar, funksjonar og vanlege bruksområde.
Du kan køyre programmeringsverktøyet online, eller du kan laste det ned på di eiga side. Tilgang får du gjennom denne lenka: programmeringsverktøyet Arduino IDE.
Når vi programmerer, er det viktig at vi følger ein fast struktur, for strukturen sikrar at mikrokontrolleren forstår programkoden.
Alle Arduino-programma må innehalde kommandoane setup og loop. Når vi opnar programmeringsverktøyet, er startteksten som i dømet nedanfor:
void
Omgrepet void nyttar vi saman med ein kommando. Void indikerer at ei programlinje ikkje returnerer nokon verdi.
Med andre ord: Når ein programkommando er definert med void, betyr det at programmet utfører ein eller fleire operasjonar (til dømes å skrive ut noko), men at det ikkje sender nokon data tilbake til den delen av koden som starta med void.
Void kan òg nyttast saman med setup() og loop().
setup()
Dette er ein spesiell funksjon som køyrer éin gong ved oppstart av Arduino-programmet. Han blir brukt til å konfigurere faste innstillingar og setje opp I/O-portar eller variablar.
loop()
Denne funksjonen gjer at ein operasjon blir gjenteken så lenge ikkje programmet får beskjed om noko anna. Operasjonen går i ein loop (= i ei løkke). Hovudprogrammet skal plasserast i denne funksjonen.
Datatypar
Arduino støttar dei vanlege datatypane, til dømes int og long (heiltal), float (desimaltal), char (teikn) og bool (boolske verdiar). Vi kan òg bruke spesifikke Arduino-datatypar som byte (8-bits heiltal) eller unsigned int (positive heiltal).
Logiske funksjonar
Arduino støttar dei vanlege funksjonane, som til dømes if-setningar, for-løkker, while-løkker og switch-case-setningar. Desse funksjonane blir brukte for å få Arduinoen til å gjennomføre ulike arbeidsoperasjonar ut frå definerte vilkår.
Funksjonane kan ta inn argument og returnere verdiar, og dei kan kallast frå andre delar av programmet.
Eigendefinerte funksjonar
Vi kan definere eigne funksjonar i Arduino-programmeringsspråket for å organisere og gjenbruke koden vår. Til dømes kan vi lage små delprogram som ligg utanfor loop(), og programmere at mikrokontrolleren skal hoppe til det aktuelle delprogrammet, gjennomføre det og så hoppe tilbake til staden der den hoppa ut av hovudprogrammet.
Når vi får eit program til å gjere slike hopp, seier vi at programmet kallar opp delprogram.
Variablar
For å lagre verdiar i programmet må vi opprette variablar. Variablar er datatypar som får eit unikt namn som vi vel sjølve.
Skal vi måle ein temperatursensor, kan det vere formålstenleg at variabelen får namnet temperatur. Skal vi måle lysstyrke, bør variabelen kanskje heite nettopp lysstyrke.
Variablane blir oppgitt med datatype, namn og verdi. Ofte blir ein variabel som skal brukast til avlesing, sett til verdien 0 i starten av programmet.
Klammeparentesar { } og bogeparentesar ( )
Klammeparentesar og bogeparentesar er viktige i programmeringsspråket. Kommandolinjer som høyrer saman, må rammast inn av klammeparentesar, mens verdiar må rammast inn av bogeparentesar.
Semikolon ;
Semikolon fortel Arduinoen at programlinja er lesen ferdig, og at det som står på linja, kan utførast. Alle programlinjene blir avslutta med semikolon.
Store og små bokstavar
Kodespråket skil mellom store og små bokstavar. Vi må derfor passe på at skrivemåten blir heilt rett. Berre då kan programmet køyre som forventa.
Døme på bruk av stor og liten bokstav kan vere analogRead og digitalWrite.
Dobbel skråstrek //
Dobbel skråstrek blir nytta før ei beskriving. Teiknet fortel Arduinoen at det som følger, ikkje er ein del av koden, men ein kommentar eller beskjed om kva programmet eller linja skal gjere.
Arduino-programmeringsspråket kjem med eit sett med innebygde funksjonar og bibliotek som gjer det enklare å jobbe med ulike komponentar og einingar. Her er nokre vanlege funksjonar og bibliotek du kan bruke:
pinMode(pin, mod)
Denne funksjonen blir brukt til å konfigurere ein I/O-pinne som anten inngang eller utgang. Du må oppgi pinnenummeret og modusen (INPUT eller OUTPUT).
digitalRead(pin)
Denne funksjonen les tilstanden til ein digital inngangspinne og returnerer anten HIGH eller LOW, avhengig av tilstanden til pinnen.
digitalWrite(pin, value)
Denne funksjonen skriv ein digital verdi (HIGH eller LOW) til ein digital utgangspinne for å kontrollere tilstanden til eininga som er kopla til pinnen.
analogRead(pin)
Denne funksjonen les den analoge verdien frå ein analog inngangspinne og returnerer ein verdi mellom 0 og 1023, avhengig av spenningsnivået.
Arduinoen opererer med 5 volt spenning, og han har ein kapasitet på 1024 moglege verdiar. Derfor vil forskjellen i spenning frå ein verdi til neste vere 0,0049 volt.
analogWrite(pin, value)
For å skrive ein verdi på ein analog I/O-port bruker vi analogWrite(pin)-funksjonen, der pin er nummeret på den analoge I/O-porten.
Denne funksjonen vil returnere ein verdi mellom 0 og 1023, avhengig av spenningsnivået som skal skrivast. Verdien som skal skrivast, må vere lagra i ein variabel.
PWM (Pulse Width Modulation, pulsbreiddemodulasjon)
Denne funksjonen skriv ein PWM-verdi til ein PWM-kompatibel pinne. PWM blir ofte brukt til å kontrollere lysstyrken til LED-lys eller farta til ein motor.
Ein Arduino Uno har seks portar som kan nyttast til å sende PWM-signal. Det er portane 3, 5, 6, 9, 10 og 11. Portar som kan behandle PWM-signal, er merkte med tilde (dvs. symbolet ~).
Pulsbreidda angir i prosent kor stor del av ein tidsperiode ein port er aktiv, og kor lenge han er inaktiv.
Arduinoen kan skru av og på ein krets 500 gonger per sekund (oppdateringsfreksvens 500 Hz). Verdiane som kan nyttast, går då frå 0 til 255.
Verdien 255 betyr "alltid avslått", verdien 128 betyr "avslått omtrent halve tida, påslått omtrent halve tida", mens verdien 0 betyr "alltid avslått".
For å programmere ein PWM må vi bruke ein port som kan skrive PWM-signal, og dessutan velje ein verdi. Verdien kan anten vere eit fast tal eller ein variabel.
Arduino kjem òg med eit breitt utval av bibliotek som utvidar funksjonaliteten til plattforma.
Desse biblioteka gir ferdiglaga funksjonar og verktøy for å jobbe med einingar som LCD-skjermar, sensorar, kommunikasjonsprotokollar og mykje meir.
Du kan enkelt legge til bibliotek i Arduino-utviklingsmiljøet for å bruke funksjonane deira i prosjekta dine.