树莓派4B-使用 RPI.GPIO 模块的脉宽调制(PWM)功能

2023-11-15

脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。

创建一个 PWM 实例:

1

p = GPIO.PWM(channel, frequency)

启用 PWM:

1

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

更改频率:

1

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

更改占空比:

1

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

停止 PWM:

1

p.stop()

注意,如果实例中的变量“p”超出范围,也会导致 PWM 停止。

以下为使 LED 在亮/暗之间切换的示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import time

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

GPIO.setup(12, GPIO.OUT)

  

p = GPIO.PWM(12, 50# 通道为 12 频率为 50Hz

p.start(0)

try:

    while 1:

        for dc in range(0, 101, 5):

            p.ChangeDutyCycle(dc)

            time.sleep(0.1)

        for dc in range(100, -1, -5):

            p.ChangeDutyCycle(dc)

            time.sleep(0.1)

except KeyboardInterrupt:

    pass

    p.stop()

    GPIO.cleanup()

备注:函数原型         range(start,stop,step)

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

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

树莓派4B-使用 RPI.GPIO 模块的脉宽调制(PWM)功能 的相关文章

  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有

随机推荐

  • 2019 必知的 10 大顶级 python 库

    朋友们 我是床长 如需转载请标明出处 http blog csdn net jiangjunshow 作为数据科学和机器学习相关的研究和开发人员 大家每天都要用到 python 在本文中 我们将讨论一些 python 中的顶级库 开发人员可
  • 【前端

    图 先看一个例子 html div class container div class item 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
  • 图片清晰度,分辨率,像素总结

    像素 像素是一个个小方块 是构成位图的基本单位 将图片放大即可看出来 如图 分辨率 显示分辨率是指像素的总数量 如上图的2200 1400 也就是宽有2200个像素 高有1400个像素 图像分辨率是指每英寸所包含的像素个数 如上图的72像素
  • 基础网络拓扑的配置

    要求 全网可达 拓扑结构 使用的设备 1台路由器 2台交换机 4台电脑 解决网络拓扑 1 确定广播域的个数 2 分配网段 3 配置IP地址 优先配置路由器 确定广播域的个数 路由器有两个接口有连线 分为两个不同的广播域 分配网段 我采用19
  • Invalid contextPath ‘/xxx‘: must match the start of requestPath: ‘//xxx/yyy‘

    记录一个升级spring boot 版本从2 1升级到2 6之后的错误 java lang IllegalArgumentException Invalid contextPath admin must match the start of
  • java jar killed_容器中Java 程序OOMKilled原因浅析

    背景 业务的容器化刚刚搞完 线上开始告警 容器重启 容器重启 describe pod 查看原因是OOMKilled 分析 OOMKilled 是pod 中的进程使用的内存超过了 spec containers resources limi
  • 指针(一)

    学习c语言 不学指针 等于没学 可见指针在c语言中有多重要 指针是C语言中的一个重要概念及其特点 也是掌握C语言比较困难的部分 指针定义 指针也就是内存地址 指针变量是用来存放内存地址的的变量 指针的作用是 通过指针不仅可以对数据本身 还可
  • OpenGL ES着色器语言(GLSL ES)规范 ——下篇

    文章目录 前言 分支和循环 if if else for continue break discard 着色器内置变量 函数 函数定义 规范声明 webgl内置函数 存储限定字 const attribute uniform varying
  • MYSQL 8数据库原理及应用(徐丽霞 微课版)——第一章知识要点

    目录 数据库的基本概念 数据库管理技术的发展阶段 数据库的体系结构 数据模型 关系运算 数据库的基本概念 信息与数据库 数据 Data 是描述事物的符号记录 是数据库中存储的基本对象 信息 信息的传递需要物质载体 且信息的获取和传递都要消耗
  • 业务高速增长场景下的稳定性建设实战

    背景 静儿在2017年8月25日怀着 再也不要下班时间收到报警 的美好期待加入美团金融智能支付负责核心交易 结果入职后收到的报警一天紧似一天 核心交易是整个智能支付的核心链路 承担着智能支付百分之百的流量 下面是我们的日单量增长曲线 从图中
  • postman界面变成了左右结构怎么办

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到教程 在左上角 file settongs中设置一下
  • Linux下编辑文件并保存

    第一步 cd到该文件的目录下 第二步 vi 要编辑的文件名 进入普通模式 可以查看文件内容 第三步 输入 i 进入编辑模式 开始编辑文本 第四步 编辑之后 按ESC退出到普通模式 第五步 在普通模式下 输入 进入命令模式 第六步 在命令模式
  • ADCS攻击利用

    ADCS攻击利用 个人公众号创世信安 一 ADCS相关介绍 1 ADCS AD CS证书服务 SSL证书 可以部署企业根或者独立根建立SSL加密通道 和其他服务证书的区别在于加密强度 本次利用的漏洞产生的原因是ADCS支持的服务器角色功能错
  • spring-boot整合基本jdbc(基于oracle数据库)

    点击有惊喜 https mp weixin qq com s 2My JPTIaF02w70J CRM4A 快速搭建一个web工程 搭建完一个web工程 要想连接上oracle数据库 还得进行以下操作 1 在pom xml中引入jdbc连接
  • 奋斗的人生很精彩

    奋斗 是人生道路上永恒的主题 它意味着不懈的努力 不断的追求 以及对梦想的执着追求 在我们的人生旅途中 每个人都有自己的目标和梦想 有些人梦想成为一名成功的商人 有些人希望成为一名伟大的科学家 而有些人则渴望成为一名杰出的艺术家 无论我们的
  • Linux下线程池的代码

    此博客仅为了存放代码 Linux 加锁 线程池 头文件 include
  • 在jupyter Notebook上绘制动态曲线

    在jupyter Notebook上绘制动态曲线 1 前言 2 实现原理 3 实现源码 1 前言 在上一篇文章中介绍了在如Pycharm VsCode IDEA等 非交互式编程软件中绘制动态曲线的实现原理 那么问题来了 在如jupyter
  • Empowering Language Models with Knowledge Graph Reasoning for Open-Domain Question Answering

    本文是LLM系列文章 针对 Empowering Language Models with Knowledge Graph Reasoning for Open Domain Question Answering 的翻译 用知识图谱推理增强
  • flask入门

    一 falsk简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架 其 WSGI 工具箱采用 Werkzeug 模板引擎则使用 Jinja2 Flask使用 BSD 授权 Flask是一个轻量级的可定制框架 使用Pyth
  • 树莓派4B-使用 RPI.GPIO 模块的脉宽调制(PWM)功能

    脉宽调制 PWM 是指用微处理器的数字输出来对模拟电路进行控制 是一种对模拟信号电平进行数字编码的方法 在树莓派上 可以通过对GPIO的编程来实现PWM 创建一个 PWM 实例 1 p GPIO PWM channel frequency