树莓派GPIO

2023-05-16

命令行执行下行,即可得树莓派管脚编码表。

$ gpio readall

也可看下图:

  • BOARD 编号参考 Raspberry Pi 主板上 P1 接线柱的针脚编号。使用该方式的优点是无需考虑主板的修订版本,无需因为版本不同而重新连接线路和更改代码。
  • BCM编号侧重CPU寄存器,根据BCM2835的GPIO寄存器编号。
  • wiringPi编号侧重实现逻辑,把扩展GPIO端口从0开始编号,这种编号方便编程。

GPIO控制

shell直接控制GPIO

以GPIO18为例

  • 使GPIO18从内核空间暴露到用户空间,改变Linux标准输入输出的默认设备,重定向用户自定义的设备。此行命令的含义是:向export文件中写入18。执行该操作后,/sys/class/gpio下会增加一个gpio18文件夹。

pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/export

  • 可以查看一下GPIO18引脚(Linux中以文件形式存储,引脚视为设备)。第一行指移动到指定目录;第二行是查看该目录下文件(文件夹也是文件)。

pi@raspberrypi:~ $ cd /sys/class/gpio/gpio18

pi@raspberrypi:/sys/class/gpio/gpio18 $ ls

  • 设置GPIO18为输出模式。

pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo out > direction

  • 向value文件中写入1,GPIO18输出高电平

pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 1 > value

  • 返回上级目录(如果需要)

$ cd ..

  • 返回HOME(如果需要)

$ cd ~

  • 注销GPIO18(如果需要)

pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/unexport

shell脚本控制GPIO 

  • 新建一个eg.sh文件

$ sudo nano eg.sh

写入下列内容:

echo $1 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio$1/direction

echo 1 > /sys/class/gpio/gpio$1/value

sleep 5 #延时5秒

echo 0 > /sys/class/gpio/gpio$1/value

echo $1 > /sys/class/gpio/unexport

shell脚本可传入参数,$x代表第x个参数。 

  • 为eg.sh添加可执行权限

$ sudo chmod +x eg.sh

  • 运行。18为传入参数

$ sudo ./eg.sh 18

 Python通过RPI.GPIO命令控制GPIO

注意:该模块不适合应用到追求实时性或计数周期的应用中。这是由于无法预测 Ptyhon 何时繁忙,以及资源回收的时间。而且它是运行在基于 Linux 核心的系统中,也不合适用于实时应用——原因在于其它进程可能获得更高的 CPU 优先级。如果一定要追求实时操作,可以考虑加一块专用于操作的板子。

import RPi.GPIO as GPIO    #目前通过RPi.GPIO操作引脚应该只能用BOARD和BCM两种编编号

GPIO.setmode(GPIO.BCM)    #设置BCM编号
#GPIO.setmode(GPIO.BOARD)

禁用警告。可能你的 Raspberry Pi 的 GPIO 上同时有多个脚本/循环,如果 RPi.GPIO 检测到某个针脚被设置为其它用途而非默认的状态(默认为输入),尝试配置某脚本时会被警告。

GPIO.setwarnings(False)   #禁用警告消息 

配置引脚(channel)

GPIO.setup(channel, GPIO.IN)       #输入
GPIO.setup(channel, GPIO.OUT)   #输出
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)  #还可以指定输出通道初始值

输入输出

GPIO.input(channel)   #将返回 0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True
GPIO.output(channel, state)  # state可以是 0 / GPIO.LOW / False 或者 1 / GPIO.HIGH / True

清理。任何程序结束后,养成清理用过资源的好习惯。恢复所有用过的引脚状态为输入,可避免由于短路意外损坏树莓派。该操作仅会清理脚本使用过的引脚通道。

GPIO.cleanup()

运行python脚本(未开启root的话,需要sudo)

$ sudo chmod +x eg.py    #添加可执行权限
$ sudo python eg.py  #运行

PWM

  • 创建一个PWM实例
pwm = GPIO.PWM(channel, frequency)  #单位Hz,其值应大于0.0。
  • 启用PWM
pwm.start(dc)  # dc指定PWM信号的初始占空比,取值范围为0.0 ≤ dc ≤ 100.0
  • 更改PWM频率
pwm.ChangeFrequency(freq)
  • 更改PWM占空比
pwm.ChangeDutyCycle(dc)  

dc:指定PWM的新占空比,取值范围为0.0 ≤ dc ≤ 100.0。

  • 停止PWM
pwm.stop()  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派GPIO 的相关文章

  • 3.时钟与GPIO【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 时钟系统 首先我们要知道时钟的主要作用是用来同步 xff0c 现代的计算机系统是必然有时钟的 并且 xff0c 对于高级的单片机系统 xff0c 还会存在着不同频率的时
  • STM32F103笔记(二)——GPIO原理

    GPIO的工作原理与两个实验实例 一 STM32F103 GPIO说明1 stm32 GPIO引脚的主要功能2 GPIO相关配置寄存器的简介3 STM32F103 GPIO的8种工作方式4种输入模式4种输出模式 二 点亮LED实例 xff0
  • c语言 gpio指针定义,#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)这句话的具体作用是什么啊...

    一 GPIO Init函数解析 1 1 参数GPIO TypeDef 1 2 参数GPIO InitStruct 2 3 函数代码详解 4 4 备注 6 一 GPIO Init函数解析 首先来看一下GPIO Init函数的原型void GP
  • NVIDIA Jetson Xavier NX 控制GPIO

    NVIDIA Jetson Xavier NX 控制GPIO 文章目录 NVIDIA Jetson Xavier NX 控制GPIO前言一 简介二 代码实例1 gpio h2 gpio cpp 三 拓展 前言 在linux系统中以文件io的
  • GPIO

    一 什么是GPIO xff1f 首先应该理解什么是GPIO GPIO xff0c 英文全称为General Purpose IO ports xff0c 也就是通用IO口 在嵌入式系统中常常有数量众多 xff0c 但是结构却比较简单的外部设
  • GPIO的速度的理解

    一 GPIO模式配置 1 输入 输出模式 参考stm32手册 2 GPIO输出模式下 几种速度的区别 1 GPIO 引脚速度 GPIO Speed 2MHz 10MHz 50MHz 又称输出驱动电路的响应速度 芯片内部在I O口的输出部分安
  • RT-Thread记录(十三、I/O 设备模型之PIN设备)

    讲完UART设备之后 我们已经熟悉RT Thread I O 设备模型了 回头看看基本的 PIN 设备 目录 前言 一 PIN 设备模型解析 1 1 初识 GPIO 操作函数 1 2 PIN 设备框架 1 3 PIN 设备驱动框架层 实现的
  • Linux的GPIO子系统解析 ( 一 ) 之 gpiolib.c

    文章目录 Linux的GPIO子系统解析 一 之 gpiolib c 绪论 关于GPIO子系统库文件的gpiolib c解析 drivers gpio gpiolib c gpio desc结构体 gpio chip结构体 gpio ens
  • 【树莓派】error: command ‘/usr/bin/arm-linux-gnueabihf-gcc‘ failed with exit code 1(已解决)

    输入以下命令 export CFLAGS fcommon pip3 install RPi GPIO 参考网址 https askubuntu com questions 1290037 error while installing rpi
  • RK3568-GPIO控制

    RK3568 GPIO控制 1 Sysfs接口 实现逻辑 芯片的GPIO由芯片的GPIO控制器来管理 GPIO控制器封装在芯片内部 控制器的驱动芯片厂家已经写好了 RK3568有五组GPIO控制器 每组管理32个引脚 对应 dev下的gpi
  • stm32F1的JTAG、SWJ作为普通引脚使用。禁用JTAG、SWJ。

    stm32F1的JTAG SWJ引脚 为 PA13 PA14 PA15 PB3 PB4 单片机复位后 默认功能为 JTAG SWJ 而实际使用中 一般只使用 SWCLK SWDIO这两个引脚做 Debug 其余的引脚可以空出来 重新定义为普
  • X2000 Linux 驱动中配置GPIO的上下拉

    由于sdk不支持标准gpio api函数int gpio pull updown unsigned gpio unsigned value 需要用到soc gpio h中的int jzgpio set func int port enum
  • 使用 Node.js 通过 Raspberry Pi 3 model B 进行 GPIO

    我正在尝试使用树莓派 3 B 型让 LED 闪烁 我的机器上安装了所有必需的模块 即 npm nodejs pi gpio 修复了检测 gpio 的微小更改 代码是 var gpio require pi gpio gpio open 16
  • 橙色 PI 上的双 RC522

    我的目标是使用带有 Orange PI 的双 RFID RC522 读取器 到目前为止 我只成功完成了一项工作 阅读 google armbian 和 Orange pi 论坛 这是我到目前为止所做的 硬件连接 单RC 522 MOSI g
  • 如何设置虚拟 GPIO 环回

    我目前正在开发一个应该在 Net 中使用 gpio 引脚的程序 我想在虚拟 GPIO 引脚上测试我的程序 但我不知道该怎么做 我想做一个环回 将虚拟 GPIO 1 连接到另一个虚拟 GPIO 2 我已经对串口和 tty0tty 做了类似的事
  • Raspberry Pi RPi.GPIO 错误并带有威胁回调

    我被 Python 包中的 wait for edge 函数困住了RPi http sourceforge net p raspberry gpio python wiki Inputs 我为 GPIO 下降添加了多个事件检测 只要回调函数
  • gpiod - 在设备树中使用标签

    我想用libgpiod通过自定义板上的用户空间控制一些 GPIO 我有一个 i MX6UL 处理器 它有数百个引脚 我将只使用其中 8 个 作为 GPIO 我读到了关于libgpiod因为它正在取代旧的 sysfs API 我很高兴您可以为
  • 按下按钮时 GPIO 事件检测不给出输出

    以下 python 脚本应该等待按钮按下 打印按钮按下消息 然后退出 但是 当我按下按钮时 什么也没有打印 然后 当我按回车键时 脚本会打印 检测到按钮按下 然后停止 我如何修复此代码 以便在按下按钮时打印 检测到按钮按下 我按照教程制作了
  • 如何检查您的内核是否支持硬件上的 GPIO?

    我的目标是控制 Intel 主板 带 C1037U 处理器的 NM70 芯片组 上 Peppermint 4 Linux 内核版本 3 8 0 中的 GPIO 引脚 如何检查您的内核是否支持硬件上的 GPIO 背景 主板 Intel NM7
  • Python使用sudo启动时找不到模块

    我有一个使用 Google Assistant 库的脚本 并且必须从那里导入一些模块 我发现这只适用于 Python 虚拟环境 这真的很奇怪 在同一个文件夹中 我有一个使用 GPIO 引脚并且必须使用 root 的脚本 它们相互交互 因此当

随机推荐

  • jupyter notebook打开后import torch提示没有。

    jupyter notebook打开后import torch提示没有 如图所示 1 检查是否为安装torch的对应环境 2 打开的虚拟环境中没有安装torch xff0c 可以在jupyter 中输入 pip list 查看是否有torc
  • 阿里的在线评测题:多线程打印数据

    我答的不好 xff0c 那个伯乐在线评测系统不会用 xff0c 本地写代码跑不成功挂了 xff0c 总结下供后人参考 题目 xff1a 顺序递增打印正整数 xff0c 从1开始打印到100 xff0c 中间换行分隔 不允许重复打印出相同的数
  • WSL2使用检测不到GPU

    WSL2使用检测不到GPU 输入nvidia smi出现以下错误 Failed to initialize NVML GPU access blocked by the operating system Failed to properly
  • YOLOv5总结--持续更新

    1 Data Augmentation 数据增强操作可以看做是一种正则化方法 xff0c 防止过拟合 v4数据增强 创新使用了图像遮挡 Random Erase随机删除一个矩形区域通过均值填充 Cutout随机删除一个矩形区域通过0填充 M
  • 动手学深度学习系列笔记02预备知识-02数据预处理pandas

    读取数据集 注释 64 save是一个特殊的标记 xff0c 该标记下方的函数 类或语句将保存在d2l软件包中 xff0c 以便以后可以直接调用它们 xff08 例如d2l mkdir if not exist path xff09 而无需
  • 安装ubuntu微信记录

    首先安装微信 参考这个github 安装指定版本3 2 1 154比较好用 xff1a https github com zq1997 deepin wine issues 254 issuecomment 1042082702 1 然后打
  • Lane detection--CLRNet(Cross Layer Refinement Network for Lane Detection)总结

    模型总结 本文主要是对CLRNet的总结和自己的理解 有一部分还不理解 希望大佬们多教教 CLRNet论文链接 CLRNet代码链接 车道线检测的难点 1 低级语义信息检测的结果 xff0c 车道线奇异 xff0c 缺少全局信息 xff0c
  • 想要保持结果可复现,需要对以下部分的随机种子进行固定

    在神经网络中 xff0c 参数默认是进行随机初始化的 不同的初始化参数往往会导致不同的结果 当得到比较好的结果时我们通常希望这个结果是可以复现的 xff0c 在pytorch中 xff0c 通过设置全局随机数种子可以实现这个目的 想要保持结
  • 关于双线性插值

    双线性插值网上解释有很多 这里主要给自己做一个笔记 这篇讲的不错 https blog csdn net a435262767 article details 107475115 单线性插值 就是在两个点间插入一个点 x0 y0 x1 y1
  • Your GPU Compute Capability计算能力

    由于 nvidia 官网经常卡顿 xff0c 所以把计算能力列在这里 xff0c 方便查看 https developer nvidia com cuda gpus CUDA Enabled Datacenter Products Tesl
  • 施磊老师 C++ 课程笔记--自己记录用

    文章目录 0102new 和 malloc引用和指针区别constC和C 43 43 中const的区别 xff1f const和一级 多级指针的结合 inline 函数和普通函数的区别函数重载c 43 43 为什么支持函数重载 xff0c
  • 长期更新的一些 pytorch 知识点总结

    文章目录 Deep LearningBasicMetricAccuracy 和 Precision batchsize切 patch归纳偏置pytorch 模型 cpu 和 gpu load 相互转换 Deep Learning Basic
  • SQL 中 ROW_NUMBER() OVER() 函数用法详解

    语法格式 xff1a row number over partition by 分组列 order by 排序列 desc row number over 函数中 xff0c over 里的分组以及排序的执行晚于 where group b
  • 一些事宜记录

    文章目录 ubuntuubuntu 开机自启动Ubuntu设置代理ubuntu 配置 clash writingmarkdownmakrdown 打空行markdown 折叠 ubuntu ubuntu 开机自启动 https www id
  • pytorch 模型 cpu 和 gpu load--相互转换

    pytorch 模型 cpu 和 gpu load 相互转换 load 模型的时候 xff0c 会有将模型加载到 cpu 还是 gpu 内存的区别 会遇到这种问题 RuntimeError Attempting to deserialize
  • Failed to initialize NVML: Driver

    Failed to initialize NVML Driver 遇到这个问题 重启系统 别手贱去卸载驱动重装什么的 麻烦
  • 关于Linux安装mysql 在/etc下没有my.cnf 解决办法(实测)

    今天因为想改mysql的端口 xff0c 结果发现我的 etc 目录下并没有my cnf这个文件 xff0c 我就看了下网上有没有解决的方法 看了好多关于Linux下没有my cnf的博客 xff0c 都是说将my medium cnf 移
  • 计蒜客T1065买房子

    这一题我在编译器里测试都没问题 xff0c 计蒜客上只通过了九组数据 xff0c 有知道我错哪了的可以评论下 include lt stdio h gt void main int n k i double sum 61 1 00 scan
  • stm32控制步进电机

    本文使用DM542c驱动器驱动 使用前注意根据实际情况调节拨码开关 本文不会提到GPIO使能 xff0c 请自行使能 一 PWM操作驱动器使步进电机一直转 使能定时器时钟 xff0c 并配置基本参数 下图以TIM3为例 配置输出比较PWM1
  • 树莓派GPIO

    命令行执行下行 xff0c 即可得树莓派管脚编码表 gpio readall 也可看下图 xff1a BOARD 编号参考 Raspberry Pi 主板上 P1 接线柱的针脚编号 使用该方式的优点是无需考虑主板的修订版本 xff0c 无需