User Tools

Site Tools


raspberrypi:wiringpi:ultra

This is an old revision of the document!


Ultragarsinis atstumo matuoklis (HC-SR04)

Veikia aido principu. Paleidžia 20 mikrosekundžių (1/1 000 000 sekundės dalis) ultragarso impulsą ir klausosi kol išgirs aidą. Tada išmatuoja kiek praėjo laiko kol išgirdo aidą ir tada suskaičiuoja atstumą. 1 cm garsas pirmyn atgal keliauja 58 mikrosekundes.

#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
 
/*
gcc -Wall -o ultra ultra.c -lwiringPi -std=c11
sudo ./ultra
*/
 
#define TRIG 12
#define ECHO 16
 
void setup() {
    //wiringPiSetup();
    wiringPiSetupGpio();
    pinMode(TRIG, OUTPUT);
    pinMode(ECHO, INPUT);
 
    //TRIG pin must start LOW
    digitalWrite(TRIG, LOW);
    delay(100);
}
 
double getCM() {
    //Send trig pulse
    digitalWrite(TRIG, HIGH);
    delayMicroseconds(20);
    digitalWrite(TRIG, LOW);
 
    //Wait for echo start
    while(digitalRead(ECHO) == LOW);
 
    //Wait for echo end
    long startTime = micros();
    while(digitalRead(ECHO) == HIGH);
    long travelTime = micros() - startTime;
 
    double distance = travelTime / 58.0; //Get distance in cm
 
    return distance;
}
 
int main(void) {
    setup();
    while (1) {
        printf("Distance: %8.0fcm \r", getCM());  fflush(stdout);
    }
    return 0;
}
raspberrypi/wiringpi/ultra.1486634660.txt.gz · Last modified: by aistis