Dubbla medlemspoäng på allt t.o.m 1 oktober! Bli medlem här eller i samband med ett köp.

Handla av en säljare
Handla av en säljare

Funktioner

Introduktion

I Bibliotek skrev vi en lång sketch som innehöll mycket upprepningar. Det gör koden svår att underhålla (eventuella småändringar måste göras på flera ställen). I detta kapitel ska vi därför se närmare på hur vi med hjälp av egna funktioner kan optimera koden ur underhållsperspektiv.

Argument och returvärde

I alla våra sketcher finns setup-funktionen och loop-funktionen. Vi kan lägga till fler funktioner än så om vi önskar. Genom att lägga kod som upprepas i en egen funktion och anropa den funktionen vid behov kan vi skala ned sketchstorleken rejält. Vi slipper också skriva samma sak flera gånger. 

En funktion har alltid ett namn. Den har eventuellt några argument (de står i så fall inom parentesen) och eventuellt ett returvärde. Argumenten är variabler som skickas till funktionen. Funktionen gör något med argumenten som den får och svarar vid behov vad den kom fram till med ett returvärde. 

13-1_1.png

 Argumenten skickas till funktionen och returvärdet skickas tillbaka från funktionen.

Void loop() är ett exempel på en funktion som vi redan har använt många gånger. Namnet på funktionen är loop och den saknar argument (det står inget inom parentesen). Den har inte heller något returvärde. Ordet void betyder tom och ska tolkas som att returvärdet är tomt.

void loop()

 

Inifrån loop-funktionen har vi flera gånger anropat delay-funktionen. Den har ett argument men inget returvärde. Argumentet lagras i en osignerad long-variabel och anger hur många millisekunders fördröjning som delay-funktionen ska orsaka. 

delay(1000);

Inifrån loop-funktionen har vi också flera gånger anropat funktionen digitalWrite. Den har inget returvärde, men den har två argument:

  • vilket GPIO-stiftnummer som ska påverkas (int)
  • om GPIO-stiftet ska ställas på HIGH eller LOW (boolean).
digitalWrite(13, HIGH);

Matematikexempel

Vi behöver inte skriva någon funktion för att summera två heltal, men vi skriver en sådan ändå för att tydligt visa vad en funktion gör. Vi börjar med att skapa en ny sketch (MathFunction.ino). I setup-funktionen startar vi som vanligt en seriell kommunikation med Arduinon. 

Vi skapar sedan en ny funktion som vi kallar adder. Den ska ha två argument (de två värdena som vi vill summera) och ett returvärde (summan). Vi använder long som variabel­typ för både argumenten och returvärdet. Själva koden skriver vi längst ned i sketchen (efter loop-funktionen).

Del av MathFunction.ino

I loop-funktionen kan vi nu anropa vår egen funktion adder och skicka med två heltal som argument. Svaret lagrar vi i en long-variabel som vi kallar answer. Det svaret kan vi sedan skriva ut i Serial monitor. Vi lägger även med en fördröjning på en sekund. Den färdiga sketchen ser ut på följande sätt.

MathFunction.ino

Värdena i vår sketch kommer att skickas fram och tillbaka på följande sätt.

13-2_1.png

Sättet vi skickar värden till och från vår egen funktion.

Effektivisera kod med funktioner

Som vi nämnde inledningsvis går det att effektivisera koden i Bibliotek genom att lägga den upprepande koden i en egen funktion. Vi kopierar därför sketchen till en ny sketch (FruitPickers4.ino) och skapar en egen funktion som vi kallar updateStatus med två argument (inget returvärde). Det ena argumentet är en int med värdet för hur många äpplen som ska läggas till hos Alice. Det andra argumentet är samma sak för Bob. Sedan klipper vi ut den upprepande koden och lägger den i vår funktion. 

Del av FruitPickers4.ino

Inne i if-satserna som styr vad som ska hända när någon klickar på knapparna lägger vi i stället anrop till updateStatus-funktionen. På detta sätt slipper vi skriva samma kod flera gånger. Den färdiga sketchen ser ut på följande sätt. 

FruitPickers4.ino

Senast ändrad: 2017-01-23
IntroduktionArgument och returvärdeMatematikexempelEffektivisera kod med funktioner
Bli medlem i dagGör som över 2 miljoner andra och ta del av erbjudanden samt förmåner när du handlar!

Som medlem får du:

  • 100 dagars öppet köp
  • Digitala butikskvitton med Kivra
  • Extra bra medlemspriser
  • Exklusiva medlemserbjudanden
  • Poäng på allt du handlar
  • Bonuscheckar
  • Se dina köp på kjell.com
Som medlem hos Kjell & Company kan du köpa utvalda medlemsvaror till extra bra priser, samla poäng och få bonuscheckar, samt ta del av unika medlemserbjudanden. Du får även förtur till vår kundservice, utökat öppet köp och förlängd garanti på utvalda varumärken.Läs mer om medlemskapet
Alltid tryggt att handla hos Kjell
Fri frakt från 499:-

Fria fraktalternativ vid köp från 499:-

Öppet köp i 100 dagar

Som medlem! Även fri retur i alla butiker

Snabba leveranser

1-2 arbetsdagar leveranstid på lagervaror

Hämta i butik, GRATIS!

Reservera online, redo att hämtas ut efter 15 minuter. Kostnadsfritt!

Medlem i

Medlem i trygg e-handel

Du betalar enkelt

Får din beställning levererad med

Du kan handla från både

Det verkar som att du använder en gammal webbläsare, det kan göra att allt inte fungerar eller ser ut som det borde.