树莓派瞎玩~5~控制GPIO之Python

news/2024/10/17 16:25:55/

树莓派瞎玩~5~控制GPIO之Python

  • 控制GPIO输出
  • 读取GPIO引脚的状态轮询
  • 读取GPIO引脚的状态中断


在Raspbian中已经预装了Python2.7.9,直接在命令行输入python即可看到如下信息

pi@raspberrypi:~ $ python
Python 2.7.9 (default, Mar  8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

使用Python控制GPIO时,常用的是raspberry-gpio-python模块,在2016-03-18-raspbian-jessie版本的系统镜像中,预装了最新的版本v0.6.2,我们可以在Python中输入下列命令查看:

>>> import RPi.GPIO as GPIO
>>> GPIO.VERSION
'0.6.2'
>>>

要退出python返回到命令行,可以输入exit()或按下CTRL+Z

>>> exit()
pi@raspberrypi:~ $

控制GPIO输出

现在,只需找个地方创建python脚本,然后使用raspberry-gpio-python模块来控制GPIO引脚的输出。

pi@raspberrypi:~ $ cd ~
pi@raspberrypi:~ $ mkdir python_gpio
pi@raspberrypi:~ $ cd python_gpio/
pi@raspberrypi:~/python_gpio $ touch gpio24_blink.py
pi@raspberrypi:~/python_gpio $ nano gpio24_blink.py

编辑脚本内容

import RPi.GPIO as GPIO
import timeGPIO_PIN = 24GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.OUT)
while True:GPIO.output(GPIO_PIN,GPIO.HIGH)time.sleep(1)GPIO.output(GPIO_PIN,GPIO.LOW)time.sleep(1)

存盘后,使用python + 脚本文件名的方式执行这个脚本。

pi@raspberrypi:~/python_gpio $ python gpio24_blink.py

用万用表测量GPIO24引脚的电压,发现电压每隔一秒在3.3V和0V之间跳动。由于代码的循环条件是True,所以脚本将无限循环下去,按下Ctrl+C组合键终止脚本的运行。

读取GPIO引脚的状态(轮询)

轮询就是持续的检查一件事儿,在这里就是持续的检查引脚状态,我们可以发现在代码中是用while循环和if组合实现的,这种轮询的方式将占用大量的处理能力。循环中的sleep是为了释放CPU,给其他程序让出资源。

import RPi.GPIO as GPIO
import timeGPIO_PIN = 24
count = 5GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN)print("waiting 5 times...")while count > 0:if(GPIO.input(GPIO_PIN) == 1):count = count - 1print("input high")time.sleep(0.1)print("exit...")
GPIO.cleanup()

通过测试,如果将引脚悬空,引脚上没有任何接线,此时引脚为低电平;若将杜邦线的一头插入到引脚上,另一头悬空,即没有连接3.3V电源也没有接地时,引脚处于不稳定状态,表现为状态在0和1之间跳动。我们可以使用硬件内部的上拉电阻或下拉电阻,为输入引脚配置初始值,可以达到去除干扰抖动的效果。修改上述代码中的配置语句为GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN),然后执行脚本,每当将24引脚连接高电平时,就会输出input high,由于这里是轮询模式,在连接时间较长时,会输出多行。

pi@raspberrypi:~/python_gpio $ sudo python gpio24_in.py
waiting 5 times...
input high
input high
input high
input high
input high
exit...

读取GPIO引脚的状态(中断)

import RPi.GPIO as GPIOGPIO_PIN = 24
count = 5GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)print("waiting 5 times...")while count > 0:GPIO.wait_for_edge(GPIO_PIN, GPIO.RISING)count = count - 1print("input high")print("exit...")
GPIO.cleanup()

其中的wait_for_edge函数将使代码处于阻塞状态,直到发生对应的信号状态变换,代码才继续执行。


http://www.ppmy.cn/news/662944.html

相关文章

DIY树莓派Raspberry Pi

以前,登录公司的linux服务器时,经常受限于各种权限问题,甚至连服务器长什么样都不知道。 之后,经常用ssh/串口/adb登录公司的linux/android设备。还用adb/usb登录过自己的小米手机,远程操作手机。 后来,在W…

[玩转树莓派]树莓派配置成路由器

现在手头上正好有一个树莓派3b的板子,想折腾一下,用树莓派搞个简单的路由器玩玩。 树莓派3B / 4B板载了无线网络适配器,不需要额外增加无线网卡就可以把它打造成一个无线路由器。有一种方法是给树莓派刷上OpenWRT等路由器固件,这…

Arduino与树莓派:到底该选择哪个?

的人来说,它们可能看起来非常类似:它们都是带有电阻、电容的电路板,ICU焊接在顶部,接口从侧面引出。 然而,如果我们仔细看一看的话,Arduino和树莓派在架构和设计目的上各有不同。我们编写了本篇文章以阐明…

在家巧用树莓派(广告屏蔽,下载机,NAS服务器,web服务器,私有云)

广告屏蔽,下载机,NAS服务器,web服务器,私有云 Raspberry Pi(中文名为“树莓派”)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。 但对于不需要学习编程和linux的普…

近一个月以来玩树莓派的全过程

首先,介绍下我使用的树莓派的型号,一开始用的是树莓派一代,那cpu是真的不行,后来又买了块树莓派3B,所以后面的操作都是在树莓派3B中完成的: 一、硬件部分 1. 树莓派模块摄像头的安装 1. 由于本次设计是要…

树莓派的GPIO编程

树莓派除了提供常见的网口和USB接口 ,还提供了一组GPIO(General Purpose Input/Output)接口。这组GPIO接口大大拓展了树莓派的能力。GPIO不仅能实现通信,还能直接控制电子元器件,从而让用户体验到硬件编程的乐趣。 GPI…

树莓派——初级编程

一、没有屏幕的树莓派如何使用 通过串口连接树莓派 通过官方给的相关文件和软件,对树莓派进行刷系统 设备破解 默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信 默认账号:pi 默认密码:raspbe…

Arduino VS 树莓派:哪个才是你的菜?

假设你正在寻找一台微型计算机,它能够驱动一台激光炮塔向彩色气球射击——作为一名极客,你可能常会幻想到类似的场景。那么你很可能已经听说过Arduino和树莓派(Raspberry Pi)了,但是却拿不定主意——到底哪种微型计算机…