Biblioteker

Bibliotekenes funksjon

Det beste med Arduino-plattformen er den hengivne skaren av utviklere som generÞst deler kode med andre. Erfarne programmerere lÞser ofte kompliserte problemer og pakker lÞsningene sine i sÄkalte "biblioteker". Det gjÞr at andre programmerere kan dra nytte av lÞsningene som bibliotekene tilbyr, uten Ä mÄtte skrive eller forstÄ koden som ligger bak. Bibliotekene gir oss rett og slett tilgang til Þkt funksjonalitet.

I Variabler og strenger skrev vi en skisse som holder rede pÄ statusen i en konkurranse i epleplukking (FruitPickers2.ino). I den skissen skrev vi direkte i koden hvor mange eplekurver henholdsvis Alice og Bob hadde plukket. NÄ skal vi lage et telleverk der mengden epler regnes ut nÄr Alice og Bob trykker pÄ knapper.

Telleverket skal ha totalt fire knapper: to for Alice og to for Bob. Den ene knappen skal brukes til Ä telle en liten kurv, og den andre skal brukes til Ä telle en stor kurv. SÄ snart Alice eller Bob har plukket en full kurv, skal de trykke pÄ tilhÞrende knapp, sÄ holder telleverket vÄrt rede pÄ hvor mange epler de har plukket.

For Ä fÄ til dette trenger vi fysiske trykknapper og et bibliotek for trykknapper.

For Ä forstÄ nytten av biblioteket mÄ vi fÞrst forstÄ hva et trykk pÄ en knapp egentlig er. Et vanlig tastaturtrykk pÄ datamaskinen er nÄr en bryter skifter status fra upÄvirket til pÄvirket. Under forutsetning av at tasten slippes opp igjen innen noen millisekunder (gÄr fra pÄvirket til upÄvirket) registrerer operativsystemet det som innmating av et tegn. Hvis tasten derimot holdes nedtrykket i mer enn noen millisekunder, begynner operativsystemet Ä skrive tegnet gjentatte ganger helt til tasten slippes opp.

I eksempelet med bryteren i Bruk av digitale innganger (SwitchTrigger.ino) viste vi tydelig hvordan Arduino reagerer nÄr enkle brytere pÄvirkes. Hvert millisekund bryteren pÄvirkes, registrerer Arduino et nytt knappetrykk (i SwitchTrigger.ino la vi inn en forsinkelse pÄ 100 ms for Ä gjÞre det enklere Ä se). Denne lÞsningen fungerer ikke i telleverket vÄrt, siden Alice og Bob hadde fÄtt flere kurver registrert hver gang de trykket pÄ knappen.

html_image

Hvordan en vanlig bryter hadde fungert i telleverket.

Knappene vÄre mÄ fungere som taster, ikke enkle brytere. Heldigvis kan vi lÞse dette ved hjelp av et bibliotek.

html_image

Hvordan vi vil at vÄre knapper skal fungere.

Installere bibliotek

Biblioteket Button av Michael Adams lÞser problemet for oss. Vi installerer det ved Ä gÄ til menyen Skisse, velge Inkluder bibliotek og deretter klikke pÄ Administrer bibliotek. 

html_image

I sÞkeboksen skriver vi Button og velger Button by Michael Adams. Hvis biblioteket ikke vises i listen, kan det lastes ned manuelt fra Github. Les mer om dette i kapittel Manuell biblioteksinstallasjon. 

NÄr biblioteket er installert, starter vi utviklingsmiljÞet.

html_image

Nesten alle biblioteker leveres med eksempelskisser, slik at det blir enklere Ä forstÄ hvordan bibliotekene skal brukes. Dette gjelder ogsÄ Button. Det biblioteket leveres med eksempelskissen Basic_usage som du finner blant eksemplene pÄ Fil-menyen.

Kobling

For Ä lage telleverket trenger vi fire knapper. Vi velger to rÞde (for Alice) og to blÄ (for Bob). Vi kobler knappene direkte mot jord. Dette er mulig fordi biblioteket bruker en intern tilbakekoblende motstand i mikrokontrolleren. Kretsen blir til slutt den samme som i Bruk av digitale innganger.

html_image

Koblingen for telleverket vÄrt.11

Knappenes funksjoner blir fĂžlgende:

  • Legg til en liten kurv for Alice (GPIO-pinne 5).
  • Legg til en liten kurv for Bob (GPIO-pinne 4).
  • Legg til en liten kurv for Alice (GPIO-pinne 3).
  • Legg til en liten kurv for Bob (GPIO-pinne 2).

Inkludere og bruke biblioteker

For Ä kunne dra nytte av biblioteket mÄ det fÞrst inkluderes i skissen vÄr. Vi kopierer derfor skissen fra Variabler og strenger, lagrer den som en ny skisse (FruitPickers3.ino) og legger til fÞlgende kode Þverst. 

Del 1/5 av FruitPickers3.ino

Deretter lager vi fire knapper (Button-objekt) pÄ den mÄten som biblioteksutvikleren viser at det skal gjÞres i eksempelet.

Del 2/5 av FruitPickers3.ino

Sifrene i parentes viser til hvilken GPIO-pinne som knappene er koblet til.

Vi kan fjerne variablene littleBasketAlice, bigBasketAlice, littleBasketBob og bigBasketBob, siden de ikke behĂžves lenger.

Del 3/5 av FruitPickers3.ino

I setup-funksjonen mÄ vi starte samtlige knapper. Det gjÞr vi pÄ samme mÄte som vi starter Serial, men vi trenger ikke skrive noe i parentesene.

Del 4/5 av FruitPickers3.ino

I loop-funksjonen begynner vi med Ä fjerne delay-funksjonen. Den er ikke nÞdvendig fordi vi nÄ kan bruke knappene som triggere for nÄr noe skal skrives. Vi fjerner ogsÄ den gamle utregningen for antall plukkede epler.

Deretter skriver vi if-setninger for knappetrykkene (altsÄ hva som skal skje nÄr noen trykker pÄ en knapp). Den ferdige skissen vil se slik ut:

Del 5/5 av FruitPickers3.ino

I loop-funksjonen begynner vi med Ä fjerne delay-funksjonen. Den er ikke nÞdvendig fordi vi nÄ kan bruke knappene som triggere for nÄr noe skal skrives. Vi fjerner ogsÄ den gamle utregningen for antall plukkede epler. 

Manuell biblioteksinstallasjon

De mest populÊre bibliotekene kan legges til pÄ samme mÄte som vi har beskrevet, men pÄ Github er det mange flere enn de du finner ved hjelp av sÞkefunksjonen. Bibliotekene pÄ Github mÄ imidlertid installeres manuelt.

Et eksempel pÄ et bibliotek som mÄ installeres manuelt er SSD1306Ascii, som vi skal bruke i Bygge et internettilkoblet klokketermometer. NÄr vi vil installere det, begynner vi med Ä laste ned den nyeste versjonen av biblioteket fra Github.

html_image

Biblioteker kan lastes ned manuelt fra Github.

Biblioteket kommer i Zip-format, og vi mÄ derfor pakke det ut fÞr vi kan gjÞre noe mer.

Deretter flytter vi bibliotekets hovedmappe til biblioteksamlingen vÄr (hovedmappen er generelt sett mappen som har en undermappe med navnet examples. Standardplasseringen for biblioteksamlingen (libraries) er den lokale brukerens dokumentmappe i undermappen Arduino (gjelder bÄde Windows og Mac OS).

html_image

Det finnes ogsÄ en ferdig funksjon i Arduino IDE for Ä importere biblioteker i Zip-format. Den funksjonen forutsetter at filene ligger korrekt organisert i Zip-arkivet, noe de ikke alltid gjÞr.

Tips! I Klasser og biblioteker viser vi hvordan du kan lage egne biblioteker.

Referanser

11. Illustrasjon lagd med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

Sist endret: 22.01.2017