树莓派的优势在于Liunx操作系统加GPIO口,其中IO口时物联网组成中不可缺少的,高低电平的控制是很有必要的存在,再加有python的支持,玩转GPIO相对就容易多了

管脚编号

BCM: 编号侧重 CPU 寄存器,根据 BCM2835 的 GPIO 寄存器编号。

wpi: 编号侧重实现逻辑,把扩展 GPIO 端口从 0 开始编号,这种编号方便编程。正如下图 WiringPi 栏。

引脚物理编号排序:方形焊接口为1脚,两两为序,先短后长

配置GIPO为输出

1、首先对 RPi.GPIO 进行设置

 

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD) #物理引脚编码

GPIO.setup(12, GPIO.OUT)

2、设置某个输出针脚状态为高电平:

 

GPIO.output(12, GPIO.HIGH)

# 或者

GPIO.output(12, 1)

# 或者

GPIO.output(12, True)

3、设置某个输出针脚状态为低电平:

 

GPIO.output(12, GPIO.LOW)

# 或者

GPIO.output(12, 0)

# 或者

GPIO.output(12, False)

 

4、程序结束后进行清理

 

GPIO.cleanup()

注意,您可以读取使用 input() 函数设置的输出通道的当前状态。例如对输出进行切换:

 

GPIO.output(12, not GPIO.input(12))#输出电平取反

 

配置GIPO为输入:

1、首先对 RPi.GPIO 进行设置:

 

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)#物理引脚编码

GPIO.setup(12, GPIO.IN)

2、判断输入电平状态:

  GPIO.input(12)#返回0/GPIO.LOW/False/1/GPIO.HIGH/True


3
、上下拉配置:

 

GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)//上拉

# 或者

GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)//下拉

4、轮询检测:

 

while GPIO.input(12) == GPIO.LOW:

time.sleep(0.01)

5、边缘检测1: GPIO.RISING(上升)、GPIO.FALLING(下降)、GPIO.BOTH(两者均可)

 

#在规定时间内等待电平变化,占用主线程

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

if channel is None:    #无变化

    print('Timeout occurred')

else:     #上升沿变化

    print('Edge detected on channel', channel)

6、边缘检测2:

 

#程序运行周期内,捕捉和处理都是独立线程,不占用主线程,推荐

def my_callback_one(channel):#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)

7、程序结束后进行清理

  GPIO.cleanup()  #释放引脚

配置GIPO的PWM输出:

1、首先对 RPi.GPIO 进行设置:

 

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

GPIO.setup(12, GPIO.OUT)#输出

p = GPIO.PWM(12, 50)     #创建一个 PWM 实例:通道,频率(一般为50HZ,可为100HZ)

2、启用 PWM:

  p.start(dc)   # dc 代表占空比(范围:(熄灭)0.0 <= dc >= 100.0(最亮))

3、更改频率:

  p.ChangeFrequency(freq)   # freq 为设置的新频率,单位为 Hz

4、更改占空比:

  p.ChangeDutyCycle(dc)  # 范围:0.0 <= dc >= 100.0

5、停止PWM:

 

p.stop() #停止 PWM

GPIO.cleanup()#释放

一次性设置多个引脚

 

chan_list = [11,12]

GPIO.output(chan_list, GPIO.LOW)

GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW))  


树莓派GPIO口的使用的更多相关文章

  1. 树莓派GPIO口驱动编写

    一.wiringpi写法 #include <wiringPi.h> #include <stdlib.h> int main(int argc,char *argv[]) { ...

  2. [转]树莓派gpio口控制

    0.前言     树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个. [[开发语言]——python [[ ...

  3. Python自动化编程-树莓派GPIO编程(二)

    树莓派我们编程一般都直接用高效的python,针对于GPIO编程,python也是有这一方面的库的,这里最有名也是最常用的就是RPI.GPIO了.这个库是专门为树莓派GPIO编程所设计的,利用它你可以 ...

  4. 树莓派GPIO控制RGB彩色LED灯

    树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色. RGB模块简介 这个RGB彩色LED里其实有3个灯,分别是红灯.绿灯和蓝灯.控制这三个灯分别发出不同强度的光,混合起来就 ...

  5. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...

  6. 树莓派GPIO开发(一):激光头传感器模块的使用

    配置环境 系统:Raspbian11(64位) 设备:树莓派CM4 一.写在前面 主要为了测试我捡漏买的CM4的拓展版 拓展板子没有焊接引脚,但是预留的接口 手动焊接一下 测试成功 ,说明我捡的这块板 ...

  7. STM32f10xxx 之 GPIO口配置

    背景 配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了 ...

  8. android gpio口控制

    android gpio口控制  GPIO口控制方式是在jni层控制的方式实现高低电平输出,类似linux的控制句柄方式,在linux系统下将每个设备看作一个文件,android系统是基于linux内 ...

  9. Silicon C8051F340之GPIO口配置与使用

    一.背景: 很久前用过C8051,现在有相关需求需要重新使用C8051,然后发现一年前开发的相关经验都忘得 基本上差不多了.连最基本的GPIO口配置还得重新来看手册,所以有此文,做个记录,以备下次快速 ...

随机推荐

  1. SQLPrompt 安装后sql上看不到菜单

    解决方案很简单,请使用管理员权限安装 破解也是一样,需要管理员权限运行

  2. 20155312 张竞予 Exp7 网络欺诈防范

    Exp7 网络欺诈防范 目录 基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 (2)在日常生活工作中如何防范以上两攻击方法 实验总结与体会 实践过程记录 (1)简单应用SET工具建 ...

  3. mysql 的 alter table 操作性能小提示

    通常情况下,修改表的结构一般不会有太大问题,无非就是一个 alter table 操作,但是对于大表做 alter 操作是一个大问题,请小伙伴们慎重. mysql执行大部分修改表结构操作方法是创建一个 ...

  4. C#反编译笔记

    碰到下面这种 public class DstBoneName : Enum { public int value__; ; } 还原为 public enum DstBoneName { cf_J_ ...

  5. Scrum的3种角色划分--2048小游戏

    WBS分析: 敏捷开发 Scrum的3种角色划分:产品负责人PO(Product Owner).SM(ScrumMaster).开发团队(Team) 职责: PO:负责在限定期限内拟定可能的最有价值的 ...

  6. SSRF

    SSRF 关于SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造),攻击者通过伪造服务器端发起的请求,获取客户端所不能得到的数据.一般情况下,SSRF攻击的目 ...

  7. JAVA EE:第一个例子(登录)

    名称 代码 说明 web.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xm ...

  8. 论文word排版相关插件

    其中包括破解版的MathType.EndNote X7以及Aurora 链接:http://pan.baidu.com/s/1boRZTmf 密码:a6ai

  9. 画PCB

    1.AD16Design中Boardshape没有redefine board shape选项来修改板子的形状:{ 解决办法:在英文输入模式下按“1”键整个界面会变绿,此时就会有redefine bo ...

  10. Eigen3安装及注意

    执行命令: sudo apt-get install libeigen3-dev 安装后执行以下命令 运行命令: sudo cp -r /usr/include/eigen3/Eigen /usr/i ...