树莓派_超声波传感器_三色LED

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点亮。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌三角猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值