2012 01 30 arduino forelesning

Post on 12-Apr-2015

30 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ARDUINOPROGRAMMERING

DIGITALE/ANALOGE INNDATA/UTDATALYSDIODER – FRITZING

Roger AntonsenINF1510

30. januar 2012FOR EKSPERIMENTELL INFORMATIKKFOR EKSPERIMENTELL INFORMATIKKÅPEN SONEÅPEN SONE

STUDIELABEN

Arduino Cookbook, Michael Margolis

Making Things Talk, Tom Igoe

Flere av illustrasjonene og eksemplene i denne forelesningen er tatt derfra.

En mer avansert, men veldig bra, bok!

Denne boken inneholder det meste man trenger å vite.

PROGRAMMERING I ARDUINO

• pinMode(pin, Mode) pin angir pinnen og Mode er INPUT eller OUTPUT

• pinMode(pin, Mode) pin angir pinnen og Mode er INPUT eller OUTPUT

• digitalWrite(pin, verdi) verdi er HIGH eller LOW

• pinMode(pin, Mode) pin angir pinnen og Mode er INPUT eller OUTPUT

• digitalWrite(pin, verdi) verdi er HIGH eller LOW

• digitalRead(pin) returnerer HIGH eller LOW

• pinMode(pin, Mode) pin angir pinnen og Mode er INPUT eller OUTPUT

• digitalWrite(pin, verdi) verdi er HIGH eller LOW

• digitalRead(pin) returnerer HIGH eller LOW

• analogWrite(pin, verdi) verdi er tall mellom 0 og 255

• pinMode(pin, Mode) pin angir pinnen og Mode er INPUT eller OUTPUT

• digitalWrite(pin, verdi) verdi er HIGH eller LOW

• digitalRead(pin) returnerer HIGH eller LOW

• analogWrite(pin, verdi) verdi er tall mellom 0 og 255

• analogRead(pin) returnerer et tall mellom 0 og 1023

• Variable brukes til å lagre data.

• Variable brukes til å lagre data.

• Noen viktige begreper er følgende.

• Variable brukes til å lagre data.

• Noen viktige begreper er følgende.

• deklarasjon: å sette av plass i minnetint x;boolean y;

• Variable brukes til å lagre data.

• Noen viktige begreper er følgende.

• deklarasjon: å sette av plass i minnetint x;boolean y;

• tilordning: å sette en verdix = 20;y = true;

• Variable brukes til å lagre data.

• Noen viktige begreper er følgende.

• deklarasjon: å sette av plass i minnetint x;boolean y;

• tilordning: å sette en verdix = 20;y = true;

• skop: der hvor variablene er synlige

• int: 16-bits verdi mellom -32 768 og 32 767int x = 32767;x++; // gjør at x blir -32768

• int: 16-bits verdi mellom -32 768 og 32 767int x = 32767;x++; // gjør at x blir -32768

• unsigned int: 16-bits verdi mellom 0 og 65535kun positive verdier

• int: 16-bits verdi mellom -32 768 og 32 767int x = 32767;x++; // gjør at x blir -32768

• unsigned int: 16-bits verdi mellom 0 og 65535kun positive verdier

• long: 32-bits verdi mellom -2147483648 og 2147483647

• int: 16-bits verdi mellom -32 768 og 32 767int x = 32767;x++; // gjør at x blir -32768

• unsigned int: 16-bits verdi mellom 0 og 65535kun positive verdier

• long: 32-bits verdi mellom -2147483648 og 2147483647

• usigned long: 32-bits verdi mellom 0 og 4294967295

• int: 16-bits verdi mellom -32 768 og 32 767int x = 32767;x++; // gjør at x blir -32768

• unsigned int: 16-bits verdi mellom 0 og 65535kun positive verdier

• long: 32-bits verdi mellom -2147483648 og 2147483647

• usigned long: 32-bits verdi mellom 0 og 4294967295

• float/double: 32-bits flyttallavrundede verdier; husk at dette kan medføre nøyaktigheter

• byte: 8-bits verdi mellom 0 og 255byte x = 130;byte x = B10000010; // samme resultat

• byte: 8-bits verdi mellom 0 og 255byte x = 130;byte x = B10000010; // samme resultat

• char: en byte som lagrer et tegn(egentlig bare en verdi mellom -128 og 127)char x = ‘G’;char x = 71; // samme resultat

• byte: 8-bits verdi mellom 0 og 255byte x = 130;byte x = B10000010; // samme resultat

• char: en byte som lagrer et tegn(egentlig bare en verdi mellom -128 og 127)char x = ‘G’;char x = 71; // samme resultat

• boolean: true eller false

• byte: 8-bits verdi mellom 0 og 255byte x = 130;byte x = B10000010; // samme resultat

• char: en byte som lagrer et tegn(egentlig bare en verdi mellom -128 og 127)char x = ‘G’;char x = 71; // samme resultat

• boolean: true eller false

• array: en samling av indekserte variable

• array: en samling av indekserte variabledeklarasjon (og tilordning):

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjon

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatisk

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-og

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char)

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char) // siste tegn er et nulltegn som avslutter

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char) // siste tegn er et nulltegn som avslutter

hente og sette inn verdier:

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char) // siste tegn er et nulltegn som avslutter

hente og sette inn verdier:mineVerdier[0] returnerer 32.

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char) // siste tegn er et nulltegn som avslutter

hente og sette inn verdier:mineVerdier[0] returnerer 32.mineVerdier[5] gir feilmelding.

• array: en samling av indekserte variabledeklarasjon (og tilordning):int mittArray[6]; // kun deklarasjonint mineTall[] = {3,7,1,2,8}; // automatiskint mineVerdier[3] = {32,64,-8}; // både-ogchar beskjed[6] = "hello"; // strenger er arrayer av tegn (char) // siste tegn er et nulltegn som avslutter

hente og sette inn verdier:mineVerdier[0] returnerer 32.mineVerdier[5] gir feilmelding.mineVerdier[0] = 100; // erstatter første tall

int multipliser(int x, int y) {

int multipliser(int x, int y) {  int resultat;

int multipliser(int x, int y) {  int resultat; resultat = x * y;

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonen

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

Viktig å huske på:

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

Viktig å huske på:• skop

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

Viktig å huske på:• skop• semikolon

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

Viktig å huske på:• skop• semikolon• klammeparenteser

int multipliser(int x, int y) {  int resultat; resultat = x * y; return resultat;}

type til returverdi(eller void hvis ingen type)

navn på funksjonentype og navn på

argumentene til funksjonen

deklarasjonav variabel

tilordning avvariabel

returverdi;må være av riktig type

Viktig å huske på:• skop• semikolon• klammeparenteser• kommentarer

Aritmetikk:

Aritmetikk:int y;

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik y

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik y

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik yx <= y // x mindre enn eller lik y

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik yx <= y // x mindre enn eller lik y

Logiske operatorer:

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik yx <= y // x mindre enn eller lik y

Logiske operatorer:x > 0 && x < 5 // OG - sann hvis begge er sanne

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik yx <= y // x mindre enn eller lik y

Logiske operatorer:x > 0 && x < 5 // OG - sann hvis begge er sannex > 0 || x < 5 // ELLER - sann hvis en er sann

Aritmetikk:int y;y = 9 / 4; // y blir satt til 2y = y + 3; // øker verdien til y med 3y++; // samme som y = y + 1;y /= 2; // samme som y = y / 2;

Sammenlikninger:x == y // x lik yx != y // x ulik yx <= y // x mindre enn eller lik y

Logiske operatorer:x > 0 && x < 5 // OG - sann hvis begge er sannex > 0 || x < 5 // ELLER - sann hvis en er sann!x < 0 // IKKE - sann hvis uttrykket er usant

if (x < 100){ // gjør A}

if (x < 100){ // gjør A}

if (x < 100){ // gjør A}else{ // gjør B}

switch (x) {

switch (x) { case 1:

switch (x) { case 1: // hvis x er lik 1, gjør dette

switch (x) { case 1: // hvis x er lik 1, gjør dette break;

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2:

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break;

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default:

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende // default er valgfritt

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende // default er valgfritt }

switch (x) {

switch (x) { case 1:

switch (x) { case 1: // hvis x er lik 1, gjør dette

switch (x) { case 1: // hvis x er lik 1, gjør dette break;

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2:

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break;

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default:

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende // default er valgfritt

switch (x) { case 1: // hvis x er lik 1, gjør dette break; case 2: // hvis x er lik 2, gjør dette break; default: // hvis ingen matcher, gjør følgende // default er valgfritt }

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

deklarere variabel

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

deklarere variabel

settstartverdi

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

deklarere variabel

settstartverdi test

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

deklarere variabel

settstartverdi test

endreverdi

for (int x = 0; x < 100; x++) {Serial.println(x);}// skriver tallene fra 0 til 99

deklarere variabel

settstartverdi test

endreverdi

kropp

DIGITALE INNDATA

• Arduinofunksjonen for å lese digital input heter digitalRead og forteller om spenningen på en pinne er HIGH (5 volt) eller LOW (0 volt).

• Arduinofunksjonen for å lese digital input heter digitalRead og forteller om spenningen på en pinne er HIGH (5 volt) eller LOW (0 volt).

• Arduinofunksjonen for å fortelle at en pinne skal brukes til dette er pinMode(pin,INPUT).

• Arduinofunksjonen for å lese digital input heter digitalRead og forteller om spenningen på en pinne er HIGH (5 volt) eller LOW (0 volt).

• Arduinofunksjonen for å fortelle at en pinne skal brukes til dette er pinMode(pin,INPUT).

• I utgangspunktet er alle konfigurert som inputpinner, men det er god praksis å sette dem allikevel.

)LJXUH������'LJLWDO�DQG�DQDORJ�SLQV�RQ�D�VWDQGDUG�$UGXLQR�ERDUG

7KLV�FKDSWHU�FRYHUV�WKH�$UGXLQR�SLQV�WKDW�FDQ�VHQVH�GLJLWDO�DQG�DQDORJ�LQSXWV��'LJLWDOLQSXW�SLQV�VHQVH�WKH�SUHVHQFH�DQG�DEVHQFH�RI�YROWDJH�RQ�D�SLQ��$QDORJ�LQSXW�SLQV�PHDV�XUH�D�UDQJH�RI�YROWDJHV�RQ�D�SLQ�

7KH�$UGXLQR�IXQFWLRQ�WR�GHWHFW�GLJLWDO�LQSXW�LV�digitalRead�DQG�LW�WHOOV�\RXU�VNHWFK�LI�DYROWDJH�RQ�D�SLQ�LV�HIGH����YROWV��RU�LOW����YROWV���7KH�$UGXLQR�IXQFWLRQ�WR�FRQILJXUH�DSLQ�IRU�UHDGLQJ�LQSXW�LV�pinMode(pin, INPUT)�

2Q�D�W\SLFDO�ERDUG��WKHUH�DUH����GLJLWDO�SLQV��QXPEHUHG���WR�����DV�VKRZQ�DW�WKH�WRS�RI)LJXUH������3LQV���DQG����PDUNHG�5;�DQG�7;��DUH�XVHG�IRU�WKH�86%�VHULDO�FRQQHFWLRQDQG�VKRXOG�EH�DYRLGHG�IRU�RWKHU�XVHV��,I�\RX�QHHG�PRUH�GLJLWDO�SLQV�RQ�D�VWDQGDUG�ERDUG�\RX�FDQ�XVH�WKH�DQDORJ�SLQV�DV�GLJLWDO�SLQV��DQDORJ�SLQV���WKURXJK���FDQ�EH�XVHG�DVGLJLWDO�SLQV����WKURXJK�����

$UGXLQR� ���� LQWURGXFHG� ORJLFDO� QDPHV� IRU�PDQ\� RI� WKH� SLQV�� 7KH� FRQVWDQWV� LQ� 7D�EOH�����FDQ�EH�XVHG�LQ�DOO�IXQFWLRQV�WKDW�H[SHFW�D�SLQ�QXPEHU�

7DEOH������3LQ�FRQVWDQWV�LQWURGXFHG�LQ�$UGXLQR����

Constant Pin Number Constant Pin Number

A0 Analog input 0 (Digital 14) LED_BUILTIN On-board LED (Digital 13)

A1 Analog input 1 (Digital 15) SDA I2C Data (Digital 18)

A2 Analog input (Digital 16) SCL I2C Clock (Digital 19)

A3 Analog input (Digital 17) SS SPI Select (Digital 10)

A4 Analog input (Digital 18) MOSI SPI Input (Digital 11)

A5 Analog input (Digital 19) MISO SPI Output (Digital 12)

SCL SPI Clock (Digital 13)

148 | Chapter 5:ಗSimple Digital and Analog Input

}}

)LJXUH������6ZLWFK�FRQQHFWHG�XVLQJ�SXOO�GRZQ�UHVLVWRU

6WDQGDUG�$UGXLQR�ERDUGV�KDYH�D�EXLOW�LQ�/('�FRQQHFWHG�WR�SLQ�����,I\RXU�ERDUG�GRHV�QRW��VHH�5HFLSH�����IRU�LQIRUPDWLRQ�RQ�FRQQHFWLQJ�DQ/('�WR�DQ�$UGXLQR�SLQ�

Discussion7KH�setup�IXQFWLRQ�FRQILJXUHV�WKH�/('�SLQ�DV�OUTPUT�DQG�WKH�VZLWFK�SLQ�DV�INPUT�

$�SLQ�PXVW�EH�VHW�WR�OUTPUT�PRGH�IRU�digitalWrite�WR�FRQWURO�WKH�SLQ¦VRXWSXW�YROWDJH��,W�PXVW�EH�LQ�INPUT�PRGH�WR�UHDG�WKH�GLJLWDO�LQSXW�

7KH�digitalRead�IXQFWLRQ�PRQLWRUV�WKH�YROWDJH�RQ�WKH�LQSXW�SLQ��inputPin���DQG�LW�UH�WXUQV�D�YDOXH�RI�HIGH�LI�WKH�YROWDJH�LV�KLJK����YROWV��DQG�LOW�LI�WKH�YROWDJH�LV�ORZ����YROWV��$FWXDOO\��DQ\�YROWDJH�WKDW�LV�JUHDWHU�WKDQ�����YROWV��KDOI�RI�WKH�YROWDJH�SRZHULQJ�WKHFKLS��LV�FRQVLGHUHG�HIGH�DQG�OHVV�WKDQ�WKLV�LV�WUHDWHG�DV�LOW��,I�WKH�SLQ�LV�OHIW�XQFRQQHFWHG

5.1 Using a Switch | 151

�NQRZQ�DV�IORDWLQJ���WKH�YDOXH�UHWXUQHG�IURP�digitalRead�LV�LQGHWHUPLQDWH��LW�PD\�EHHIGH�RU�LOW��DQG�LW�FDQQRW�EH�UHOLDEO\�XVHG���7KH�UHVLVWRU�VKRZQ�LQ�)LJXUH�����HQVXUHVWKDW�WKH�YROWDJH�RQ�WKH�SLQ�ZLOO�EH�ORZ�ZKHQ�WKH�VZLWFK�LV�QRW�SUHVVHG��EHFDXVH�WKHUHVLVWRU�£SXOOV�GRZQ¤�WKH�YROWDJH�WR�JURXQG��:KHQ�WKH�VZLWFK�LV�SXVKHG��D�FRQQHFWLRQLV�PDGH�EHWZHHQ�WKH�SLQ�DQG����YROWV��VR�WKH�YDOXH�RQ�WKH�SLQ�LQWHUSUHWHG�E\�digitalRead�FKDQJHV�IURP�LOW�WR�HIGH�

'R�QRW�FRQQHFW�D�GLJLWDO�RU�DQDORJ�SLQ�WR�D�YROWDJH�KLJKHU�WKDQ���YROWV�RU�����YROWV�RQ�D����9�ERDUG���7KLV�FDQ�GDPDJH�WKH�SLQ�DQG�SRVVLEO\GHVWUR\�WKH�HQWLUH�FKLS��$OVR��PDNH�VXUH�\RX�GRQ¦W�ZLUH�WKH�VZLWFK�VRWKDW�LW�VKRUWV�WKH���YROWV�WR�JURXQG��ZLWKRXW�D�UHVLVWRU���$OWKRXJK�WKLVPD\�QRW�GDPDJH�WKH�$UGXLQR�FKLS��LW�LV�QRW�JRRG�IRU�WKH�SRZHU�VXSSO\�

,Q�WKLV�H[DPSOH��WKH�YDOXH�IURP�digitalRead�LV�VWRUHG�LQ�WKH�YDULDEOH�val��7KLV�ZLOO�EHHIGH�LI�WKH�EXWWRQ�LV�SUHVVHG��LOW�RWKHUZLVH�

7KH�VZLWFK�XVHG� LQ� WKLV�H[DPSOH��DQG�DOPRVW�HYHU\ZKHUH�HOVH� LQ� WKLVERRN��PDNHV�HOHFWULFDO�FRQWDFW�ZKHQ�SUHVVHG�DQG�EUHDNV�FRQWDFW�ZKHQQRW�SUHVVHG��7KHVH�VZLWFKHV�DUH�FDOOHG�1RUPDOO\�2SHQ��12���VHH�WKLVERRN¦V�ZHEVLWH�IRU�SDUW�QXPEHUV��7KH�RWKHU�NLQG�RI�PRPHQWDU\�VZLWFKLV�FDOOHG�1RUPDOO\�&ORVHG��1&��

7KH�RXWSXW�SLQ�FRQQHFWHG�WR�WKH�/('�LV�WXUQHG�RQ�ZKHQ�\RX�VHW�val�WR�HIGH��LOOXPLQDWLQJWKH�/('�

$OWKRXJK�$UGXLQR�VHWV�DOO�GLJLWDO�SLQV�DV�LQSXWV�E\�GHIDXOW��LW�LV�D�JRRG�SUDFWLFH�WR�VHWWKLV�H[SOLFLWO\�LQ�\RXU�VNHWFK�WR�UHPLQG�\RXUVHOI�DERXW�WKH�SLQV�\RX�DUH�XVLQJ�

<RX�PD\�VHH�VLPLODU�FRGH�WKDW�XVHV�true�LQVWHDG�RI�HIGH��WKHVH�FDQ�EH�XVHG�LQWHUFKDQJH�DEO\��WKH\�DUH�DOVR�VRPHWLPHV�UHSUHVHQWHG�DV�1���/LNHZLVH��false�LV�WKH�VDPH�DV�LOW�DQG0��8VH�WKH�IRUP�WKDW�EHVW�H[SUHVVHV�WKH�PHDQLQJ�RI�WKH�ORJLF�LQ�\RXU�DSSOLFDWLRQ�

$OPRVW�DQ\�VZLWFK�FDQ�EH�XVHG��DOWKRXJK�WKH�RQHV�FDOOHG�PRPHQWDU\�WDFWLOH�VZLWFKHV�DUHSRSXODU�EHFDXVH�WKH\�DUH�LQH[SHQVLYH�DQG�FDQ�SOXJ�GLUHFWO\�LQWR�D�EUHDGERDUG��6HH�WKHZHEVLWH�IRU�WKLV�ERRN�IRU�VRPH�VXSSOLHU�SDUW�QXPEHUV�

+HUH�LV�DQRWKHU�ZD\�WR�LPSOHPHQW�WKH�ORJLF�LQ�WKH�SUHFHGLQJ�VNHWFK�

void loop(){ digitalWrite(ledPin, digitalRead(inputPin)); // turn LED ON if input pin is // HIGH, else turn OFF}

7KLV�GRHVQ¦W�VWRUH�WKH�EXWWRQ�VWDWH�LQWR�D�YDULDEOH��,QVWHDG��LW�VHWV�WKH�/('�RQ�RU�RIIGLUHFWO\�IURP�WKH�YDOXH�REWDLQHG�IURP�digitalRead��,W�LV�D�KDQG\�VKRUWFXW��EXW�LI�\RXILQG�LW�RYHUO\�WHUVH��WKHUH�LV�QR�SUDFWLFDO�GLIIHUHQFH�LQ�SHUIRUPDQFH��VR�SLFN�ZKLFKHYHUIRUP�\RX�ILQG�HDVLHU�WR�XQGHUVWDQG�

152 | Chapter 5:ಗSimple Digital and Analog Input

7KH�SXOO�XS�FRGH�LV�VLPLODU�WR�WKH�SXOO�GRZQ�YHUVLRQ��EXW�WKH�ORJLF�LV�UHYHUVHG��WKH�YDOXHRQ�WKH�SLQ�JRHV�LOW�ZKHQ�WKH�EXWWRQ�LV�SUHVVHG��VHH�)LJXUH�����IRU�D�VFKHPDWLF�GLDJUDPRI�WKLV���,W�PD\�KHOS�WR�WKLQN�RI�WKLV�DV�SUHVVLQJ�WKH�VZLWFK�DOWN��FDXVLQJ�WKH�RXWSXW�WRJR�LOW�

void loop(){ int val = digitalRead(inputPin); // read input value if (val == HIGH) // check if the input is HIGH { digitalWrite(ledPin, LOW); // turn LED OFF } else { digitalWrite(ledPin, HIGH); // turn LED ON }}

)LJXUH������6ZLWFK�FRQQHFWHG�XVLQJ�SXOO�XS�UHVLVWRU

See Also7KH�$UGXLQR�UHIHUHQFH�IRU�digitalRead��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�'LJLWDO5HDG

7KH�$UGXLQR�UHIHUHQFH�IRU�digitalWrite��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�'LJLWDO:ULWH

7KH�$UGXLQR�UHIHUHQFH�IRU�pinMode��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�3LQ0RGH

7KH�$UGXLQR�UHIHUHQFHV�IRU�FRQVWDQWV��HIGH��LOW��HWF����KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�&RQVWDQWV

$UGXLQR�WXWRULDO�RQ�GLJLWDO�SLQV��KWWS���DUGXLQR�FF�HQ�7XWRULDO�'LJLWDO3LQV

5.1 Using a Switch | 153

7KH�SXOO�XS�FRGH�LV�VLPLODU�WR�WKH�SXOO�GRZQ�YHUVLRQ��EXW�WKH�ORJLF�LV�UHYHUVHG��WKH�YDOXHRQ�WKH�SLQ�JRHV�LOW�ZKHQ�WKH�EXWWRQ�LV�SUHVVHG��VHH�)LJXUH�����IRU�D�VFKHPDWLF�GLDJUDPRI�WKLV���,W�PD\�KHOS�WR�WKLQN�RI�WKLV�DV�SUHVVLQJ�WKH�VZLWFK�DOWN��FDXVLQJ�WKH�RXWSXW�WRJR�LOW�

void loop(){ int val = digitalRead(inputPin); // read input value if (val == HIGH) // check if the input is HIGH { digitalWrite(ledPin, LOW); // turn LED OFF } else { digitalWrite(ledPin, HIGH); // turn LED ON }}

)LJXUH������6ZLWFK�FRQQHFWHG�XVLQJ�SXOO�XS�UHVLVWRU

See Also7KH�$UGXLQR�UHIHUHQFH�IRU�digitalRead��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�'LJLWDO5HDG

7KH�$UGXLQR�UHIHUHQFH�IRU�digitalWrite��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�'LJLWDO:ULWH

7KH�$UGXLQR�UHIHUHQFH�IRU�pinMode��KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�3LQ0RGH

7KH�$UGXLQR�UHIHUHQFHV�IRU�FRQVWDQWV��HIGH��LOW��HWF����KWWS���DUGXLQR�FF�HQ�5HIHUHQFH�&RQVWDQWV

$UGXLQR�WXWRULDO�RQ�GLJLWDO�SLQV��KWWS���DUGXLQR�FF�HQ�7XWRULDO�'LJLWDO3LQV

5.1 Using a Switch | 153

PÅLITELIG SJEKK AV BRYTERE

PÅLITELIG SJEKK AV BRYTERE

• Når en bryter slås på hender det som regel at verdiene går mellom høy og lav mange ganger veldig fort.

PÅLITELIG SJEKK AV BRYTERE

• Når en bryter slås på hender det som regel at verdiene går mellom høy og lav mange ganger veldig fort.

• Vi kan kompensere for dette i koden vår.

PÅLITELIG SJEKK AV BRYTERE

• Når en bryter slås på hender det som regel at verdiene går mellom høy og lav mange ganger veldig fort.

• Vi kan kompensere for dette i koden vår.

• Dette kalles på engelsk for debouncing.

const int buttonPin = 2;     // the number of the pushbutton pin

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pin

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pin

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggled

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }  

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;  }

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;  } 

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;  }    digitalWrite(ledPin, buttonState);

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;  }    digitalWrite(ledPin, buttonState);  lastButtonState = reading;

const int buttonPin = 2;     // the number of the pushbutton pinconst int ledPin =  13;      // the number of the LED pin

int ledState = HIGH;         // the current state of the output pinint buttonState;             // the current reading from the input pinint lastButtonState = LOW;   // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggledlong debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {  pinMode(buttonPin, INPUT);  pinMode(ledPin, OUTPUT);}

void loop() {  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {    lastDebounceTime = millis();  }     if ((millis() - lastDebounceTime) > debounceDelay) {    buttonState = reading;  }    digitalWrite(ledPin, buttonState);  lastButtonState = reading;}

ANALOG INNDATA

ANALOG INPUT

ANALOG INPUT

• Arduinofunksjonen for å lese analog input heter analogRead og forteller hvor høy spenningen er, fra 0 til 5 volt, ved å gi et tall mellom 0 og 1023.

ANALOG INPUT

• Arduinofunksjonen for å lese analog input heter analogRead og forteller hvor høy spenningen er, fra 0 til 5 volt, ved å gi et tall mellom 0 og 1023.

• (Det er altså 10-bits analog-til-digital konvertering som skjer.)

int sensorPin = A0;    // select the input pin for the potentiometer

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LED

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);    

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);  

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);          

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:        

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:          digitalWrite(ledPin, LOW);  

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:          digitalWrite(ledPin, LOW);     // stop the program for for <sensorValue> milliseconds:

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:          digitalWrite(ledPin, LOW);     // stop the program for for <sensorValue> milliseconds:  delay(sensorValue);                  

int sensorPin = A0;    // select the input pin for the potentiometerint ledPin = 13;      // select the pin for the LEDint sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(ledPin, OUTPUT);  }

void loop() {  // read the value from the sensor:  sensorValue = analogRead(sensorPin);      // turn the ledPin on  digitalWrite(ledPin, HIGH);    // stop the program for <sensorValue> milliseconds:  delay(sensorValue);            // turn the ledPin off:          digitalWrite(ledPin, LOW);     // stop the program for for <sensorValue> milliseconds:  delay(sensorValue);                  }

ENDRE REKKEVIDDEN

ENDRE REKKEVIDDEN

• Hvis vi trenger verdier mellom 0 og 100 i stedet for mellom 0 og 1023 kan vi bruke funksjonen map.

ENDRE REKKEVIDDEN

• Hvis vi trenger verdier mellom 0 og 100 i stedet for mellom 0 og 1023 kan vi bruke funksjonen map.

• map(verdi, fraLav, fraHøy, tilLav, tilHøy)

ENDRE REKKEVIDDEN

• Hvis vi trenger verdier mellom 0 og 100 i stedet for mellom 0 og 1023 kan vi bruke funksjonen map.

• map(verdi, fraLav, fraHøy, tilLav, tilHøy)

• F.eks. vil map(verdi, 0, 1023, 0, 255) gjøre jobben.

DIGITALE UTDATA

DIGITAL UTDATA

DIGITAL UTDATA

• Alle pinner kan også brukes som digitale ut-pinner.

DIGITAL UTDATA

• Alle pinner kan også brukes som digitale ut-pinner.

• Da må de settes med pinMode(pin,OUTPUT).

DIGITAL UTDATA

• Alle pinner kan også brukes som digitale ut-pinner.

• Da må de settes med pinMode(pin,OUTPUT).

• Deretter kan vi bruke digitalWrite(pin,OUTPUT), hvor OUTPUT er enten HIGH eller LOW.

ANALOGE UTDATA

ANALOGE UTSIGNALER

ANALOGE UTSIGNALER

• Analog betyr her at vi skal kunne variere spenningen fra 0 til 5 volt.

ANALOGE UTSIGNALER

• Analog betyr her at vi skal kunne variere spenningen fra 0 til 5 volt.

• Her kan vi bruke funksjonen analogWrite(pin,OUTPUT), hvor OUTPUT er et tall fra 0 til 255.

ANALOGE UTSIGNALER

• Analog betyr her at vi skal kunne variere spenningen fra 0 til 5 volt.

• Her kan vi bruke funksjonen analogWrite(pin,OUTPUT), hvor OUTPUT er et tall fra 0 til 255.

• Dette kan kun gjøres på pinner 3, 5, 6, 9, 10 og 11.

ANALOGE UTSIGNALER

• Analog betyr her at vi skal kunne variere spenningen fra 0 til 5 volt.

• Her kan vi bruke funksjonen analogWrite(pin,OUTPUT), hvor OUTPUT er et tall fra 0 til 255.

• Dette kan kun gjøres på pinner 3, 5, 6, 9, 10 og 11.

• Metoden som ligger under kalles pulsbreddemodulasjon.

PULSBREDDEMODULASJON

PULSBREDDEMODULASJON

• Pulse Width Modulation (PWM)

PULSBREDDEMODULASJON

• Pulse Width Modulation (PWM)

• Ved å slå av og på strøm veldig raskt, klarer Arduinokortet å simulere en spenning mellom 0 og 5 volt.

PULSBREDDEMODULASJON

• Pulse Width Modulation (PWM)

• Ved å slå av og på strøm veldig raskt, klarer Arduinokortet å simulere en spenning mellom 0 og 5 volt.

• Frekvensen er ca. 500 Hz.

3:0�ZRUNV�E\�YDU\LQJ�WKH�SURSRUWLRQ�RI�WKH�SXOVHV¦�RQ�WLPH�WR�RII�WLPH��DV�VKRZQ�LQ)LJXUH������/RZ�OHYHO�RXWSXW�LV�HPXODWHG�E\�SURGXFLQJ�SXOVHV�WKDW�DUH�RQ�IRU�RQO\�DVKRUW�SHULRG�RI�WLPH��+LJKHU�OHYHO�RXWSXW�LV�HPXODWHG�ZLWK�SXOVHV�WKDW�DUH�RQ�PRUH�WKDQWKH\�DUH�RII��:KHQ�WKH�SXOVHV�DUH�UHSHDWHG�TXLFNO\�HQRXJK��DOPRVW�����WLPHV�SHU�VHFRQGRQ�$UGXLQR���WKH�SXOVLQJ�FDQQRW�EH�GHWHFWHG�E\�KXPDQ�VHQVHV��DQG�WKH�RXWSXW�IURPWKLQJV�VXFK�DV�/('V�ORRNV�OLNH�LW�LV�EHLQJ�VPRRWKO\�YDULHG�DV�WKH�SXOVH�UDWH�LV�FKDQJHG�

)LJXUH������3:0�RXWSXW�IRU�YDULRXV�DQDORJ:ULWH�YDOXHV

$UGXLQR�KDV�D�OLPLWHG�QXPEHU�RI�SLQV�WKDW�FDQ�EH�XVHG�IRU�DQDORJ�RXWSXW��2Q�D�VWDQGDUGERDUG��\RX�FDQ�XVH�SLQV�����������������DQG�����2Q�WKH�$UGXLQR�0HJD�ERDUG��\RX�FDQXVH�SLQV���WKURXJK����IRU�DQDORJ�RXWSXW��0DQ\�RI�WKH�UHFLSHV�WKDW�IROORZ�XVH�SLQV�WKDWFDQ�EH�XVHG�IRU�ERWK�GLJLWDO�DQG�DQDORJ�WR�PLQLPL]H�UHZLULQJ�LI�\RX�ZDQW�WR�WU\�RXWGLIIHUHQW�UHFLSHV��,I�\RX�ZDQW�WR�VHOHFW�GLIIHUHQW�SLQV�IRU�DQDORJ�RXWSXW��UHPHPEHU�WRFKRRVH�RQH�RI�WKH�VXSSRUWHG�analogWrite�SLQV��RWKHU�SLQV�ZLOO�QRW�JLYH�DQ\�RXWSXW��

Controlling Light&RQWUROOLQJ�OLJKW�XVLQJ�GLJLWDO�RU�DQDORJ�RXWSXW�LV�D�YHUVDWLOH��HIIHFWLYH��DQG�ZLGHO\�XVHGPHWKRG�IRU�SURYLGLQJ�XVHU�LQWHUDFWLRQ��6LQJOH�/('V��DUUD\V��DQG�QXPHULF�GLVSOD\V�DUH

242 | Chapter 7:ಗVisual Output

LITT OM LYSDIODER

LYSDIODER

LYSDIODER• En LED er en diode som kun slipper strøm gjennom i én

retning.

LYSDIODER• En LED er en diode som kun slipper strøm gjennom i én

retning.

• Den har to ben, anode (vanligvis litt lenger) og katode, og når spenningen fra anode til katode er høy nok, så slippes strøm gjennom og den lyser.

LYSDIODER• En LED er en diode som kun slipper strøm gjennom i én

retning.

• Den har to ben, anode (vanligvis litt lenger) og katode, og når spenningen fra anode til katode er høy nok, så slippes strøm gjennom og den lyser.

• Spenningen som skal til for at den lyser (forward voltage) er vanligvis på 1,8 volt.

LYSDIODER + MOTSTANDER

LYSDIODER + MOTSTANDER

• Strømmen gjennom en lysdiode må begrenses med en motstand.

LYSDIODER + MOTSTANDER

• Strømmen gjennom en lysdiode må begrenses med en motstand.

• Hver Arduinopinne kan gi opp til 40 mA.

LYSDIODER + MOTSTANDER

• Strømmen gjennom en lysdiode må begrenses med en motstand.

• Hver Arduinopinne kan gi opp til 40 mA.

• En lysdiode trenger typisk 20 mA for å lyse.

7KH�GDWD�VKHHW�UHIHUV�WR����P$�DV�WKH�DEVROXWH�PD[LPXP�UDWLQJ�DQGVRPH�HQJLQHHUV�PD\�EH�KHVLWDQW�WR�RSHUDWH�DQ\ZKHUH�QHDU�WKLV�YDOXH�+RZHYHU��WKH����P$�ILJXUH�LV�DOUHDG\�GH�UDWHG�E\�$WPHO�DQG�WKH\�VD\WKH�SLQV�FDQ�VDIHO\�KDQGOH�WKLV�FXUUHQW��5HFLSHV�WKDW�IROORZ�UHIHU�WR�WKH���P$�PD[LPXP�UDWLQJ��KRZHYHU��LI�\RX�DUH�EXLOGLQJ�DQ\WKLQJ�ZKHUHUHOLDELOLW\� LV� LPSRUWDQW��GH�UDWLQJ� WKLV� WR����P$�WR�SURYLGH�DQ�DGGHGFRPIRUW�PDUJLQ�LV�SUXGHQW�

7.1 Connecting and Using LEDsProblem<RX�ZDQW�WR�FRQWURO�RQH�RU�PRUH�/('V�DQG�VHOHFW�WKH�FRUUHFW�FXUUHQW�OLPLWLQJ�UHVLVWRUVR�WKDW�\RX�GR�QRW�GDPDJH�WKH�/('V�

Solution7XUQLQJ�DQ�/('�RQ�DQG�RII� LV�HDV\�WR�GR�ZLWK�$UGXLQR��DQG�VRPH�RI�WKH�UHFLSHV� LQSUHYLRXV�FKDSWHUV�KDYH� LQFOXGHG�WKLV�FDSDELOLW\� �VHH�5HFLSH����� IRU�DQ�H[DPSOH�WKDWFRQWUROV�WKH�EXLOW�LQ�/('�RQ�SLQ������7KH�UHFLSH�KHUH�SURYLGHV�JXLGDQFH�RQ�FKRRVLQJDQG�XVLQJ�H[WHUQDO�/('V��)LJXUH�����VKRZV�WKH�ZLULQJ�IRU�WKUHH�/('V��EXW�\RX�FDQ�UXQWKLV�VNHWFK�ZLWK�MXVW�RQH�RU�WZR�

)LJXUH������&RQQHFWLQJ�H[WHUQDO�/('V

7KH�VFKHPDWLF�V\PERO�IRU�WKH�FDWKRGH��WKH�QHJDWLYH�SLQ��LV�N��QRW�F��7KHVFKHPDWLF�V\PERO�F�LV�XVHG�IRU�D�FDSDFLWRU�

7.1 Connecting and Using LEDs | 245

FRITZING

FRITZING

FRITZING• Dette er programvare for å dokumentere prosjekter og lage

design av kretskort.

FRITZING• Dette er programvare for å dokumentere prosjekter og lage

design av kretskort.

• Det forenkler prosessen fra prototype til endelig design.

FRITZING• Dette er programvare for å dokumentere prosjekter og lage

design av kretskort.

• Det forenkler prosessen fra prototype til endelig design.

• Også åpen kildekode og i samme familie som Processing og Arduino.

FRITZING• Dette er programvare for å dokumentere prosjekter og lage

design av kretskort.

• Det forenkler prosessen fra prototype til endelig design.

• Også åpen kildekode og i samme familie som Processing og Arduino.

• Se http://fritzing.org/ for mer informasjon!

AREF

GND

RESET

3V3

PWM

PWM

PWM

L

TXRX

USB

EXTPWRSEL

PWR

ICSP

PWM

PWM

PWM TX

RX

312111019 8DIGITAL

7 6 5 4 3 2 1 0

1

5V GndPOWER

www.arduino.cc

ANALOG IN9V 0 1 2 3 4 5

Arduino

top related