小编给大家分享一下python树莓派红外反射传感器的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、工具
rpi3,微雪ARPI600,Infrared Reflective Sensor
2、基本原理
Infrared Reflective Sensor 输出数字和模拟信号
模拟信号通过ARPI600上的AD转换芯片TLC1543进行转换
TLC1543通信使用rpi的GPIO口,模拟SPI,进行模拟信号输入端口选择,和输出读取
程序通过读取DOUT判断与障碍物接近和远离
在接近障碍物时读取AD转换数值
3、连接实物
4、python程序(根据ARPI600提供程序修改)
#!/usr/bin/python # -*- coding:utf-8 -*- import RPi.GPIO as GPIO import time Clock = 16 Address = 20 DataOut = 21 DOUT = 17 def ADC_Read(channel): value = 0; for i in range(0,4): if((channel >> (3 - i)) & 0x01): GPIO.output(Address,GPIO.HIGH) else: GPIO.output(Address,GPIO.LOW) GPIO.output(Clock,GPIO.HIGH) GPIO.output(Clock,GPIO.LOW) for i in range(0,6): GPIO.output(Clock,GPIO.HIGH) GPIO.output(Clock,GPIO.LOW) time.sleep(0.001) for i in range(0,10): GPIO.output(Clock,GPIO.HIGH) value <<= 1 if(GPIO.input(DataOut)): value |= 0x01 GPIO.output(Clock,GPIO.LOW) return value GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(Clock,GPIO.OUT) GPIO.setup(Address,GPIO.OUT) GPIO.setup(DataOut,GPIO.IN,GPIO.PUD_UP) GPIO.setup(DOUT,GPIO.IN) lastdata = 2 try: while True: data = GPIO.input(DOUT) if lastdata and (lastdata == 1): continue if data == 0: print 'Near the Obstacles' print 'AD: %d ' % ADC_Read(6) if data == 1: print 'Far the Obstacles' lastdata = data time.sleep(0.1) except: GPIO.cleanup()
以上是“python树莓派红外反射传感器的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。