背景

本人最因工作原因接触到各种电路板,传感器,而自己又是一个小白,随意在其他朋友的推荐下决定从树莓派开始玩传感器;本例子为树莓派控制红外避障传感器

材料

1、树莓派4b

2、火焰传感器模块

3、导线

操作

1、通过xshell 工具来连接树莓派4B,输入命令gpio readall 来获取当前树莓派的针脚

2、用导线连接树莓派的针脚2(物理编号,VCC,5V),针脚6(物理编号,GND,回路),18(物理编号 ,ECHO信号),7(物理编号,TRIGGER信号)分别对应传感器的VCC,GND,ECHO,TRIG脚。

 

3、编写GPIO控制代码

#!/usr/bin/env python3
import time
import RPi.GPIO as GPIO

trigger_pin =7
echo_pin =18

GPIO.setmode(GPIO.BOARD)
GPIO.setup(trigger_pin,GPIO.OUT)
GPIO.setup(echo_pin,GPIO.IN)

'''
TRIG 负责发射超声波,Echo 负责接收超声波

'''
def send_trigger_pulse():
    #发送超声波,一直发
    GPIO.output(trigger_pin,1)
    # 为了防止错误,因为紧接着就需要把发射端置为高电平
    time.sleep(0.0001)
    #发射端置为高电平
    GPIO.output(trigger_pin,0)

'''
ECHO 负责接收超声波
'''
def wait_for_echo(value,timeout):
    count = timeout
    #通过该代码持续获取ECHO的状态
    while GPIO.input(echo_pin)!= value and count>0:
        count = count-1

'''
计算距离
'''
def get_distance():
    # 发射
    send_trigger_pulse()
    # 接收高电平 1/True
    wait_for_echo(True,10000)
    # 等待
    start = time.time()
    #接收低电平
    wait_for_echo(False,10000)
    finish = time.time()
    pulse_len = finish-start
    distance_cm = pulse_len/0.000058
    return distance_cm

while True:
    print("cm = %f"%get_distance())
    time.sleep(1)

4、效果图

 

至此该样例就这样结束了。

预告

下一个传感器是 有源蜂鸣器(PYTHON)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐