社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
专业技术中心
›
DigiKey得捷技术专区
›
【Follow me第二季第4期】RGB LED显示PDM麦克风收音大小
返回列表
发新帖
回复
阅
54
|
回
0
iexplore123
当前离线
一粒金砂(中级)
最后登录
2024-12-11
在线时间
12 小时
威望
44分
芯积分
133分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
iexplore123
22
帖子
2
TA的资源
一粒金砂(中级)
+ 好友
私信
楼主
发表于2024-12-7 19:53
只看该作者
【Follow me第二季第4期】RGB LED显示PDM麦克风收音大小
[复制链接]
# 【Follow me第二季第4期】 通过RGB LED不同颜色、亮度显示PDM麦克风收到的声音大小 ## 通过RGB LED显示声音大小 话不多说,我们直接上代码。 ### 程序代码 ```cpp #include
#include
#include
#include
#include
/* 1.Blink三色LED / 串口打印Hello DigiKey & EEWorld! 2.调试IMU传感器,通过串口打印六轴原始数据 3.调试PDM麦克风,通过串口打印收音数据和音频波形。 */ static const char channels = 1; // 麦克风通道数 static const int sampleRate = 16000; // 音频采样率 short sampleBuffer[512]; // 音频缓冲区 volatile int samplesRead = 0; // 音频采样数 int minSoundThreshold = 100; // 动态最小声音检测阈值 #define SMOOTHING_FACTOR 0.9 // 平滑因子 float smoothedSample = 0; // 平滑后的采样值 void onPDMData() { // PDM麦克风数据回调函数 int numSamples = PDM.available(); // 获取可用采样数 if (numSamples > 0) { PDM.read(sampleBuffer, numSamples); samplesRead = numSamples / 2; // 16位采样,每个采样占2字节 } } void setup() { // 初始化串口 Serial.begin(115200); while (!Serial); // 等待串口连接 // 初始化LED引脚 pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); // 打印欢迎信息 Serial.println("Hello DigiKey & EEWorld!"); // 初始化IMU传感器 if (!IMU.begin()) { Serial.println("Failed to initialize IMU!"); while (1); } // 初始化PDM麦克风 PDM.onReceive(onPDMData); if (!PDM.begin(channels, sampleRate)) { Serial.println("Failed to initialize PDM!"); while (1); } // 初始化LED_Buildin引脚 pinMode(LED_BUILTIN, OUTPUT); } void blinkLEDs() { // 闪烁三色LED digitalWrite(LEDR, HIGH); delay(500); digitalWrite(LEDR, LOW); digitalWrite(LEDG, HIGH); delay(500); digitalWrite(LEDG, LOW); digitalWrite(LEDB, HIGH); delay(500); digitalWrite(LEDB, LOW); } void printIMUData() { // 读取IMU传感器数据,共有6个轴 float x, y, z, x_g, y_g, z_g; if (IMU.accelerationAvailable()) { IMU.readAcceleration(x, y, z); // 读取加速度数据 IMU.readGyroscope(x_g, y_g, z_g); // 读取陀螺仪数据 Serial.print("Acceleration X: "); Serial.print(x); Serial.print(", Y: "); Serial.print(y); Serial.print(", Z: "); Serial.println(z); Serial.print("Gyroscope X: "); Serial.print(x_g); Serial.print(", Y: "); Serial.print(y_g); Serial.print(", Z: "); Serial.println(z_g); } } void printPDMData() { // 读取PDM麦克风数据 for (int i = 0; i < samplesRead; i++) { Serial.println(sampleBuffer
); } } void displaySoundLevelWithAnimation() { int maxSample = 0; for (int i = 0; i < samplesRead; i++) { maxSample = max(maxSample, abs(sampleBuffer
)); } // 平滑处理 smoothedSample = SMOOTHING_FACTOR * smoothedSample + (1 - SMOOTHING_FACTOR) * maxSample; int targetBrightness = (smoothedSample > minSoundThreshold) ? map(smoothedSample, minSoundThreshold, 32767, 0, 255) : 0; static int currentBrightness = 0; Serial.print("maxSample: "); Serial.print(maxSample); Serial.print(" smoothedSample: "); Serial.print(smoothedSample); Serial.print(" minSoundThreshold: "); Serial.print(minSoundThreshold); Serial.print(" targetBrightness: "); Serial.print(targetBrightness); Serial.print(" currentBrightness: "); Serial.println(currentBrightness); // 渐变动画 int step = 1; // 增加变化步长,降低灵敏度 if (currentBrightness < targetBrightness) { currentBrightness = min(currentBrightness + step, targetBrightness); } else if (currentBrightness > targetBrightness) { currentBrightness = max(currentBrightness - step, targetBrightness); } // 根据亮度值设置RGB LED颜色 int brightness = 255 - currentBrightness; analogWrite(LEDR, brightness); analogWrite(LEDG, brightness); analogWrite(LEDB, brightness); // 根据音量大小点亮LED_Builtin digitalWrite(LED_BUILTIN, smoothedSample > 2000 ? HIGH : LOW); } void loop() { // 闪烁三色LED // blinkLEDs(); // 读取IMU传感器数据 // printIMUData(); // 显示声音大小并添加动画 displaySoundLevelWithAnimation(); // 读取PDM麦克风数据 // if (samplesRead) { // printPDMData(); // samplesRead = 0; // } // delay(500); } ``` ### 程序说明 在上一个任务的基础上,我们添加了显示声音大小并添加动画的功能。 1. **初始化部分**: - 初始化串口通信,设置波特率为115200。 - 初始化LED引脚,包括三色LED和板载LED。 - 初始化IMU传感器和PDM麦克风。 2. **PDM麦克风数据回调函数**: - `onPDMData`函数用于处理PDM麦克风的数据,将采集到的数据存储在缓冲区中。 3. **显示声音大小并添加动画**: - `displaySoundLevelWithAnimation`函数用于根据麦克风采集到的音频数据,计算声音的大小,并通过RGB LED和板载LED显示出来。 - 使用平滑因子对采样值进行平滑处理,避免数据波动过大。 - 根据平滑后的采样值,计算目标亮度,并通过渐变动画的方式调整当前亮度。 - 根据亮度值设置RGB LED的颜色,并根据音量大小点亮板载LED。 4. **主循环**: - 在主循环中调用`displaySoundLevelWithAnimation`函数,不断更新LED的显示效果。 #### 效果展示
WIN_20241207_19_15_34_Pro
## 任务进度 - [x] 搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld! - [x] 学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据。 - [x] 学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。 - [x] 通过RGB LED不同颜色、亮度显示PDM麦克风收到的声音大小。 - [ ] 通过IMU数据结合机器学习算法,识别运动状态,并通过串口打印。(选做)
此帖出自
DigiKey得捷技术专区论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
验证并选择心仪MOSFET,探寻选型奥秘!注册、体验双重好礼等你拿~
免费申请测评 | 泰坦触觉 TITAN Core开发套件
评论有奖:元器件采购的秘密法宝,助你做个自带“松弛感”的职场人!
免费申请测评 | RDK X3机器人开发套件
中星联华直播 | 高速信号完整性分析与测试 — “码”上行动系列线上讲堂
新栏目器件口碑专辑上线~快来点评吧!
2024 DigiKey 应用说:大模型时代的智能汽车
有奖直播报名中!抢占工业4.1先机 文晔科技日等你来!
开源项目
更多>>
ESP32-C3 灵犀佩
使用 ROHM Semiconductor 的 BM2P034 的参考设计
DER-359 - 用于BR30灯的8W非隔离式 Tapped-Buck,TRIAC可调光LED驱动器
用于工业应用的 LT3973HDD-5 3.3V 降压转换器的典型应用
使用 Analog Devices 的 LTC2945IMS-1 的参考设计
RDA6625e 868/915MHz 功放Demo
【物联网】基于Hi3861走mqtt协议的无线开关
OLED 动画显示支援 GIF 解碼 (LZW)
NSV45015WT1G 用于基本交流应用的恒流 LED 驱动器的典型应用
DC1018B-B,LT4356-2 过压保护稳压器演示板,具有自动重试功能,辅助放大器在关断期间保持开启
随便看看
想用PGA970做LVDT传感器解调模块,但是官网下载资料一直被拒,哪位大佬可以帮下载一下
想用PGA970做LVDT传感器解调模块,但是官网申请更多信息时下载资料一直被拒,改了国家还是不行,不知道为啥,有大佬可以帮我下载一份吗?
keil调试stm32单片机时,全速运行时会复位
【MCXN947开发板测评】以按键切换色彩
加急:在学习cadence画原理图生成网络表时报错
色环电阻识别
有一个主程序是这样的,帮忙看看
做wince开发 多挣多少 薪水啊 ?
有关ARM寄存器的操作
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
工频高压发生器
高频扼流圈
电池电动势
三端电容
沿面放电
纽扣电池
硬中断
换流器
VR技术
TDA2822M
相关文章
更多>>
美国商务部向美光科技提供 61 亿美元资金,用于在该国生产芯片
12 月 11 日消息,美国商务部周二表示,作为 2022 年《芯片和科学法案》的一部分,美光科技已获得高达 61.65 亿美元(当前约 448.07 亿元人民币)的拨款,用于在美国制造半导体。 该
IBM 全新光学技术可缩短 GPU 闲置时间,大幅加快 AI 模型训练速度
12 月 11 日消息,IBM 宣布开发出一种新的光学技术,能够以光速训练 AI 模型,同时大幅节省能源。该公司表示,通过将这项突破应用于数据中心,训练一个 AI 模型所节省的能源相当于 5000
安森美为什么要收购UnitedSiC ?
昨日,SiC界又一新闻引发行业关注。安森美宣布1.15亿美元现金收购Qorvo碳化硅结型场效应晶体管 (SiC JFET) 技术业务,包括其子公司United Silicon Carbide(Uni
比亚迪远程挪车专利获授权,可解决发生事故时的责任归属问题
台积电 11 月销售额 2760.6 亿元新台币,同比增长 34%
谷歌最强量子计算芯片Willow面世
英伟达为什么会被立案调查?
台积电2nm工艺继续涨价:芯片价格将会飙升
上海首例脑机接口植入患者已可完成脑控喝水
消息称三星电子完成 4XX 层 NAND 闪存技术开发,开始向量产线转移
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
答题有礼最后5天 | 英飞凌高密度双相电源模块为高性能运算平台而生
活动时间:即日起-12月15日
活动奖励:蓝牙音箱、氮化镓充电器套装、黑色小背包
查看 »
有奖直播:抢占工业4.1先机 文晔科技日等你来!
直播主题:抢占工业4.1先机 文晔科技日等你来!
直播时间:12月18日(周三)14:00-16:00
预报名参与直播、直播间提问,均有机会获得惊喜好礼!
查看 »
验证并选择心仪MOSFET,探寻选型奥秘!注册、体验双重好礼等你拿~
MOSFET 选型有点难
选N沟道MOSFET?还是选P沟道MOSFET?
封装如何选:不同封装尺寸有不同的热阻和耗散功率。
瞬态散热更严苛,热设计需要如何处理?
用东芝在线电路仿真器,一键解锁MOSFET选型的秘密!
查看 »
评论有奖:元器件采购的秘密法宝,助你做个自带“松弛感”的职场人!
时间:即日起-12月25日
留言评论赢户外露营车、蓝牙音响!
查看 »
报名新品直播,赢STM32新品开发板!
ST首款带有NPU的MCU STM32N6到底怎么样,欢迎报名STM32全球线上峰会寻找答案!还能赢【开发板、京东卡】,有新品开发板呦,12月12日(周四)14:00不见不散!
查看 »
有奖直播报名| 看安世650V IGBT产品有何应用优势
为何是高可靠性IGBT的新选择,还能赢【双肩包、京东卡、吸管杯】
【直播时间】12月19日(周四)下午15:00-16:30
查看 »
免费申请测评:RDK X3机器人开发套件
RDK X3是一款面向生态开发者的嵌入式AI开发板,具备5Tops的端侧推理能力,40pin接口兼容树莓派。搭载了伯努利2.0BPU和4核ARM A53处理器。拥有先进的ISP处理算法,使得在宽动态、低照度场景下,也能得到高质量的图像;同时具备强大的视频处理能力,可同时处理多路Camera Sensor的输入并支持H.264/H.265编解码。
查看 »
安世半导体直播报名中
直播主题:安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
直播时间:12月17日(周二)下午14:00
报名就有机会获得:定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛