我的程序已经编译成功,并且上传到了板子中,但是返回来的存储时间为0,测距都是0.下面是我的超声波测距代码:/*Arduino UNO与US-100超声波模块测试
电平触发模式
*/
const int TrigPin = 7;
const int EchoPin = 8;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print("Distance:");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}
2017-11-1 10:54:18
你不觉得delayMicroseconds(2); 有些小么?当然不排除你想检测的距离较小,但什么东西都有一个测量范围的。
你不觉得delayMicroseconds(2); 有些小么?当然不排除你想检测的距离较小,但什么东西都有一个测量范围的。
举报
2017-11-3 22:00:33
采用IO触发测距,给至少10us的高电平信号;
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10); //你这是10ns不是10us
采用IO触发测距,给至少10us的高电平信号;
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10); //你这是10ns不是10us
举报
2018-9-13 12:33:20
可能是你引脚不对吧。论坛不是有一个完整的么?两个引脚一个是数字引脚,一个是模拟信号引号,你这两个都输数字输出输入的引脚。
可能是你引脚不对吧。论坛不是有一个完整的么?两个引脚一个是数字引脚,一个是模拟信号引号,你这两个都输数字输出输入的引脚。
举报