《庐山派从入门到...》PWM板载蜂鸣器
《庐山派从入门到...》PWM板载蜂鸣器
- 配置PWM模块
- 控制板载无源蜂鸣器
- 播放【一闪一闪亮晶晶】
- 播放do re mi
《庐山派从入门到...》PWM控制无源蜂鸣器
PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用来模拟信号,控制设备的功率输出或者实现对设备的精确控制。PWM信号是一种类似于方波的信号,具有固定的频率,但脉冲宽度(占空比)可以调整。
频率(Frequency):指PWM信号在一秒内循环的次数。频率是周期的倒数,单位是赫兹(Hz)。
周期(Period):指一个完整的PWM信号的时间长度,与频率成反比。单位是秒(s)。
脉宽(Pulse Width):指PWM信号中高电平(通常为1)的时间长度。单位是秒(s)或毫秒(ms)。
占空比(Duty Ratio):表示在一个完整的PWM信号周期内,高电平(通常为1)所占的时间比例。占空比 = (脉宽 / 周期)x 100%。
上升沿(Rising Edge):PWM信号从低电平跳变到高电平的瞬间,通常用来作为触发事件。
下降沿(Falling Edge):PWM信号从高电平跳变到低电平的瞬间,也常被用作触发事件。
正脉冲宽度(Positive Pulse Width):PWM信号中高电平的持续时间,一般情况下的脉宽指的就是这个。
负脉冲宽度(Negative PulseWidth):PWM信号中低电平的持续时间。
在嵌入式系统中,PWM的应用场景非常广泛,例如:
电机控制:通过调整PWM的占空比,可以精确控制直流电机的转速。占空比越高,电机转速越快;占空比越低,电机转速越慢。
LED亮度调节:通过调整PWM的占空比,可以实现对LED灯的亮度调节。占空比越高,LED灯越亮;占空比越低,LED灯越暗。
这个就是我们的板载无源蜂鸣器了,蜂鸣器可以将电信号转化为声音信号,可以向用户提供声音反馈或者警报信号。
蜂鸣器从构造类型上有电磁式和电压式两种,从驱动方式上来说有无源(由外部方波驱动)和有源(由内部驱动,外部给电就行)两种,这里选择的是无源电磁式贴片蜂鸣器,工作电压2.5-4.5v,频率4000Hz,这里的频率是指他在这个频率下的声音最响。
可以用这个蜂鸣器来做人机交互的提示,也可以用不同的PWM来驱动这个蜂鸣器来播放简单的纯音调音乐。
配置PWM模块
⚠️注意!
K230 内部包含两个 PWM 硬件模块,每个模块具有三个输出通道。每个模块的输出频率可调,但三个通道共享同一时钟,而占空比则可独立调整。因此,通道 0、1 和 2 输出频率相同,通道 3、4 和 5 输出频率也相同。这里优先考虑的是板载功能的互斥,所以驱动蜂鸣器用的是PWM1,背光驱动用的是PWM5,这两个PWM通道之间没有耦合,可以随意调整。如果大家同时用到蜂鸣器和背光驱动的时候就要注意了,如果此时使用排针的PWM信号,那么他的频率也就是周期其实你已经不能改了,否则就会互相影响。
要使用 machine.PWM,首先需要导入该模块:
from machine import PWM
控制板载无源蜂鸣器
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io = FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器PWM通道
beep_pwm = PWM(1, 4000, 50, enable=False) # 默认频率4kHz,占空比50%# 使能PWM通道输出
beep_pwm.enable(1)
# 延时50ms
time.sleep_ms(50)
# 关闭PWM输出 防止蜂鸣器吵闹
beep_pwm.enable(0)
# 叫完了就释放PWM
beep_pwm.deinit()
播放【一闪一闪亮晶晶】
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io = FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器
beep = PWM(1, 1000, 50, enable=False) # 默认频率1kHz,占空比50%# 定义音符频率(以Hz为单位)
notes = {'C4': 261,'D4': 293,'E4': 329,'F4': 349,'G4': 392,'A4': 440,'B4': 493,'C5': 523
}# 定义《一闪一闪亮晶晶》旋律和节奏 (音符, 时长ms)
melody = [('C4', 500), ('C4', 500), ('G4', 500), ('G4', 500),('A4', 500), ('A4', 500), ('G4', 1000),('F4', 500), ('F4', 500), ('E4', 500), ('E4', 500),('D4', 500), ('D4', 500), ('C4', 1000)
]def play_tone(note, duration):"""播放指定音符"""frequency = notes.get(note, 0) # 获取音符对应的频率if frequency > 0:beep.freq(frequency) # 设置频率beep.enable(True) # 启用蜂鸣器time.sleep_ms(duration) # 持续播放指定时间beep.enable(False) # 停止蜂鸣器time.sleep_ms(50) # 音符之间的短暂停顿# 播放旋律
for note, duration in melody:play_tone(note, duration)# 释放PWM资源
beep.deinit()
播放do re mi
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io = FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器
beep = PWM(1, 1000, 50, enable=False) # 默认频率1kHz,占空比50%# 定义音符频率(以Hz为单位)
notes = {'do':523,'re':587,'mi':659,'fa':698, 'so':784, 'la':880, 'si':988, }# 定义《一闪一闪亮晶晶》旋律和节奏 (音符, 时长ms)
melody = [('do',500),('re', 500), ('mi', 500), ('fa', 500),('so',500),('la', 500), ('si', 1000)
]def play_tone(note, duration):"""播放指定音符"""frequency = notes.get(note, 0) # 获取音符对应的频率if frequency > 0:beep.freq(frequency) # 设置频率beep.enable(True) # 启用蜂鸣器time.sleep_ms(duration) # 持续播放指定时间beep.enable(False) # 停止蜂鸣器time.sleep_ms(50) # 音符之间的短暂停顿# 播放旋律
for note, duration in melody:play_tone(note, duration)# 释放PWM资源
beep.deinit()
相关文章:

《庐山派从入门到...》PWM板载蜂鸣器
《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用…...

【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
2024年12月3日,河南省财政厅发布了《关于省级政务信息化建设项目支出预算标准的规定》豫财预〔2024〕105号。《关于省级政务信息化建设项目支出预算标准的规定 (试行)》(豫财预 〔2020〕81号)同时废止。新的豫财预〔20…...

【数据结构】数据结构整体大纲
数据结构用来干什么的?很简单,存数据用的。 (这篇文章仅介绍数据结构的大纲,详细讲解放在后面的每一个章节中,逐个击破) 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢ÿ…...

【C++基础】09、结构体
一、结构体(struct) C/C 数组允许定义可存储相同类型数据项的变量,但是结构体是 C 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。 结构体用于表示一条记录,假设现在想要跟踪图书馆中书本的动态,可能需要跟踪每…...

大恒相机开发(2)—Python软触发调用采集图像
大恒相机开发(2)—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序,用于从大恒相机采集图像,通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码: # version:…...

QT的前景与互联网岗位发展
qt是用来干什么的 --》桌面应用开发(做电脑的应用程序,面对客户端)。 主要用于开发跨平台的应用程序和用户界面(UI)。它是一个全面的C库集合,提供了构建软件应用所需的各种工具和功能。 客户端开发的重…...

青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
近日,工业和信息化部公示了“2024年网络安全技术应用典型案例拟支持项目名单”,青藤云安全联合某股份制银行共同申报的主机威胁狩猎平台项目凭借其技术先进性及行业示范性成功入选。 网络安全技术应用试点示范工作是由工业和信息化部、国家互联网信息办公…...
NVIDIA GPU 内部架构介绍
NVIDIA GPU 架构 NVIDIA GPU 的 SM(Streaming Multiprocessor) 和 GPC(Graphics Processing Cluster) 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能,以下是对这两个参数的详细介绍: 1. …...

重温设计模式----装饰模式
文章目录 装饰模式定义UML 图其主要优点包括:装饰模式的主要角色有:C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式必生成子类更加灵活 装饰模式(Decorator Pattern&…...

第十六章 C++ 字符串
C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此,一个以 null 结尾的…...
MySQL中Seconds_Behind_Master是怎么计算的
目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…...
React Native 集成原生Android功能
React Native 集成原生功能完整指南 前言 在 React Native 开发中,我们经常需要使用设备的原生功能,比如蓝牙、打印机等。本文将以集成打印机功能为例,详细介绍如何在 React Native 项目中集成 Android 原生功能。 集成步骤概述 创建原生…...
Mac mini m4安装PD和Crack和关闭SIP
文章目录 说明PD下载地址Crack下载地址PD版本补丁版本说明SIP简介SIP关闭方法启用 SIP:补充说明 说明 参考文章地址 PD下载地址 PD20.0.0 PD20.0.1 PD20.1.0 PD20.1.1 PD20.1.2 PD20.1.3 Crack下载地址 Parallels Desktop Activation Tool PD版本补丁版本…...
详解C语言中的关键词:extern以及它需要注意的事项
extern 是C语言中一个非常重要的关键字,用于声明变量或函数的 外部链接性,即在当前文件中使用另一个文件中定义的变量或函数。以下是 extern 的作用和使用场景: 1. extern 的作用 跨文件访问: extern 告诉编译器,某个…...

框架程序设计-简答以及论述
目录 maven的pom作用: Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用,redis配置过程 Redis配置过程: SpringBoot缓存配置过程: AOP的五种增强注解: 论述题:包结构作用、…...

ce第六次作业
1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。 [rootServer ~]# yum install -y mailx [rootServer ~]# yum -y install bind-utils [rootServer ~]# vim /etc/mail.rc set from15339…...
为何页面搜索应避免左模糊和全模糊查询???
前言 在构建高效且可扩展的Web应用程序时,数据库查询的性能是影响用户体验的关键因素之一。特别是对于涉及大量数据的页面搜索功能,选择正确的查询方式不仅可以提升应用的速度,还能显著改善用户交互体验。 B-Tree索引与最左前缀匹配特性 1…...

AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
前言 在当今科技迅猛发展的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活与工作方式。作为AI领域的重要盛会,CSIG青年科学家会议AI可信论坛汇聚了众多青年科学家与业界精英,共同探讨AI技术的最新进展、挑…...

在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比
1. 安装torch 在官网上可以查看安装教程,Start Locally | PyTorch 作者安装了目前最新的torch版本2.5.1,需要提前安装python3.9及以上版本,作者python版本是python3.11最新版本 使用conda安装torch,在终端进入要安装的环境&…...
生成式人工智能在生产型企业中的应用
生成式人工智能(Generative AI)是指使用人工智能来创建新内容,如文本、图像、音乐、音频和视频等。生成式人工智能在生产型企业中的应用涵盖了内容创作与自动化、数据分析与决策支持、生产流程优化、产品设计与开发、客户服务与沟通、员工培训…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
Docker、Wsl 打包迁移环境
电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.2609…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...
[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

持续交付的进化:从DevOps到AI驱动的IT新动能
文章目录 一、持续交付的本质:从手动到自动的交付飞跃关键特性案例:电商平台的高效部署 二、持续交付的演进:从CI到AI驱动的未来发展历程 中国…...