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秒

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

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

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

  2. DIY一个基于树莓派和Python的无人机视觉跟踪系统

    DIY一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配.如果想来点高级的--在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其 ...

  3. 树莓派 python 无人机_DIY一个基于树莓派和Python的无人机视觉跟踪系统

    DIY一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配.如果想来点高级的--在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其 ...

  4. python与室内设计_基于树莓派和Python的智能家居系统设计

    基于树莓派和 Python 的智能家居系统设计 许礼捷 葛华 陈红 [摘 要] 介绍树莓派第 3 代开发平台,融合 Python 开发技术和 OneNET 云 平台通信技术等先进技术,设计一款智能化的 ...

  5. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

  6. 树莓派智能小车python论文_基于树莓派的自动驾驶小车,利用树莓派和tensorflow实现小车在赛道的自动驾驶...

    self_drive 基于树莓派的人工智能自动驾驶小车 Artificial intelligence automatic driving car based on raspberry pie git ...

  7. python控制电机_树莓派使用Python控制步进电机

    步进电机和普通电机最大的不同是步进电机可以更加精确地旋转,这个特性使得它们在各种树莓派项目中得到广泛运用. 步进电机选择 市面上有很多步进电机可供选择,最后我们还是决定使用ULN2003控制板和28B ...

  8. python 计算机程序设计-计算机二级教程python第一章 程序设计语言

    一.程序设计语言 (一)程序设计语言概述 1.什么是程序设计? 程序设计是计算机能能够理解和识别的用户操作的一种交互体:按照特定的规则组织计算机指令,使计算机能够独立自行进行各项运算处理. 2.程序语 ...

  9. python语言程序设计是干什么的-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: Python是最好的程序设计入门语言.也是最先进的程序设计语言. 如果只想学一门程序设计语言,请学P ...

  10. [转载] 语言程序设计第4版黄洪艺_计算机二级教程 Python语言程序设计 第8章python计算生态...

    参考链接: Python | 接球比赛 第八章学习知识导图 考点主要是: 1) 基本的Python内置函数 2) 了解Python计算生态 3) 作者归纳:这章看一下基本概念,主要认真看一下代码和代码 ...

最新文章

  1. mac的终端下面使用ssh user@localhost输入密码 不能正常登录
  2. android工程混淆和反编译
  3. html特殊字符的html,js,css写法汇总
  4. 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解
  5. win7 64位_VS2010的fftw3配置
  6. 使用换IP软件的代理IP速度缓慢的原因是什么?详解!
  7. oracle gis费用,MapGIS 10 for Desktop 标准版_Oracle
  8. 没错,中国程序员前景一片黑暗
  9. 笔记本电脑已连接WIFI密码查看方法
  10. python练习题(3)--字符串及正则表达式的应用
  11. 在新的一年,真心祝愿朋友平安幸福快乐安康!-间歇博客
  12. 使用window小娜实现文本转语音
  13. 程序员请照顾好自己,周末病魔差点一套带走我。
  14. 如何在inf文件中修改pid、vid
  15. raise InvalidSchema(“No connection adapters were found
  16. WebGoat 安装
  17. 第二届先导杯-在曙光超算平台编译cp2k(二)
  18. 避免DHCP冲突的主路由器和分路由器的连接方式
  19. 【解决方案】视频字幕生成+自动翻译字幕(中英,中法视频,双语字幕制作)
  20. JAVA Socket远程执行任务

热门文章

  1. 英文论文的proposal怎么写?
  2. 用 Python 分析韦德职业生涯数据
  3. HDU-1728-逃离迷宫
  4. python 英语分词_python实现英文文本分词
  5. IT人员的职业生涯规划
  6. 抖音企业号开发功能技术搭建
  7. i.MX6UL IO分析
  8. PHP8.0尝鲜系列(一):Windows 10安装PHP8.0
  9. 程序员常用 英语单词
  10. 旋转矩阵的导数(机器人学)