树莓派GPIO控制--python篇

本文介绍了树莓派上常用的三种GPIO控制方式:pythonGPIO、wiringPi和BCM2835CLibrary,并详细解释了树莓派GPIO的三种编号方式及其实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 目前树莓派上常用的三种GPIO控制方式

  • python GPIO
    【开发语言】——python
    【简单介绍】——该库更确切的名称为raspberry-gpio-python,树莓派官方资料中推荐且容易上手。python GPIO是一个小型的python库,可以帮助用户完成raspberry相关IO口操作。但是python GPIO库还没有支持SPI、I2C或者1-wire等总线接口。除了python GPIO之外,还有众多的python扩展库(例如webiopi),毫无疑问的说python非常适合树莓派,树莓派也非常适合python。
  • wiringPi
    【开发语言】——C语言
    【简单介绍】——wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括UART设备,I2C设备和SPI设备等,毫无疑问地说wiringPi功能非常强大。
  • BCM2835 C Library
    【开发语言】——C语言
    【简单介绍】BCM2835 C Library可以理解为使用C语言实现的相关底层驱动,它给我的感觉更像STM32的库函数,BCM2835 C Library的驱动库包括GPIO、SPI和UART等,可以通过学习BCM2835 C Library熟悉BCM2835相关的寄存器操作。如果有机会开发树莓派上的linux驱动,或自主开发python或PHP扩展驱动,可以从BCM2835 C Library找到不少的“灵感”。

2. 树莓派GPIO编号方式

树莓派的软件扩展库虽然很多,但也导致了扩展库“碎片化”的问题,例如操作树莓派的GPIO端口,GPIO的编号便存在三种不同的方式。

【1】插座编号方式
编号侧重P1插座侧,从上到下,从左到右。正如图3的Header一栏。
【2】BCM2835编号方式
编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号。正如图3 BCM GPIO一栏。
【3】wiringPi编号方式
编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。正如图3 WiringPi一栏。
【举例说明】
插座编号方式 11 = BCM2835编号方式 17 = wiringPi编号方式 GPIO0

3. Python GPIO实现

  1. 配置环境
    sudo apt-get install python-dev
    sudo apt-get install python-rpi.gpio
    sudo apt-get install python-serial
  2. 示例代码

    # -- coding: utf-8 --
    import RPi.GPIO as GPIO
    import time
    # BOARD编号方式,基于插座引脚编号
    GPIO.setmode(GPIO.BOARD)
    # 输出模式
    GPIO.setup(11, GPIO.OUT)

    while True:
     GPIO.output(11, GPIO.HIGH)
     ptime.sleep(1)
     GPIO.output(11, GPIO.LOW)
     time.sleep(1)

    【简单说明】
    【1】GPIO.setmode(GPIO.BOARD),采用树莓派插座引脚编号方式。
    【2】WiringPiSetupGpio()或RPi.GPIO.setmode(GPIO.BCM),则是采用树莓派主芯片提供商Broadcom的编号方法,相当于采用BCM GPIO编号。

要在树莓派上使用Python控制GPIO,你需要安装RPi.GPIO库。这个库可以帮助你轻松地控制GPIO引脚,可以设置引脚为输入或输出,设置引脚电平,等等。 以下是使用Python控制GPIO的基本步骤: 1. 安装RPi.GPIO库 在终端中输入以下命令安装RPi.GPIO库: ``` sudo apt-get update sudo apt-get install rpi.gpio ``` 2. 导入RPi.GPIO库 在Python脚本中导入RPi.GPIO库: ```python import RPi.GPIO as GPIO ``` 3. 设置GPIO模式 在使用GPIO之前,你需要设置GPIO模式。有两种模式可供选择:BCM模式和BOARD模式。在BCM模式下,你使用GPIO引脚的编号(如GPIO17)来引用它们。在BOARD模式下,你使用引脚所在的物理位置(如Pin11)来引用它们。 ```python GPIO.setmode(GPIO.BCM) # 设置BCM模式 # 或者 GPIO.setmode(GPIO.BOARD) # 设置BOARD模式 ``` 4. 设置GPIO引脚 在设置GPIO引脚之前,需要确定你要使用哪些引脚。可以根据引脚的物理位置或编号来确定它们。 ```python GPIO.setup(17, GPIO.OUT) # 设置GPIO17为输出引脚 ``` 5. 控制GPIO引脚 一旦设置了GPIO引脚,你就可以控制它们了。例如,如果你将GPIO17设置为输出引脚,你可以使用以下语句将它设置为高电平: ```python GPIO.output(17, GPIO.HIGH) # 将GPIO17设置为高电平 ``` 如果你将GPIO17设置为输入引脚,你可以使用以下语句读取它的状态: ```python GPIO.input(17) # 读取GPIO17的状态 ``` 这是一个基本的GPIO控制示例,它将GPIO17设置为输出引脚,并将它的状态设置为交替的高低电平: ```python import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) try: while True: GPIO.output(17, GPIO.HIGH) time.sleep(1) GPIO.output(17, GPIO.LOW) time.sleep(1) except KeyboardInterrupt: GPIO.cleanup() ``` 这个程序将GPIO17设置为输出引脚,并在无限循环中使它的状态交替变化。当你按下Ctrl + C时,它将清除GPIO引脚的设置并退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值