You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Sensorer er innretninger som kan gi Arduino signal om en tilstand i den fysiske verden. For eksempel en temperatursensor. Vi har allerede snakket om noen typer sensorer: brytere og potmetere. Vi kan dele sensorer inn i to hovedgrupper:

  • Digitale sensorer
  • Analoge sensorer

En digital sensor gir et signal om at noe enten er av eller på, som for eksempel en trykkbryter. Det kan være brytere som en bruker trykker på, eller brytere som blir aktivert av en mekanisk bevegelse. Det kan også være brytere som aktiveres av andre ting som for eksempel en termostat som slås på ved en viss temperatur, eller reed-bryter som reagerer på magnetisme. 

Analoge sensorer, som for eksempel et potmeter, gir et variabelt signal. Analoge sensorer måler kontinuerlige verdier, og gir Arduino et signal som varierer mellom 0V og 5V. Det finnes også avanserte analoge sensorer som kommuniserer med Arduino digitalt, men det kommer vi tilbake til senere. Noen analoge sensorer er ferdig tilpasset Arduino, dvs at de gir 0-5V ut av boksen. Andre sensorer krever at de kobles opp i en krets for å kunne gi riktig signal. Når vi bruker analoge sensorer må vi ofte regne om verdiene som leses av til den størrelsen vi ønsker. For eksempel kan vi ha en temperaturmåler som opererer i området -100°C til +100°C og gir et signal som varierer mellom 0V og 5V. Siden det vi leser av i programmet er en spenning, må vi regne om til temperatur på denne måten:

Omregning fra spenning til temperatur
int reading, voltage, temp;


void setup(){
}


void loop(){
  reading=analogRead(0);          // Leser av spenningen på A0 
  voltage=reading/204.6;          // Regner om avlesning til spenning
  temp=( voltage * 40 ) - 100;    // Tallet 40 er 200/5 som tilsvarer antall grader per volt
}                                   // Vi må trekke fra 100 siden 0V tilsvarer -100°C

Dette kan gjøres mye enklere med funksjonen map som gjør omregningen for oss:

Omregning med map
int reading, temp;


void setup(){
}


void loop(){
  reading = analogRead(0);
  temp = map( reading, 0, 1023, -100, 100);
}        
  • No labels