I Biblioteker skrev vi en lang skisse som inneholdt mange gjentagelser. Det gjør koden vanskelig å vedlikeholde (eventuelle små endringer må gjøres flere steder). I dette kapittelet skal vi derfor se nærmere på hvordan vi ved hjelp av egne funksjoner kan optimalisere koden fra et vedlikeholdsperspektiv.
Alle skissene våre inneholder setup-funksjonen og loop-funksjonen. Vi kan legge til flere funksjoner hvis vi ønsker det. Ved å legge inn gjentakende kode i en egen funksjon, og deretter kalle opp den funksjonen ved behov, kan vi redusere størrelsen på skissen betydelig. Vi slipper også å skrive samme ting flere ganger.
En funksjon har alltid et navn. Den har eventuelt argumenter (de står i så fall i parentes) og eventuelt en returverdi. Argumentene er variabler som sendes til funksjonen. Funksjonen gjør noe med argumentene den mottar, og svarer ved behov med en returverdi.
Void loop() er et eksempel på en funksjon som vi allerede har brukt mange ganger. Navnet på funksjonen er loop, og den mangler argument (det står ingenting i parentes). Den har heller ingen returverdi. Ordet void betyr tom, og skal tolkes som at returverdien er tom.
void loop()
Innefra loop-funksjonen har vi flere ganger kalt opp delay-funksjonen. Den har et argument, men ingen returverdi. Argumentet lagres i en usignert long-variabel og angir hvor mange millisekunders forsinkelse delay-funksjonen skal forårsake.
delay(1000);
Innefra loop-funksjonen har vi også flere ganger kalt opp funksjonen digitalWrite. Den har ingen returverdi, men den har to argumenter:
digitalWrite(13, HIGH);
Vi trenger ikke skrive noen funksjon for å summere to heltall, men vi skriver en likevel for å vise tydelig hva en funksjon gjør. Vi begynner med å lage en ny skisse (MathFunction.ino). I setup-funksjonen starter vi som vanlig en seriell kommunikasjon med Arduinoen.
Vi lager deretter en ny funksjon som vi kaller adder. Den skal ha to argumenter (de to verdiene vi vil summere) og én returverdi (summen). Vi bruker long som variabeltype for både argumentene og returverdien. Selve koden skriver vi nederst i skissen (etter loop-funksjonen).
Del av MathFunction.ino
I loop-funksjonen kan vi nå kalle opp vår egen funksjon adder og sende med to heltall som argumenter. Svaret lagrer vi i en long-variabel som vi kaller answer. Det svaret kan vi deretter skrive til Seriell overvåker. Vi legger også inn en forsinkelse på ett sekund. Den ferdige skissen ser slik ut:
MathFunction.ino
Verdiene i skissen blir sendt frem og tilbake på følgende måte:
Som vi nevnte innledningsvis kan koden i Biblioteker effektiviseres ved å legge inn den gjentagende koden i en egen funksjon. Vi kopierer derfor skissen til en ny skisse (FruitPickers4.ino) og lager en egen funksjon som vi kaller updateStatus, som skal ha to argumenter (ingen returverdier). Det ene argumentet er en int med verdien for hvor mange epler som skal legges til for Alice. Det andre argumentet er samme ting for Bob. Deretter klipper vi ut den gjentagende koden og legger den inn i funksjonen vår
Del av FruitPickers4.ino
Inne i if-setningene som styrer hva som skal skje når noen trykker på knappene, legger vi i stedet inn et kall til updateStatus-funksjonen. På denne måten slipper vi å skrive kode flere ganger. Den ferdige skissen ser slik ut:
FruitPickers4.ino
Bli medlem og få ekstra bra medlemspriser, poeng på alt du handler og 100 dagers åpent kjøp. Medlemskapet ditt er helt digitalt – praktisk og kortløst!
Les mer