I dette kapittelet skal vi sette el-læren fra forrige kapittel inn i Arduino-sammenhengen. Vi skal gå gjennom hvordan digitale inn- og utganger kan brukes for å få Arduino til å kommunisere med verden utenfor datamaskinen.
Ordet "digitalt" kommer fra det latinske ordet "digitus", som betyr finger. Opphavet er sannsynligvis at vi regnet på fingrene (jamfør med det engelske ordet "digit", som betyr siffer). I denne sammenhengen sikter nok digitalt til noe som enten er ett eller null (dvs. datamaskinens måte å regne på).
Et eksempel på hvordan ettall og nuller brukes i Arduino-sammenheng, er styringen av lysdioden i Arduino IDE. Der brukte vi funksjonen digitalWrite til å veksle mellom høy og lav spenning på GPIO-pinne 13 (som fikk den tilkoblede lysdioden til å lyse). Høy og lav spenning er kanskje litt misvisende termer i dette eksempelet, fordi det antyder at det skulle finnes en mellomting. "På" og "av" hadde egentlig vært mer beskrivende. HIGH/på er rett og slett spenningen som mikrokontrolleren er laget for (i vårt tilfelle 5 V). LOW/av er ingen spenning i det hele tatt (0 V).
I blinkeskissen brukes HIGH og LOW til å styre lysdioden. Vi kunne like gjerne ha brukt 1 og 0 i stedet. Resultatet av skissen nedenfor er altså nøyaktig det samme.
En bryter er en liten komponent som vanligvis har to eller fire ben. Den fungerer som en omveksler mellom 1 og 0. Den kan for eksempel brukes til å få en krets til å bli sluttet, slik at en lysdiode tennes når noen trykker på bryteren. Den kan også brukes til det motsatte, slik at en lysdiode slukkes når noen trykker på bryteren.
Ved å koble bryteren i en krets til en av GPIO-pinnene på utviklingskortet, kan Arduinoen reagere på at noen trykker på knappen (eller slipper opp knappen). Bruk av digitale innganger viser vi hvordan dette kan brukes.
Det er to måter å koble kretser med en bryter på: NO og NC. NO er en forkortelse for Normally Open, og betyr at kretsen er åpen (brutt) i normaltilstanden, slik at det ikke går strøm gjennom den. Strømmen begynner først å gå når bryteren lukkes (knappen trykkes ned), slik at kretsen sluttes.
NC er en forkortelse for Normally Closed og er motsetningen til NO. En NC-krets er sluttet i normaltilstanden, slik at det går strøm gjennom den til bryteren åpnes (kretsen brytes).
Brytere som har to ben, er enten av typen NO eller NC. Brytere som har flere ben, kan i enkelte tilfeller (ikke alltid) kobles på begge måter. Hvilken kobling som skal brukes, avhenger av sammenhengen. Trykknappen på en ringeklokke bør eksempelvis alltid være NO-koblet, slik at den ringer når noen trykker på knappen. Hvis knappen på en ringeklokke hadde vært NC-koblet, så hadde den ringt konstant, unntatt når noen trykket på knappen. Ved kablet tilkobling av en alarmdetektor til et alarmsystem brukes derimot alltid NC-kobling. Det forhindrer at innbruddstyver kan klippe av kabelen uten av alarmsystemet reagerer.
NO-brytere brukes ofte til å trigge en Arduino til å gjøre noe. Det betyr at en slik bryter slutter en krets når den trykkes ned. Hvis bryteren er fjærbelastet, går den tilbake til opprinnelig tilstand når den ikke holdes nede lenger. Det innebærer at kretsen bare er sluttet så lenge bryteren holdes nede.
Bryterne som følger med i den tilhørende komponentpakken, er fjærbelastede NO-brytere. De har totalt fire ben. Benene som monteres på samme radnummer på et koblingsbrett, leder alltid strøm til hverandre. Benene som monteres på ulike radnumre på et koblingsbrett, leder derimot bare strøm til hverandre når bryteren påvirkes.
Vi har allerede sett hvordan en Arduino kan bruke GPIO-pinnene som digitale utganger da vi tente lysdioden på GPIO-pinne 13. Vi gjorde det ved først og fremst å bestemme at GPIO-pinne 13 skulle være en utgang og deretter sette spenningen til HIGH.
Siden utviklingskortet har flere digitale GPIO-pinner, kan vi koble en lysdiode til respektive GPIO-pinner og styre dem individuelt. Det er imidlertid bare GPIO-pinne 13 som har en tilhørende lysdiode forhåndsmontert på utviklingskortet.
GPIO-pinnene kan også brukes som innganger. Det er nyttig hvis vi vil at Arduinoen skal reagere når noen trykker på en bryter (eller tolke verdiene fra en sensor). Koden som er nødvendig for å få dette til, er ganske lik den forrige koden. I stedet for å sette GPIO-pinne 13 til å være utgang kan vi angi den som inngang med følgende kode:
Del 1/2 av ReadDigitalPin.ino
Deretter kan vi lese status på inngangen med følgende kode:
Del 2/2 av ReadDigitalPin.ino
Merk at koden som står her, ikke gjør noe. I Bruk av digitale innganger viser vi hvordan du kan få noe vettug ut av informasjonen.
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