53树莓派操作引脚口

https://www.jianshu.com/p/f31b90cc756f

1倒入引用

 importRPi.GPIOasGPIO

 

2针脚编号 不同的命名规则

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

  #or

  GPIO.setmode(GPIO.BCM)

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

  mode=GPIO.getmode()

  

3警告

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

GPIO.setwarnings(False)

引脚设置

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

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

4释放

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

GPIO.cleanup()

注意,GPIO.cleanup()只会释放掉脚本中使用的GPIO引脚,并会清除设置的引脚编号规则。

端口设置为输出的状态:

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

GPIO.output(channel,state)

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

如果想一次性设置多个引脚,可使用下面的代码:

chan_list=[11,12]
GPIO.output(chan_list,GPIO.LOW)
GPIO.output(chan_list,(GPIO.HIGH,GPIO.LOW))

你还可以使用Input()函数读取一个输出引脚的状态并将其作为输出值,例如:

GPIO.output(12,notGPIO.input(12))

5读取

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

GPIO.input(channel)

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

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

上升和下降沿

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

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

如果需要实时监控引脚的状态变化,可以有两种办法。最简单原始的方式是每隔一段时间检查输入的信号值,这种方式被称为轮询。如果你的程序读取的时机错误,则很可能会丢失输入信号。轮询是在循环中执行的,这种方式比较占用处理器资源。

轮询方式

whileGPIO.input(channel)==GPIO.LOW:

time.sleep(0.01)#wait10ms to give CPU chance to do ther things  

中断模式

另一种响应GPIO输入的方式是使用中断(边缘检测),这里的边缘是指信号从高到低的变换(下降沿)或从低到高的变换(上升沿)。

边缘检测

边缘是指信号状态的改变,从低到高(上升沿)或从高到低(下降沿)。通常情况下,我们更关心于输入状态的该边而不是输入信号的值。这种状态的该边被称为事件。先介绍两个函数:

阻塞式 wait_for_edge()函数。

wait_for_edge()被用于阻止程序的继续执行,直到检测到一个边沿。也就是说,上文中等待按钮按下的实例可以改写为:

channel=GPIO.wait_for_edge(channel,GPIO_RISING,timeout=5000)
if channel is None:
    print(‘Timeoutoccurred’)
else:
  print(‘Edgedetectedonchannel’,channel)

回调函数 add_event_detect()函数

注意:回调触发时,并不会同时执行回调函数,而是根据设置的顺序调用它们。

函数该函数对一个引脚进行监听,一旦引脚输入状态发生了改变,调用event_detected()函数会返回true,如下代码:

def my_callback(channel):
    print(‘This is a edge event callback function!‘)
    print(‘Edge detected on channel %s‘%channel)
    print(‘This is run in a different thread to your main program‘)

GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback)

多个回调函数

def my_callback_one(channel):
    print(‘Callback one‘)

def my_callback_two(channel):
    print(‘Callback two‘)

GPIO.add_event_detect(channel, GPIO.RISING)
GPIO.add_event_callback(channel, my_callback_one)
GPIO.add_event_callback(channel, my_callback_two)

注意:回调触发时,并不会同时执行回调函数,而是根据设置的顺序调用它们。  

点亮一个led

import RPi.GPIO as GPIO  //引入函数库
import time

RPi.GPIO.setmode(GPIO.BOARD)  //设置引脚编号规则
RPi.GPIO.setup(11, RPi.GPIO.OUT)    //将11号引脚设置成输出模式

while True
    GPIO.output(channel, 1)   //将引脚的状态设置为高电平,此时LED亮了
    time.sleep(1)   //程序休眠1秒钟,让LED亮1秒
    GPIO.output(channel, 0)   //将引脚状态设置为低电平,此时LED灭了
    time.sleep(1)   //程序休眠1秒钟,让LED灭1秒

GPIO.cleanup()    //程序的最后别忘记清除所有资源

  

使用PWM

这个python函数库还支持PWM模式的输出,我们可以利用PWM来制作呼吸灯效果。详情看代码:

import time
import RPi.GPIO as GPIO   //引入库
GPIO.setmode(GPIO.BOARD)  //设置编号方式
GPIO.setup(12, GPIO.OUT)  //设置12号引脚为输出模式

p = GPIO.PWM(12, 50)  //将12号引脚初始化为PWM实例 ,频率为50Hz
p.start(0)    //开始脉宽调制,参数范围为: (0.0 <= dc <= 100.0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)   //修改占空比 参数范围为: (0.0 <= dc <= 100.0)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
p.stop()    //停止输出PWM波
GPIO.cleanup()    //清除

  

原文地址:https://www.cnblogs.com/kekeoutlook/p/12199058.html

时间: 2024-08-02 07:14:33

53树莓派操作引脚口的相关文章

树莓派操作系统安装

树莓派操作系统安装 树莓派的操作系统是个磁盘镜像,需要写入到一张 micro-sd 卡后,才能引导树莓派启动. 从 http://www.raspberrypi.org/downloads 找到最新的 raspbin 镜像(raspberry + debian = raspbin),也可以使用其它的支持树莓派的系统.根据自己的需要,可选带 GUI 或只有命令行的镜像.镜像下载下来后,一般是个 zip 压缩文件,解压后得到一个为 .img 的磁盘镜像文件. 在 mac 上可使用 applepi-b

树莓派 40Pin 引脚对照表

注:本表格适用于各版本,并且兼容26Pin的树莓派B,树莓派B为26Pin,其引脚对应于上表的前26Pin. 原文地址:https://www.cnblogs.com/SATinnovation/p/8488038.html

树莓派第三口--挂载SAMBA(小米路由器)

新版的树莓派系统已经集成了SAMBA,不需要额外安装SAMBA协议 家里用的是小米路由器2,带1TB硬盘的.小米路由器支持SAMBA和DLNA,以下是通过树莓派挂载小米路由器来实现网络共享盘,可以共享家里各台电脑的资源,也可以替代迅雷远程下载:) windows上访问小米路由器的硬盘可以通过安装小米路由器客户端,也可以在资源管理器里输入 \\192.168.31.1\XiaoMi\ 来访问,用户名密码默认都是guest. 树莓派上访问小米路由器的存储空间: 1.树莓派wifi连小米路由器,不多说

树莓派操作

树莓派的开机:电源线_5v1a的插头,tf卡(sd卡,里面必须要烧录好系统),将卡插进卡槽,然后连接电源线就可以了,在连接屏幕,如果显示器没有HDMI接口则需要VGA的转接线,如果转接后,显示器依然是黑屏,请百度,搜搜树莓派连接VGA后显示器依然黑屏 远程连接的方法 ssh :必须要在同一个局域网下,才可以连接 先查看树莓派的本地ip地址,再在烧录好的sd卡里面加入ssh文件,没有后缀.在通过xshell或者putty进行连接 远程屏幕连接:获取树莓派的地址后直接在计算机输入mstsc,在输入i

树莓派第四口--Backup

引用: 官翻备份文档 SD CARD IMAGE It may be sensible for you to keep a copy of the entire SD card image, so you can restore the card if you lose it or it becomes corrupt. You can do this using the same method you'd use to write an image to a new card, but in

树莓派GPIO引脚标识图

原文地址:https://www.cnblogs.com/Chorder/p/9114470.html

PCF8574扩展树莓派io口

由于树莓派GPIO数量有限,可以通过i2c总线io扩展芯片增加io口数量. PCF8574零售5块钱左右,可以扩展出8个io口,挺划算的. PCF8574引脚: 连接到树莓派: PCF8574的15脚SDA连接到树莓派3脚 PCF8574的14脚SCL链接到树莓派5脚 PCF8574的8脚VSS.16脚VDD可根据实际连接 注意:A0 A1 A2 是地址选择引脚,三个脚都接GND时芯片地址是0x20,如果使用多片PCF8574拓展时,可通过控制这三个脚电平高低决定芯片的地址. 树莓派操作: 通过

树莓派-语音聊天机器人+语音控制引脚电平高低

最近和几位本学院的研究生师兄师姐参加研究生电子设计大赛,自己也来折腾下之前没有搞完的语音控制小车.恰巧自己负责的是语音控制这部分,折腾了几天也差不多搞定啦…把自己的折腾套路总结一下,给一起折腾的小伙伴点经验之谈… 一.配置树莓派 我们这次使用的最新的树莓派3,镜像直接是官网下载的Raspbian.这也是让我感觉最有树莓派感觉的一个系统.主要是sudo raspi-config的配置. 1和2最好都是设置一下,然后3看自己爱好吧:4的里面我都是重新设置的,包括时区.语言和字体.字体最好下载(apt

树莓派玩耍笔记3 -- LCD1602显示篇

LCD1602是一块成本低廉的输出设备,它有着体积小.操作简单.功耗低等优点,所以在一些DIY 产品上会用它来输出一些信息.昨天在使用时,虽然借鉴网上的资源,但是仍然有遇到一些问题,在这里写出来以便大家遇到时能够正确处理. 一.LCD1602 相关[1] 工业字符型液晶,能够同时显示16x02即32个字符.(16列2行) 1.1 管脚 1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线. 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V