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