Digitale inn- og utganger

Innleding

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.

Hva er digitalt?

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.

Brytere

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.

NO og NC

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. 

html_image

En NO-krets sluttes nÄr bryteren lukkes.

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).

html_image

En NC-krets brytes nÄr bryteren Äpnes.

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.

html_image

Brytere med fire ben6

 

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.

html_image

Bryteren upÄvirket (venstre) og pÄvirket (hÞyre).7

 

Digital output

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.

Digital input

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.

Sist endret: 18.01.2017