RPI ADC base shield 教程 中文版

From LinkSprite Playgound
Revision as of 16:24, 29 July 2013 by Jingfeng (talk | contribs) (Created page with "教你如何在raspberry pi上使用RPi_Shield的ADC 首先介绍下RPi_Shield上使用的ADC芯片型号是:MCP3004(10位精度,4通道,SPI通讯),下面教你如...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

教你如何在raspberry pi上使用RPi_Shield的ADC 首先介绍下RPi_Shield上使用的ADC芯片型号是:MCP3004(10位精度,4通道,SPI通讯),下面教你如何使用(python)。 因为我们使用了spi通讯、所以我们需要启动spi内核模块, 先编辑内核模块的黑名单文件,使能spi :

 sudo vi /etc/modprobe.d/raspi-blacklist.conf

修改为: #blacklist spi-bcm2708 然后输入指令 lsmod 你可以看到如下内容: Module Size Used by spi_bcm2708 4421 0 接下来安装python-pip ( pip是一个可以替代easy_install的安装和管python软件包的工具 ) : sudo apt-get install python-imaging python-imaging-tk python-pip python-dev git 利用pip安装spidev: sudo pip install spidev 利用pip安装WiringPi ( WiringPi是专门为树莓派打造的类似于arduino下的wiring驱动库,安装好这个库后无论是用c、shell还是python都可以直接调用函数配置和控制GPIO功能): sudo pip install wiringpi


到这里前期的工作已经完成,下面是MCP3004的python驱动代码: Import spidev Import time

spi = spidev.SpiDev() spi.open(0,0)

def readadc(adcnum):

  1. read SPI data from MCP3004 chip, 4 possible adc's (0 thru 3)
   ifadcnum >3oradcnum <0:
       return-1
   r = spi.xfer2([1,8+adcnum <<4,0])
   adcout = ((r[1] &3) <<8)+r[2]

Returnadcout

whileTrue:

   value=readadc(0)

volts=(value*3.3)/1024

   print("%4d/1023 => %5.3f V" % (value, volts))
   time.sleep(0.5)

保存为linker_adc.py文件,进入到相关的目录下运行: Python ./linker_adc.py 运行后会在终端显示如下信息: