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设计模式之策略模式

轻松掌握python设计模式之策略模式

本文实例为大家分享了python策略模式代码,供大家参考,具体内容如下 """ 策略模式 """ import types class StrategyExample: def...

Python类的继承和多态代码详解

Python类的继承和多态代码详解

Python类的继承 在OOP(ObjectOrientedProgramming)程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(S...

Python enumerate函数遍历数据对象组合过程解析

这篇文章主要介绍了Python enumerate函数遍历数据对象组合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍...

PyQt5实现拖放功能

PyQt5实现拖放功能

在这节教程中,我们将探讨PyQt5中的拖放操作。 在计算机图形用户界面(GUI)中,拖放是在某个虚拟对象上点击并拖动到另一个位置或虚拟对象上的操作。它通常用于调用多个动作,或为两个抽象对...

Python的条件表达式和lambda表达式实例

条件表达式 条件表达式也称为三元表达式,表达式的形式:x if C else y。流程是:如果C为真,那么执行x,否则执行y。 经过测试x,y,C可以是函数,表达式,常量等等; de...