JETson 超声波测距及报警

1、主要设备

超声波测距传感器+蜂鸣器+报警灯

 

 

 代码中的管脚均是GPIO中对应的管脚,蜂鸣器和led控制较简单,初始化后使用高低电平控制开关

2、全部代码

import RPi.GPIO as GPIO
import time

#warndistance = float(input("请输入警戒距离"))
warndistance = 100 #设置报警距离,单位cm

makerobo_TRIG = 11  # 超声波模块Tring控制管脚
makerobo_ECHO = 12  # 超声波模块Echo控制管脚
makerobo_BuzzerPin = 7 # 蜂鸣器控制管脚
pin_R = 33 # 定义红色LED灯PIN


def makerobo_setup():

    GPIO.setmode(GPIO.BOARD)      # 采用实际的物理管脚给GPIO口
    GPIO.setwarnings(False)       # 忽略GPIO操作注意警告
    # 超声波模块初始化
    GPIO.setup(makerobo_TRIG, GPIO.OUT) # Tring设置为输出模式
    GPIO.setup(makerobo_ECHO, GPIO.IN)  # Echo设置为输入模式
    #蜂鸣器初始化
    GPIO.setup(makerobo_BuzzerPin, GPIO.OUT)  # 设置有源蜂鸣器管脚为输出模式
    GPIO.output(makerobo_BuzzerPin, GPIO.HIGH)  # 蜂鸣器设置为高电平,关闭蜂鸟器
    #LED灯
    GPIO.setup(pin_R, GPIO.OUT)

# 超声波计算距离函数
def ur_disMeasure():
    GPIO.output(makerobo_TRIG, 0)  # 开始起始
    time.sleep(0.000002)           # 延时2us

    GPIO.output(makerobo_TRIG, 1)  # 超声波启动信号,延时10us
    time.sleep(0.00001)            # 发出超声波脉冲
    GPIO.output(makerobo_TRIG, 0)           # 设置为低电平

    while GPIO.input(makerobo_ECHO) == 0: # 等待回传信号
        us_a = 0
    us_time1 = time.time()                # 获取当前时间
    while GPIO.input(makerobo_ECHO) == 1: # 回传信号截止信息
        us_a = 1
    us_time2 = time.time()                # 获取当前时间

    us_during = us_time2 - us_time1          # 转换微秒级的时间
    # 声速在空气中的传播速度为340m/s, 超声波要经历一个发送信号和一个回波信息,
    # 计算公式如下所示:
    return us_during * 340 / 2 * 100        # 求出距离


# 循环函数
def makerobo_loop():
    while True:
        us_dis = ur_disMeasure()   # 获取超声波计算距离
        if us_dis < warndistance:
            GPIO.output(makerobo_BuzzerPin, GPIO.LOW)# 蜂鸣器为低电平触发,使蜂鸣器发声
            GPIO.output(pin_R, GPIO.HIGH)
            time.sleep(0.3)
            GPIO.output(pin_R, GPIO.LOW)
        else:
            GPIO.output(makerobo_BuzzerPin, GPIO.HIGH)# 蜂鸣器为高电平触发,使蜂鸣器不发声

        print (us_dis, 'cm')       # 打印超声波距离值
        print ('')
        time.sleep(0.3)            # 延时300ms
# 资源释放函数
def destroy():
    GPIO.cleanup() # 释放资源

# 程序入口
if __name__ == "__main__":
    makerobo_setup()
    try:
        makerobo_loop()
    except KeyboardInterrupt: # 当按下Ctrl+C时,将执行destroy()子程序。
        destroy() # 释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值