树梅派 GPIO控制

来源:互联网 发布:李天生vb.net视频教程 编辑:程序博客网 时间:2024/06/07 16:59

1、安装RPi.GPIO

下载RPi.GPIO库:https://pypi.python.org/pypi/RPi.GPIO

下载SPI控制spidev库: https://pypi.python.org/pypi/spidev

下载解压:



先安装python-dev,

sudo apt-get install python-dev



如果出现依赖项无法安装的问题



需要先进行更新软件源和更新安装包:



一般更新后可以正常安装好python-dev。


然后 cd到相应的文件夹安装 RPi .GPIO 和 spidev。




cd 到 RPi.GPIO内安装

sudo python setup.py install




cd 到 spidev内安装

sudo python setup.py install



安装smbus库,I2C接口库函数 和 serial库,UART接口库函数:



安装完这几个库,就可以使用基于pyhon的GPIO的操作了。




GPIO.setmode(GPIO.BOARD),采用插座引脚编号方式


  1. # -*- coding: utf-8 -*-    
  2.  import RPi.GPIO as GPIO    
  3.  import time    
  4.  # BOARD编号方式,基于插座引脚编号    
  5.  GPIO.setmode(GPIO.BOARD)    
  6.  # 输出模式    
  7.  GPIO.setup(11, GPIO.OUT)    
  8.      
  9.  while True:    
  10.      GPIO.output(11, GPIO.HIGH)    
  11.      time.sleep(1)    
  12.      GPIO.output(11, GPIO.LOW)    
  13.      time.sleep(1)   



可以使用下列代码(强制的)指定一种编号规则:

GPIO.setmode(GPIO.BOARD)  # orGPIO.setmode(GPIO.BCM)

下面代码将返回被设置的编号规则

mode = GPIO.getmode()

警告

如果RPi.GRIO检测到一个引脚已经被设置成了非默认值,那么你将看到一个警告信息。你可以通过下列代码禁用警告:

GPIO.setwarnings(False)

引脚设置

在使用一个引脚前,你需要设置这些引脚作为输入还是输出。配置一个引脚的代码如下:

# 将引脚设置为输入模式GPIO.setup(channel, GPIO.IN)# 将引脚设置为输出模式GPIO.setup(channel, GPIO.OUT)# 为输出的引脚设置默认值GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

释放

一般来说,程序到达最后都需要释放资源,这个好习惯可以避免偶然损坏树莓派。释放脚本中的使用的引脚:

GPIO.cleanup()

输出

要想点亮一个LED灯,或者驱动某个设备,都需要给电流和电压他们,这个步骤也很简单,设置引脚的输出状态就可以了,代码如下:

GPIO.output(channel, state)

状态可以设置为0 / GPIO.LOW / False / 1 / GPIO.HIGH / True。如果编码规则为,GPIO.BOARD,那么channel就是对应引脚的数字。


读取

我们也常常需要读取引脚的输入状态,获取引脚输入状态如下代码:

GPIO.input(channel)

低电平返回0 / GPIO.LOW / False,高电平返回1 / GPIO.HIGH / True。

如果输入引脚处于悬空状态,引脚的值将是漂动的。换句话说,读取到的值是未知的,因为它并没有被连接到任何的信号上,直到按下一个按钮或开关。由于干扰的影响,输入的值可能会反复的变化。
使用如下代码可以解决问题:

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # orGPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

需要注意的是,上面的读取代码只是获取当前一瞬间的引脚输入信号。



参考: http://blog.csdn.net/xmm1981/article/details/53156992

            http://www.waveshare.net/study/article-742-1.html

             http://www.runoob.com/python/python-tutorial.html

             http://www.waveshare.net/study/article-601-1.html