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

