Programmeringsspråket i Arduino IDE
Arduino er en populær plattform for elektronisk prototyping og utvikling. Arduino-programmeringsspråket er basert på C og C++, ett av de mest brukte og velkjente programmeringsspråka i verden. Denne artikkelen er en guide til Arduino-programmeringsspråket og tar for seg kommandoer, funksjoner og vanlige bruksområder.
Du kan kjøre programmeringsverktøyet online, eller du kan laste det ned på di egen side. Tilgang får du gjennom denne lenka: programmeringsverktøyet Arduino IDE.
Når vi programmerer, er det viktig at vi følger en fast struktur, for strukturen sikrer at mikrokontrolleren forstår programkoden.
Alle Arduino-programmene må inneholde kommandoene setup og loop. Når vi åpner programmeringsverktøyet, er startteksten som følger:
void
Begrepet void benytter vi sammen med en kommando. Void indikerer at ei programlinje ikke returnerer noen verdi.
Med andre ord: Når en programkommando er definert med void, betyr det at programmet utfører en eller flere operasjoner (for eksempel å skrive ut noe), men at det ikke sender noen data tilbake til den delen av koden som starta med void.
Void kan også benyttes sammen med setup() og loop().
setup()
Dette er en spesiell funksjon som kjører én gang ved oppstart av Arduino-programmet. Den brukes til å konfigurere faste innstillinger og sette opp I/O-porter eller variabler.
loop()
Denne funksjonen gjør at en operasjon gjentas så lenge ikke programmet får beskjed om noe annet. Operasjonen går i en loop (= i ei løkke). Hovedprogrammet skal plasseres i denne funksjonen.
Datatyper
Arduino støtter de vanlige datatypene, for eksempel int og long (heltall), float (desimaltall), char (tegn) og bool (boolske verdier). Vi kan også bruke spesifikke Arduino-datatyper som byte (8-bits heltall) eller unsigned int (positive heltall).
Logiske funksjoner
Arduino støtter de vanlige funksjonene, som for eksempel if-setninger, for-løkker, while-løkker og switch-case-setninger. Disse funksjonene brukes for å få Arduinoen til å gjennomføre ulike arbeidsoperasjoner ut fra definerte betingelser.
Funksjonene kan ta inn argumenter og returnere verdier, og de kan kalles fra andre deler av programmet.
Egendefinerte funksjoner
Vi kan definere egne funksjoner i Arduino-programmeringsspråket for å organisere og gjenbruke koden vår. For eksempel kan vi lage små delprogrammer som ligger utenfor loop(), og programmere at mikrokontrolleren skal hoppe til det aktuelle delprogrammet, gjennomføre det og så hoppe tilbake til stedet der den hoppa ut av hovedprogrammet.
Når vi får et program til å gjøre slike hopp, sier vi at programmet kaller opp delprogrammer.
Variabler
For å lagre verdier i programmet må vi opprette variabler. Variabler er datatyper som får et unikt navn som vi selv angir.
Skal vi måle en temperatursensor, kan det være hensiktsmessig at variabelen får navnet temperatur. Skal vi måle lysstyrke, bør variabelen kanskje hete nettopp lysstyrke.
Variablene angis med datatype, navn og verdi. Ofte settes en variabel som skal brukes til avlesing, til verdien 0 på starten av programmet.
Klammeparenteser { } og bueparenteser ( )
Klammeparenteser og bueparenteser er viktige i programmeringsspråket. Kommandolinjer som hører sammen, må rammes inn av klammeparenteser, mens verdier må rammes inn av bueparenteser.
Semikolon ;
Semikolon forteller Arduinoen at programlinja er lest ferdig, og at det som står på linja, kan utføres. Alle programlinjer avsluttes med semikolon.
Store og små bokstaver
Kodespråket skiller mellom store og små bokstaver. Vi må derfor passe på at skrivemåten blir helt riktig. Bare da kan programmet kjøre som forventa.
Eksempler på bruk av stor og liten bokstav kan være analogRead og digitalWrite.
Dobbel skråstrek //
Dobbel skråstrek benyttes før en beskrivelse. Tegnet forteller Arduinoen at det som følger, ikke er en del av koden, men en kommentar eller beskjed om hva programmet eller linja skal gjøre.
Arduino-programmeringsspråket kommer med et sett med innebygde funksjoner og biblioteker som gjør det enklere å jobbe med forskjellige komponenter og enheter. Her er noen vanlige funksjoner og biblioteker du kan bruke:
pinMode(pin, mode)
Denne funksjonen brukes til å konfigurere en I/O-pinne som enten inngang eller utgang. Du må angi pinnenummeret og modusen (INPUT eller OUTPUT).
digitalRead(pin)
Denne funksjonen leser tilstanden til en digital inngangspinne og returnerer enten HIGH eller LOW, avhengig av tilstanden til pinnen.
digitalWrite(pin, value)
Denne funksjonen skriver en digital verdi (HIGH eller LOW) til en digital utgangspinne for å kontrollere tilstanden til enheten som er kopla til pinnen.
analogRead(pin)
Denne funksjonen leser den analoge verdien fra en analog inngangspinne og returnerer en verdi mellom 0 og 1023, avhengig av spenningsnivået.
Arduinoen opererer med 5 volt spenning, og den har en kapasitet på 1024 mulige verdier. Derfor vil forskjellen i spenning fra en verdi til neste være 0,0049 volt.
analogWrite(pin, value)
For å skrive en verdi på en analog I/O-port bruker vi analogWrite(pin)-funksjonen, der pin er nummeret på den analoge I/O-porten.
Denne funksjonen vil returnere en verdi mellom 0 og 1023, avhengig av spenningsnivået som skal skrives. Verdien som skal skrives, må være lagra i en variabel.
PWM (Pulse Width Modulation, pulsbreddemodulasjon)
Denne funksjonen skriver en PWM-verdi til en PWM-kompatibel pinne. PWM brukes ofte til å kontrollere lysstyrken til LED-lys eller hastigheten til en motor.
En Arduino Uno har seks porter som kan benyttes til å sende PWM-signaler. Det er portene 3, 5, 6, 9, 10 og 11. Porter som kan behandle PWM-signaler, er merka med tilde (dvs. symbolet ~).
Pulsbredden angir i prosent hvor stor del av en tidsperiode en port er aktiv, og hvor lenge den er inaktiv.
Arduinoen kan skru av og på en krets 500 ganger per sekund (oppdateringsfreksvens 500 Hz). Verdiene som kan benyttes, går da fra 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 angir "alltid avslått".
For å programmere en PWM må vi bruke en port som kan skrive PWM-signaler, samt velge en verdi. Verdien kan enten være et fast tall eller en variabel.
Arduino kommer også med et bredt utvalg av biblioteker som utvider funksjonaliteten til plattformen.
Disse bibliotekene gir ferdiglaga funksjoner og verktøy for å jobbe med enheter som LCD-skjermer, sensorer, kommunikasjonsprotokoller og mye mer.
Du kan enkelt legge til biblioteker i Arduino-utviklingsmiljøet for å bruke deres funksjoner i prosjektene dine.