我已經設置了3個HC-SR04超聲波傳感器,可以連續運行樹莓派。其中兩個傳感器完美工作,而其中一個非常不穩定。我多次更換電線,傳感器和麪包板,並更改與傳感器相關的觸發和回顯引腳。我已經調試代碼,並隔離在下面的代碼中的問題傳感器:帶有樹莓派2b +的超聲波傳感器造成編譯錯誤
import RPi.GPIO as GPIO
import time
TRIG1 = 13
ECHO1 = 15
##TRIG2 = 22
##ECHO2 = 18
##
##TRIG3 = 37
##ECHO3 = 40
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(TRIG1, GPIO.OUT)
GPIO.output(TRIG1, 0)
##GPIO.setup(TRIG2, GPIO.OUT)
##GPIO.output(TRIG2, 0)
##
##GPIO.setup(TRIG3, GPIO.OUT)
##GPIO.output(TRIG3, 0)
GPIO.setup(ECHO1, GPIO.IN)
##GPIO.setup(ECHO2, GPIO.IN)
##GPIO.setup(ECHO3, GPIO.IN)
while True:
time.sleep(0.1)
GPIO.output(TRIG1, 1)
time.sleep(0.00001)
GPIO.output(TRIG1, 0)
print("anything")
while GPIO.input(ECHO1) == 0:
print("Works")
time.sleep(1)
start1 = time.time()
while GPIO.input(ECHO1) ==1:
stop1 = time.time()
print("sensor 1:")
print (stop1-start1) * 17000
## time.sleep(0.1)
##
## GPIO.output(TRIG2, 1)
## time.sleep(0.00001)
## GPIO.output(TRIG2, 0)
##
## while GPIO.input(ECHO2) == 0:
## start2 = time.time()
##
## while GPIO.input(ECHO2) == 1:
## stop2 = time.time()
## print("sensor 2:")
## print (stop2-start2) * 17000
##
## time.sleep(0.1)
##
## GPIO.output(TRIG3, 1)
## time.sleep(0.00001)
## GPIO.output(TRIG3, 0)
##
## while GPIO.input(ECHO3) == 0:
## start3 = time.time()
##
## while GPIO.input(ECHO3) == 1:
## stop3 = time.time()
## print("sensor 3:")
## print (stop3-start3) * 17000
GPIO.cleanup()
,上面寫着「打印(」東西「)」行允許代碼編譯,但拿不出距離讀數,並會繼續打印「作品」,表示它在第一個while循環中連續運行。意外地當「打印(」任何「)」行被刪除時,錯誤:
print (stop1-start1) * 17000
NameError: name 'start1' is not defined
打印到終端。上面註釋的代碼與功能傳感器的代碼完全相同,但與當前未註釋的代碼隔離開來的代碼沒有錯誤。任何想法或建議將不勝感激。
謝謝。
在while循環外定義stop1和start1 – Gusman