Skip to content

Latest commit

 

History

History
137 lines (105 loc) · 4.13 KB

BasicUsage.md

File metadata and controls

137 lines (105 loc) · 4.13 KB

https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

##RPi.GPIO模块基础 *导入该模块

导入方法如下:

import RPi.GPIO as GPIO

这样导入后,就可以使用GPIO替代完整写法(RPi.GPIO)了

下面的写法可以检查是否导入模块成功

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")
Pin numbering

##pin编号

RPi.GPIO有两种编码方式,第一种使用BOARD编码系统。这种方式是直接使用树莓派的板卡编号,使用这种方式编码的好处是无论硬件版本如何,它都可以一直有效,所以你的代码也就不用做什么改动。

第二种编码方式是BCM编码,它更靠近底层一些,是和Broadcom芯片关联的。使用这套编码方式,就不得不每次对照编码表,并且如果硬件版本改变,就得去修改代码了。

可以用下面的方法指定编码方式(强制):

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

下面的代码可以检测当前使用的是何种引脚编码方式(举个例子,使用另一个Python的模块):

mode = GPIO.getmode()
The mode will be GPIO.BOARD, GPIO.BCM or None
结果有三种可能GPIO.BOARD, GPIO.BCM  None

##警告

在你的树莓派的GPIO上面可能运行了多个脚本或电路,因此,如果RPi.GPIO检测到有一个pin引脚被配置到另外一个上面而不是默认的那个,你就会收到一个告警,如果要关掉这些告警,可以用下面的语句:

GPIO.setwarnings(False)

##配置通道(channel)

你要使用的输入输出引脚都必须经过配置才可以使用。配置输入通道可以这样:

GPIO.setup(channel, GPIO.IN)

(这些引脚编码都基于你之前指定的编码系统,BOARD或者BCM)

*下面是关于输入输出通道配置的更多信息

把一个通道设置成输出:

GPIO.setup(channel, GPIO.OUT)

(这些引脚编码都基于你之前指定的编码系统,BOARD或者BCM)

还可以给输出通道一个初始值:

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

同时配置多个通道

你可以同时设置多个通道(在0.5.8版本之后),比如:

chan_list = [11,12]    # add as many channels as you want!
                       # you can tuples instead i.e.:
                       #   chan_list = (11,12)
GPIO.setup(chan_list, GPIO.OUT)

##输入

读取GPIO引脚数据:

GPIO.input(channel)

(这些引脚编码都基于你之前指定的编码系统,BOARD或者BCM)返回结果要么是0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True

##输出

给引脚设置状态:

GPIO.output(channel, state)

(这些引脚编码都基于你之前指定的编码系统,BOARD或者BCM)

状态值可以是0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True

同时设置多个通道值

你可以同时设置多个通道值(在0.5.8版本之后),比如:

chan_list = [11,12]                             # also works with tuples
GPIO.output(chan_list, GPIO.LOW)                # sets all to GPIO.LOW
GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW))   # sets first HIGH and second LOW

##清除

在程序的尾部,去清理回收使用过的资源是个好习惯。这跟使用RPi.GOIO一样。把所有使用过的通道都重置可以避免因短路导致损坏。注意,可以仅仅清除了你在脚本中指定的的通道,如果使用GPIO.cleanup()会清除系统在用的所有引脚通道。

GPIO.cleanup()

下面可以根据需要,只清除部分通道,某一个或者一些,都可以:

GPIO.cleanup(channel)
GPIO.cleanup( (channel1, channel2) )
GPIO.cleanup( [channel1, channel2] )

获取树莓派板子信息和RPi.GPIO的版本信息

获取树莓派信息

GPIO.RPI_INFO

获取树莓派板子修订信息

GPIO.RPI_INFO['P1_REVISION']
GPIO.RPI_REVISION    (deprecated)

获取RPi.GPIO的版本信息

GPIO.VERSION