import RPi.GPIO as GPIO
import time
TRIG = 26
ECHO =19
GREEN = 6
YELLOW= 5
RED= 13
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#GPIO.setup(TRIG,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.setup(GREEN, GPIO.OUT)
GPIO.setup(YELLOW, GPIO.OUT)
GPIO.setup(RED, GPIO.OUT)
def getPercentage():
# time.sleep(2)
#发送触发信号
GPIO.output(TRIG,0)
#time.sleep(0.000015)
time.sleep(0.000002)
GPIO.output(TRIG,1)
time.sleep(0.00001)
GPIO.output(TRIG,0)
#等待回波信号
while GPIO.input(ECHO)==0:
us_a=0
t1 = time.time()
while GPIO.input(ECHO)==1:
us_a=1
t2 = time.time()
#获取回响信号的时长
#根据公式计算距离
distance = round((t2 - t1) * 340 /2*100,2)
#print(distance)
return distance
def openGreen():
GPIO.output(RED, False)
GPIO.output(YELLOW, False)
GPIO.output(GREEN, True)
def openYellow():
GPIO.output(RED, False)
GPIO.output(YELLOW, True)
GPIO.output(GREEN, False)
def openRed():
GPIO.output(RED, True)
GPIO.output(YELLOW, False)
GPIO.output(GREEN, False)
if __name__=='__main__':
while(True):
x = getPercentage()
# print("当前容量为"+str(x)+"%")
if x>14:
openGreen()
print("绿灯亮")
elif 4<x<14:
openYellow()
print("黄灯亮")
else:
openRed()
print("红灯亮")
time.sleep(1)
GPIO.cleanup()
利用超声波传感器探测距离,根据距离,将相应的LED点亮。