gpt4 book ai didi

c - PING 传感器开启 RPI,小于 40 厘米时开始计数?

转载 作者:行者123 更新时间:2023-11-30 16:56:12 25 4
gpt4 key购买 nike

我的 RPI 连接了一个 PING 传感器 (HC-SR04)。我希望它在传感器看到的距离小于 40 厘米时开始计数。当传感器再次看到小于 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;
}

最佳答案

该代码不测量距离。它仅测量反射信号的持续时间。要获得距离,您需要测量 ping 开始和 echo 开始之间的延迟:

    startTime = micros();

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

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

当然,这只是一个框架:您需要消除回声以防止背景噪音和其他故障。

关于c - PING 传感器开启 RPI,小于 40 厘米时开始计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com