python树莓派红外反射传感器

yipeiwu_com7年前Python基础

本文实例为大家分享了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设计】。

相关文章

基于python的Paxos算法实现

基于python的Paxos算法实现

理解一个算法最快,最深刻的做法,我觉着可能是自己手动实现,虽然项目中不用自己实现,有已经封装好的算法库,供我们调用,我觉着还是有必要自己亲自实践一下。 这里首先说明一下,python这种...

django如何实现视图重定向

当请求访问到某个视图时,我们想让它重定向到其他页面,应该怎么做呢? 1.HttpResponseRedirect 需求:当我们访问127.0.0.1/my_redirect时跳到127...

深入了解Django View(视图系统)

深入了解Django View(视图系统)

Django View 官方文档 一个视图函数(类),简称视图,是一个简单的 Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向...

Python numpy线性代数用法实例解析

Python numpy线性代数用法实例解析

这篇文章主要介绍了Python numpy线性代数用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 numpy中线性代数用法...

利用Python的Flask框架来构建一个简单的数字商品支付解决方案

利用Python的Flask框架来构建一个简单的数字商品支付解决方案

作为一个程序员,我有时候忘了自己所具有的能力。当事情没有按照你想要的方式发展时,却很容易忘记你有能力去改变它。昨天,我意识到,我已经对我所出售的书的付款处理方式感到忍无可忍了。我的书完成...