arduino实现按键控制的超声波测距,程序及连线如下,结果要比实际大得多,为什么
const int buttonPin = 2;const int TrigPin = 8;
const int EchoPin = 9;
int buttonState = 0;
float mm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loap()
{
int val = digitalRead(buttonPin);
if(val ==LOW)
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
mm = pulseIn(EchoPin, HIGH) / 580.0; //将回波时间换算成cm
Serial.print(mm);
Serial.print("mm");
Serial.println();
delay(2000);
else
{
digitalWrite(EchoPin, LOW);
digitalWrite(TrigPin, LOW);
}
}
超声检测不是一个点,是一个面,这个面是个15度宽的扇形,楼长说的远近是否注意到了这点。 模块不准或你的程序有问题,另外声速与空气的温度有关 顶!!!!!!!!!!!!!!!!! 看看是否接近两倍,超声波测距应该是来回距离。 :o:o:o:o:o:o mm = pulseIn(EchoPin, HIGH) / 580.0; //将回波时间换算成cm
这一句好像不对啊。
页:
[1]