Hello,朋友们大家好,欢迎大家来到LIUSE网络。

随着Mini型PC越来越多,与之而来的创客也丰富起来,比如说Arduino就是一个非常好里例子。

不过,Arduino毕竟是一块适合入门型的基础开发板,无论是从性能上,还是处理复杂问题的实现上,其本身都是有限的。所以有些时候我们会考虑成本更高的卡片式PC,类似于树莓派、香蕉派、橙子派等等。

话虽然可以这么说,但作为PC跟GPIO一体的板卡,有些朋友刚拿到手确实是不知道何从下手,更不知道如何去控制各个GPIO引脚,那今天的文章,鄙人就综合的说一下常用的函数等等,其实好多地方跟Arduino的代码是很相似的。

在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

先说库文件:

树莓派我们编程一般都直接用高效的python,针对于GPIO编程,python也是有这一方面的库的,这里最有名也是最常用的就是RPI.GPIO了。这个库是专门为树莓派GPIO编程所设计的,利用它你可以愉快的像Arduino那样轻松控制GPIO管脚。

安装:

sudo apt-get -y python-pip #安装pip

sudo pip install rpi.gpio #安装RPI.GPIO

安装完成后在实际运用的时候,我们也会像arduino那样去设置输入输出,设置高低电平,获取针脚值等等,那下面我就把整理的内容函数都贴出来。

在这说一下管脚,拿到树莓派之后你会发现板子上有两排管脚,这对应这什么呢?请看下图:

(管脚对应)

当然如果说你的版本不同可能会略有差别,你同样可以使用gpioreadall命令来打印出所有管脚:

(打印管脚)

好,做完上面的拓扑,我们来讲一下关于GPIO编程的一些常用函数。

1.导入库:

import RPi.GPIO as GPIO

2.设置引脚模式:

GPIO.setmode(GPIO.BMC/BOARD) #BMC或者BOARD模式

3.设置引脚为输入:

GPIO.setup(pin,GPIO.IN)

4.设置引脚为输出:

GPIO.setup(pin,GPIO.OUT)

5.设置初始化高电平:

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

6.设置初始化为低电平:

GPIO.setup(pin,GPIO.OUT,initial=GPIO.LOW)

当然python的好处是可以创建一个列表,然后将列表带入函数中,使其一次性执行多个针脚的输入输出,如:

PinList=[pin1,pin2,pin3]

GPIO.setup(PinList,GPIO.IN)

通过创建一个列表将列表中加入引脚的定义,实现多引脚同时设定为输入。

读取输入值:

GPIO.input(pinx) #input()方法可以读取pinx引脚的值

当然前提是你的引脚接了一些传感器,比如温度传感器,光线传感器等等。

上下拉:

先说什么是上下拉

上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)。上拉就是输入高电平,然后接一个上拉电阻(起保护作用),知道上拉就表示该端口在默认情况下输入为高电平。下拉就是输入低电平,然后接一个下拉电阻。

我们在做管脚的上下拉时,在电路设计上一般都是加上下拉电阻,但在树莓派身上如何不改变电路通过python去控制呢?

在python的GPIO初始化上可以用GPIO.setup(pinx,GPIO.IN,pull_up_down=GPIO.PUD_UP/GPIO.DOWN)来控制上下拉。

设置中断:

设置终端通常有两种方法,一种是wait_for_edge(),另一种为add_event_detect(),我们下面来介绍一下这两个中断。

1.wait_for_edge():用于检测到边沿之前阻止程序运行

举个例子:

channel = GPIO.wait_for_edge(channel, GPIO_RISING, timeout=5000)

if channel is None:

print('Timeout occurred')

else:

print('Edge detected on channel', channel)

延时5秒,如果超时,程序继续执行,如果没有超时将继续等待。

2.add_event_detect():对一个引脚进行监听,一旦引脚输入发生了改变,调用event_detected()函数会返回True

举个例子:

GPIO.add_event_detect(channel, GPIO.RISING)

do_something()

if GPIO.event_detected(channel):

print('Button pressed')

add_event_detect()多用于循环状态,并且它不会错过循环中输入状态的改变,多用在PyQt上。

PWM脉冲调节:

PWM这个多用在控制电机上,特别是对我们做树莓派小车对小车的控制上有很大的帮助。

我们用一个实例去说明:

Pwm=GPIO.PWM(pin,frequence) #创建PWM实例

Pwm.start(dc) #启动PWM dc值(0.0

Pwm.ChangeFrequency(freq) #改变PWM频率

Pwm.ChangeDutyCycle(dc) # 改变PWM的占空比0.0<=dc <=100.

Pwm.stop() #停止PWM

后面我们在说几个常用的函数,比如输出、等待,并写一个控制小灯闪烁的Demo

GPIO口输出值:

GPIO.output(pinx,1/0)

1对应GPIO.HIGH(高电平)0对应GPIO.LOW(低电平)

延时函数:

time.sleep(秒数)

此函数为time库里面的,你要想使用必须在之前import time

今天暂且介绍这么多,我们下面写一个控制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秒

树莓派pythongpio编程_基于树莓派的python GPIO编程-常用函数综合整理相关推荐

  1. 基于树莓派的python GPIO编程-常用函数综合整理

    Hello,朋友们大家好,欢迎大家来到LIUSE网络. 随着Mini型PC越来越多,与之而来的创客也丰富起来,比如说Arduino就是一个非常好里例子. 不过,Arduino毕竟是一块适合入门型的基础 ...

  2. 树莓派模拟电路_基于树莓派的热电偶测量模块 MCC 134

    MCC 134是一款24位,用于测量热电偶的4通道HAT附加模块,可提供专业级精度,是同类产品中的最佳选择.用户最多可连接4路差分热电偶(TC)到MCC 134的输入通道.每通道的TC型号可通过软件选 ...

  3. python 核心编程_【02】Python核心编程 (全)

    一.浅拷贝和深拷贝 1.浅拷贝 是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容.相当于把变量里面指向的一个地址给了另一个变量就是浅拷贝,而没有创建一个新的对象,如a=b. 2.深拷 ...

  4. python 小孩学编程_让小孩学Python语言编程有意义吗?

    当然有! python现在可是公认的主流语言好吗,如果小孩子的时候就能写的一手好的python代码.相信我,清华北大你大胆地冲! 不过,不建议孩子太小的时候就开始接触python,没学会走就打算跑了? ...

  5. arcgis工具python源码_面向Arcgis的python脚本编程_数据

    [实例简介] <面向ArcGIS的Python脚本编程>是一本指导ArcGIS for Desktop专业用户进行Python开发的指南.该书将教会您如何通过编写Python代码处理空间数 ...

  6. python创意小作品-全国青少年创意编程与智能设计大赛Python创意编程比赛

    全国青少年创意编程与智能设计大赛Python创意编程比赛 一.作品类型: 1.数字艺术 通过程序生成和展示视觉艺术,具备创意.美感和互动性. 2.互动游戏 各种竞技类.探险类.角色扮演类.球类. 棋牌 ...

  7. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()

    Python序列类型常用函数练习 这里使用代码示例,练习使用序列类型的常用函数,包括: enumerate() reversed() sorted() zip() 直接看python代码 #enume ...

  8. Python字符串(string)常用函数

    Python字符串(string)常用函数 find:检测字符串是否包含指定字符,如果存在则返回开始的索引值,否则返回-1 str1 = 'hello world' print(str1.find(' ...

  9. python内建常用函数

    #标题1# # python内建常用函数# #python内建常用函数 在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030211175 ...

  10. 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...

    计算机已经不再只是用来工作的方盒子.任何拥有一个可编程处理中心的东西都可以称作计算机.游戏终端.智能手机.全球卫星定位系统(GPS)单元.平板电脑以及其他许多令人难以置信的设备都说明了这一点.它们都是 ...

最新文章

  1. 3G突破必须打破漫游费的限制
  2. 误入人体的海洋细菌,能轻易吞噬你的肢体乃至生命
  3. 《SAP CRM管理与实施指南》一一2.3 小结
  4. 开放linux下mysql数据库3306端口
  5. 全部python编程语言-编程语言高质量代码的优秀Python工具
  6. 撰写论文时word使用诀窍标题
  7. 从证书中导出公钥并存放到项目中
  8. DOM基本操作(二:对节点的操作)
  9. access 战地1不加入ea_炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂...
  10. mix2s 升级android p,小米推送小米MIX2S 安卓P稳定版更新 这两个隐藏升级你发现了吗?...
  11. linux arm current_thread_info定义,linux 内核 current全局变量
  12. 【洛谷 P3304】[SDOI2013]直径(树的直径)
  13. html响应式布局平移,jQuery图片内部缩放和平移插件jquery.zoom.js
  14. 村上隆首场中国直播,火山同传打造“影院级字幕”
  15. rapidxml解析类
  16. 支付宝接口对接指南(四、回调通知对接:websoket方式)【保姆级】
  17. python中for怎么无限循环_Python中无限循环有什么条件
  18. 移动视频直播点播方案
  19. 谓词公式与量词的辖域
  20. 快手正与NBA洽谈战略合作,涉及内容版权和商业化

热门文章

  1. EXCEL公式与函数
  2. jdk7下载、安装与测试
  3. Python练习题19:《沉默的羔羊》之最多单词
  4. vb/vb.net开发精粹(14)
  5. Spring boot 集成邮件通知及线程异步发送
  6. 谷歌gmail注册入口_Gmail样式的侧面板即将用于Google文档和Google日历
  7. 无线网络服务器网络异常,无线网络连接上但上不了网怎么解决
  8. 计算机 无法连接wifi网络地址,电脑设置wifi但无法连接网络怎么办
  9. 两个列向量相乘怎么计算_两个矩阵相乘怎么算?
  10. 程序员延寿指南-活着才能输出