2016-10-12 5 views
0

У меня есть датчик PING (HC-SR04), подключенный к моему RPI. Я хочу, чтобы он начал отсчет, когда датчик видит менее 40 см. Он должен прекратить отсчет снова, когда датчик снова увидит менее 40 см, распечатайте время и снова начните подсчет. Как я могу это сделать? Это мой код:PING датчик на RPI, начало отсчета когда менее 40 см?

#include <stdio.h> 
#include <stdlib.h> 
#include <wiringPi.h> 

#define TRUE 1 

#define TRIG 5 
#define ECHO 6 

void setup() { 
    wiringPiSetup(); 
    pinMode(TRIG, OUTPUT); 
    pinMode(ECHO, INPUT); 

    //TRIG pin must start LOW 
    digitalWrite(TRIG, LOW); 
    delay(30); 
} 

int 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; 

    //Get distance in cm 
    int distance = travelTime/58; 

    return distance; 
} 

int i; 

int main(void) { 
    setup(); 

    while (1) 
    { 
      printf("Distance: %dcm\n", getCM()); 
      delay(250); 
    } 

    return 0; 
} 
+0

Какая гранулярность вам нужна во времени? – LPs

+0

Вы имеете в виду, как минуты и секунды? Тогда мне нужны секунды и миллисекунды. –

ответ

0

Код не измеряет расстояние. Он измеряет только длительность отраженного сигнала. Чтобы получить расстояние, которое необходимо измерить задержку между началом опрашивать, а начало эха:

startTime = micros(); 

    digitalWrite(TRIG, HIGH); 
    delayMicroseconds(20); 
    digitalWrite(TRIG, LOW); 

    //Wait for echo start 
    while(digitalRead(ECHO) == LOW); 
    long travelTime = micros() - startTime; 

Конечно, это всего лишь скелет: вы должны дребезгом эха, чтобы защитить себя от фоновых шумов и другие глюки.

+0

Я не уверен, что вы имеете в виду? Я получаю дистанцию ​​с моим кодом? Он отлично подходит для измерения расстояния –

 Смежные вопросы

  • Нет связанных вопросов^_^