我正在尝试创建一个距离测量设备来测量家中软水器的盐含量。我是一名贸易软件工程师,但我很擅长学习硬件的电子方面。
似乎一切都应该有效,我已经阅读了很多关于如何用HC-SR04测量距离的指南,但似乎我得到的每个记录都是不同的,这是奇怪的,因为距离传感器坐着面朝下在一张木桌上。是不是每次都读取0或真的接近它?
下面你会看到python结果的截图。请注意,结果表明它返回了一个很大的数字,这些数字非常大。通常为3,000至120,000。 GPIO引脚本身是否可能发生某些事情?
我可能会提到我的HC-SR04直接连接到GPIO。我的地是接地,VCC是5v,Echo上有1k电阻,在BCM22上,我的触发器在BCM17上。
这是桌面上HC-SR04的图片。
这是我的python文件所包含的内容。
import RPi.GPIO as GPIO
import os, signal
from time import time, sleep
while True:
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(22,GPIO.IN)
GPIO.output(17, GPIO.LOW)
sleep(0.1)
GPIO.output(17, GPIO.HIGH)
sleep(0.00001)
GPIO.output(17, GPIO.LOW)
while GPIO.input(22) == GPIO.LOW:
pulse_start = time()
while GPIO.input(22) == GPIO.HIGH:
pulse_end = time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17160.5
distance = round(distance, 2)
if (distance > 4):
print("Distance recorded a really large number, something isn't right. Restarting...")
GPIO.cleanup()
sleep(0)
else:
print(distance)
GPIO.cleanup()
sleep(60)
对此的任何和所有帮助将不胜感激。如果我做错了什么,我会是第一个承认的,但请提供有用的反馈。由于空间有限,我宁愿不使用面包板。