У меня есть датчик 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;
}
Какая гранулярность вам нужна во времени? – LPs
Вы имеете в виду, как минуты и секунды? Тогда мне нужны секунды и миллисекунды. –