
有佬知道具体原因的,留下联系方式我联系你,希望有人能解决,有人遇到类似的问题吗?
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
关于超声波传感器测距,在OLED屏幕上,测量的距离一直显示0厘米的问题,可能有以下几种原因:
超声波传感器的连接问题:请确保超声波传感器已经正确连接到相应的引脚,同时确认引脚与代码中的引脚相对应。
硬件问题: 请确保所使用的超声波传感器有效且可测量,也要确保OLED屏幕有效,同时需要注意设备之间的电流和电压问题。
程序问题: 请检查相关程序是否正确设置、编译和烧录,参考一下常见的超声波测距程序示例,也要注意代码的精确性。
解决方案:
检查引脚连接问题: 首先,检查连接引脚是否正确、可靠,超声波传感器连接到的是信号接口,接口输出电平高低电平表示来回反弹时间,反弹时间代表了雷达与检测物间的路程,路程是速度乘时间,所以测量的值也需要通过处理映射到前方的距离上。
确认硬件工作正常: 尝试更换超声波传感器,确认OLED屏幕能够正常工作,可以通过单独测试两个部分来确定设备健康状态。
检查程序代码并尝试修改代码: 确认程序中引脚的连接方式,超声波传感器连接的引脚应该与代码中的对应引脚相同;检查测量距离的公式和相关的代码设置,也要注意在程序中不要错误地使用变量或不正确地使用代码中的函数。
修改后的代码示例:
// 超声波传感器测距代码
int trigPin = 7; // 设定超声波传感器引脚
int echoPin = 8; // 设定超声波传感器引脚
long duration;
int distanceCm, distanceInch;
void setup() {
pinMode(trigPin, OUTPUT); // 配置传感器引脚为输出接口
pinMode(echoPin, INPUT); // 配置传感器引脚为输入接口
Serial.begin(9600); // 启动串口通信
}
void loop() {
digitalWrite(trigPin, LOW); // 生成低电平触发信号,注意不要短路接口
delayMicroseconds(2); // 给出了针脚一个2微秒的高电平脉冲来启动传感器
digitalWrite(trigPin, HIGH); // 这个信号持续10微秒
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // 关闭输入电平
duration = pulseIn(echoPin, HIGH); // 必须等待传感器引脚输出高电平等待测距完成
distanceCm = duration / 29 / 2; // 根据声速计算距离
distanceInch = duration / 74 / 2;
Serial.print(distanceCm);
Serial.print("cm");
Serial.print(" ");
Serial.print(distanceInch);
Serial.print("inch");
Serial.println();
delay(500); // 程序中添加延时,便于能够观察到结果打印在串口终端上
}
以上是超声波传感器测距,在OLED屏幕上测量的每次距离都显示为0厘米的问题的具体原因和解决方案,希望能够帮到你!