树莓派python学习篇 (二)红外避障传感器

一、红外避障传感器介绍

红外避障传感器是专为轮式机器人设计的一款距离可调式避障传感器。其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,此时指示灯亮起,经过电路处理后,信号输出接口输出数字信号,可通过电位器旋钮调节检测距离,有效距离2~40cm,工作电压为3.3V-5V,由于工作电压范围宽泛,在电源电压波动比较大的情况下仍能稳定工作,适合多种单片机、Arduino控制器、树莓派使用,安装到机器人上即可感测周围环境的变化。

在这里插入图片描述
二、规格参数:

1.工作电压:DC 3.3V-5V

2.工作电流:≥20mA

3.工作温度:-10℃—+50℃

4.检测距离:2-40cm

5.IO接口:4线制接口(-/+/S/EN)

6.输出信号:TTL电平(有障碍物低电平,无障碍物高电平)

7.调节方式:多圈电阻式调节

8.有效角度:35°

7.尺寸大小:28mm×23mm

三、python代码

#!/usr/bin/python

#-*- coding: utf-8 -*-

import time

import RPi.GPIO as GPIO

import os

GPIO.setmode(GPIO.BCM) #使用BCM编码方式

#定义引脚

GPIO_OUT = 23

led = 21

#设置23针脚为输入,接到红外避障传感器模块的out引脚

GPIO.setup(GPIO_OUT,GPIO.IN)

GPIO.setup(led,GPIO.OUT)

def warn(): #亮灯来作为有障碍物时发出的警告

    GPIO.output(led,GPIO.HIGH)

    time.sleep(0.5)

    GPIO.output(led,GPIO.LOW)

    time.sleep(0.5)

while True:
    if GPIO.input(GPIO_OUT)==0: #当有障碍物时,传感器输出低电平,所以检测低电平
        warn()
        #print("There has a barrier")
    #else:
       # print("OK")

GPIO.cleanup()
  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
树莓派小车的红外遥控和超声波避障可以通过编写代码来实现。下面是一个简单的示例代码,可以通过红外遥控控制小车的前进、后退、左转和右转,并使用超声波传感器避开障碍物。 ```python import RPi.GPIO as GPIO import time # 设置红外遥控引脚 ir_pin = 18 # 设置超声波引脚 trig_pin = 16 echo_pin = 12 # 设置小车电机引脚 motor_left_pin1 = 7 motor_left_pin2 = 11 motor_right_pin1 = 13 motor_right_pin2 = 15 # 初始化GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(ir_pin, GPIO.IN) GPIO.setup(trig_pin, GPIO.OUT) GPIO.setup(echo_pin, GPIO.IN) GPIO.setup(motor_left_pin1, GPIO.OUT) GPIO.setup(motor_left_pin2, GPIO.OUT) GPIO.setup(motor_right_pin1, GPIO.OUT) GPIO.setup(motor_right_pin2, GPIO.OUT) # 定义小车运动函数 def move_forward(): GPIO.output(motor_left_pin1, GPIO.HIGH) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.HIGH) GPIO.output(motor_right_pin2, GPIO.LOW) def move_backward(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.HIGH) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.HIGH) def move_left(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.HIGH) GPIO.output(motor_right_pin1, GPIO.HIGH) GPIO.output(motor_right_pin2, GPIO.LOW) def move_right(): GPIO.output(motor_left_pin1, GPIO.HIGH) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.HIGH) def stop(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.LOW) # 定义超声波避障函数 def obstacle_avoidance(): GPIO.output(trig_pin, GPIO.HIGH) time.sleep(0.00001) GPIO.output(trig_pin, GPIO.LOW) while GPIO.input(echo_pin) == 0: pulse_start = time.time() while GPIO.input(echo_pin) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round(distance, 2) if distance < 20: stop() else: move_forward() # 定义红外遥控函数 def ir_control(): ir_value = GPIO.input(ir_pin) if ir_value == 0: move_forward() elif ir_value == 1: move_backward() elif ir_value == 2: move_left() elif ir_value == 3: move_right() else: stop() # 主循环 while True: ir_control() obstacle_avoidance() ``` 以上代码只是一个简单的示例,实际应用中需要根据具体情况进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值