Distansemåler

rodland   January 17, 2017   No Comments on Distansemåler

Kobling av ultralydsensor

Programmering

Sensoren virker på den måten at den sender ut en lyd (som vi ikke kan høre) og så måler den tiden før mikrofonen oppdager ekkoet. Når vi vet den tiden går det an å regne dette om til avstand.

/*
 HC-SR04 Ping distance sensor:
 VCC to arduino 5v 
 GND to arduino GND
 Echo to Arduino pin 7 
 Trig to Arduino pin 8
 
 This sketch originates from Virtualmix: http://goo.gl/kJ8Gl
 Has been modified by Winkle ink here: http://winkleink.blogspot.com.au/2012/05/arduino-hc-sr04-ultrasonic-distance.html
 And modified further by ScottC here: http://arduinobasics.blogspot.com.au/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html
 on 10 Nov 2012.
 */


#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Led lampe for å vise feilmåling

int maximumRange = 200; // Lengste avstand som er ønskelig å registrere
int minimumRange = 0; // Korteste avstand som er ønskelig å registrere
long duration, distance; // Bariabel som holder rede på hvor lang tid ekkoet bruker

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT); 
}

void loop() {
/* I loopen sender vi ut et signal og tar tiden på hvor lang tid det tar før ekkoet kommer tilbake. . */ 
 digitalWrite(trigPin, LOW);  // skrur av signalet for å være sikker på at det er "helt stille"
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH); // sender ut ultralydsignal
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW); // skrur vi av lydsignalet igjen
 duration = pulseIn(echoPin, HIGH); //leser vi hvor lang tid det tok før ekkoet kom tilbake. 
 
// Det må gjøres en liten omregning for å få tallet i cm
 distance = duration/58.2;
 
// En sjekk for å se om signalet er over eller under maks verdiene
 if (distance >= maximumRange || distance <= minimumRange){
 Serial.println("-1"); // Skriver -1 som "feilmelding"
 digitalWrite(LEDPin, HIGH); // skrur på led lampen for å vise "feil" 
 }
 else {
// Hvis målingen er innefor maks / min sendes avstanden til datamaskinen
 Serial.println(distance);
 digitalWrite(LEDPin, LOW); // skrur av ledlampen (ingen feil). 
 }
 
 //Delay 50ms before next reading.
 delay(50); // en liten pause før neste måling
}