思路:光电反射传感器检测到左侧有物体就左转,右侧检测到物体就右转,前方检测到物体就前进。

优点:成本低光电反射传感器(两块钱左右);简单。

缺点:检测距离: 2~30cm  无法区分物体还是人物。

核心代码

#!/usr/bin/python
# coding=utf-8  import RPi.GPIO as GPIO
import time
import sys #SensorRight = 16
#SensorLeft  = 12Lpin_avoid_obstacle=12
Rpin_avoid_obstacle=16PWMA   = 18
AIN1   = 22
AIN2   = 27PWMB   = 23
BIN1   = 25
BIN2   = 24BtnPin  = 19
Gpin    = 5
Rpin    = 6#智能小车运动函数
def t_up(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(AIN2,False)#AIN2GPIO.output(AIN1,True) #AIN1R_Motor.ChangeDutyCycle(speed)GPIO.output(BIN2,False)#BIN2GPIO.output(BIN1,True) #BIN1time.sleep(t_time)def t_stop(t_time):L_Motor.ChangeDutyCycle(0)GPIO.output(AIN2,False)#AIN2GPIO.output(AIN1,False) #AIN1R_Motor.ChangeDutyCycle(0)GPIO.output(BIN2,False)#BIN2GPIO.output(BIN1,False) #BIN1time.sleep(t_time)def t_down(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(AIN2,True)#AIN2GPIO.output(AIN1,False) #AIN1R_Motor.ChangeDutyCycle(speed)GPIO.output(BIN2,True)#BIN2GPIO.output(BIN1,False) #BIN1time.sleep(t_time)def t_left(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(AIN2,True)#AIN2GPIO.output(AIN1,False) #AIN1R_Motor.ChangeDutyCycle(speed)GPIO.output(BIN2,False)#BIN2GPIO.output(BIN1,True) #BIN1time.sleep(t_time)def t_right(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(AIN2,False)#AIN2GPIO.output(AIN1,True) #AIN1R_Motor.ChangeDutyCycle(speed)GPIO.output(BIN2,True)#BIN2GPIO.output(BIN1,False) #BIN1time.sleep(t_time)def keysacn():val = GPIO.input(BtnPin)while GPIO.input(BtnPin) == False:val = GPIO.input(BtnPin)while GPIO.input(BtnPin) == True:time.sleep(0.01)val = GPIO.input(BtnPin)if val == True:GPIO.output(Rpin,1)while GPIO.input(BtnPin) == False:GPIO.output(Rpin,0)else:GPIO.output(Rpin,0)def setup():GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)       # 按物理位置给GPIOs编号GPIO.setup(Gpin, GPIO.OUT)     # 设置绿色Led引脚模式输出GPIO.setup(Rpin, GPIO.OUT)     # 设置红色Led引脚模式输出GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # 设置输入BtnPin模式,拉高至高电平(3.3V) #GPIO.setup(SensorRight,GPIO.IN)#GPIO.setup(SensorLeft,GPIO.IN)GPIO.setup(Lpin_avoid_obstacle, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)GPIO.setup(Rpin_avoid_obstacle, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)GPIO.setup(AIN2,GPIO.OUT)GPIO.setup(AIN1,GPIO.OUT)GPIO.setup(PWMA,GPIO.OUT)GPIO.setup(BIN1,GPIO.OUT)GPIO.setup(BIN2,GPIO.OUT)GPIO.setup(PWMB,GPIO.OUT)if __name__ == '__main__':setup()keysacn()L_Motor= GPIO.PWM(PWMA,100)L_Motor.start(0)R_Motor = GPIO.PWM(PWMB,100)R_Motor.start(0)try:while True:SL_2 = GPIO.input(Lpin_avoid_obstacle)SR_2 = GPIO.input(Rpin_avoid_obstacle)if SL_2 == True and SR_2 == True:print('没有检测到')t_stop(0.3)#t_down(50,0.4)#t_up(50,0)elif SL_2 == True and SR_2 ==False:print('右侧检测')t_right(30,0)elif SL_2==False and SR_2 ==True:print('左侧检测到')t_left(30,0)else:print('两边检测到')t_up(20,0)time.sleep(0.5)except KeyboradInterrupt:GPIO.cleanup()

注意点:运动速度的调节。

实验视频

【红外跟随-哔哩哔哩】

红外跟随

【方案一】 光电反射传感器跟随相关推荐

  1. 血压监测方案之光电容积脉搏波描记法PPG

    一.血压测量方法         有创测量法和无创测量法是当前血压测量的两大类方法.有创测量法是将连接压力传感器的导管经皮肤直接插入大动脉或心脏检测血压信号,能够进行连续测量.由于这种方法直接测得血压 ...

  2. ESP8266-Arduino编程实例-QRE1113红外反射传感器

    QRE1113红外反射传感器 1.QRE1113介绍 QRE1113 具有易于使用的模拟输出,它会根据反射回传感器的红外光量而有所不同. QRE1113 IR 反射传感器由两部分组成 - 一个 IR ...

  3. python 角度传感器模拟_python树莓派红外反射传感器

    本文实例为大家分享了python树莓派红外反射传感器的程序,供大家参考,具体内容如下 1.工具 rpi3,微雪ARPI600,Infrared Reflective Sensor 2.基本原理 Inf ...

  4. 基于石墨烯的光电探测传感器研究

    目 录 摘要 I Abstract II 目 录 III 一.引言 4 二.国内外学者的理论回顾 2 三.石墨烯的制备方法 3 (一)微机械剥离法 3 (二)晶体外延生长法 3 (三)胶体悬浮液法 3 ...

  5. TCRT5000红外反射传感器(循迹模块)

    TCRT5000红外反射传感器工作原理: TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时(指示二级管一直处于熄灭状态),光敏三极管一直处 ...

  6. 光电脉搏传感器的研制和噪声分析

    光电脉搏传感器的研制和噪声分析 1 引 言 人体心室周期性的收缩和舒张导致主动脉的收缩和舒张, 使血流压力以波的形式从主动脉根部开始沿着整个动脉系统传播, 这种波称为脉搏波.脉搏波所呈现出的形态.强度 ...

  7. 低压400瓦同步电机驱动器方案低压400瓦驱动器方案,带霍尔传感器,恒转速,pi调节

    低压400瓦同步电机驱动器方案低压400瓦驱动器方案,带霍尔传感器,恒转速,pi调节,带485通信. 资料包括图纸程序 编号:3460650855484703asdf2013_2229

  8. 四方光电扬尘传感器PM3006助力打赢蓝天保卫战

    扬尘治理,需对症下药:而把脉问诊,监测为先.高性能的扬尘传感器对实现扬尘全面监测.精准治理.降低成本等多方面的重要性不言而喻. 扬尘传感器的需求及应用现状 行业发展初期,扬尘监测设备多基于β射线吸收法 ...

  9. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

最新文章

  1. 无需重启, 使用Xephyr调试awesome
  2. linux一键优化脚本1.0
  3. 开发时间及内容(二)
  4. zabbix snmp 协议监控 dell iRDAC
  5. python爬取音乐_利用Python对网易云音乐进行爬取!无所不爬的爬虫啊!
  6. Java黑皮书课后题第6章:*6.16(一年的天数)使用下面的方法体编写一个方法,返回一年的天数。编写一个测试程序,显示从2000年到2020年间每年的天数
  7. hey 安装_如何在助理扬声器上调整“ Hey Google”的灵敏度
  8. 快速浏览JAX-RS请求与方法匹配
  9. mysql主从复制原理分析
  10. 基于 HTML5 WebGL 的 3D 智慧隧道漫游巡检
  11. 漫谈 - 从技术业务骨干走向管理
  12. 【python】ssh密码字典攻击
  13. matlab求滤波器的相频特性,matlab仿真一阶低通滤波器幅频特性和相频特性.docx
  14. 想问一下系统数据库工程师自学能过吗?
  15. 打造地图拼接利器(一)前言
  16. win10 tensorrtx yolov5使用方法
  17. 健身管理系统源码设计和实现
  18. 学PHP时,端口被占用,怎么找端口的占用情况。
  19. 集通字库芯片GT20L16S1Y 读取字体数据
  20. 1367:查找二叉树(tree_a)

热门文章

  1. xshell如何清除历史命令
  2. 几何光学学习笔记(39)- 7.10 中国颜色体系
  3. 看电影《致青春》有感
  4. 从提高练字效率思考如何学习技能
  5. 旷视科技:计算机视觉如何赋能身份验证场景
  6. flash-W25Q32BV的读写
  7. https://my.oschina.net/closeday/blog/297225
  8. 总裁福布斯约稿:人工智能与差异化的探讨
  9. Keil5 开发环境中u16和int错用误区
  10. Bmap离线地图实现原理简介