如下图,那个副傅立叶变换,那个应该怎么改?并且求问如何将一段频率转化成频谱,然后再映射在8×8的点阵上
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-06-01 22:32关注
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5看起来你想要使用Arduino进行音频处理,包括傅立叶变换(FFT)和将频率数据映射到点阵显示。然而,你在代码中遇到了一些问题,包括
ArduinoFFT
模板类的使用错误。首先,让我们解决这个问题。问题1:
ArduinoFFT
类的使用ArduinoFFT
似乎是一个自定义的类,但你的代码没有提供这个类的实现或者导入。你需要确保已经正确地包含了这个类,并且在使用时提供了参数。如果它是一个库的一部分,确保你已经正确地引用了库。解决方案1:
-
如果
ArduinoFFT
是自定义库的一部分:- 确保在
#include
语句中添加正确的库路径:#include <ArduinoFFT.h>
- 如果需要实例化,提供适当的参数,例如采样率:
ArduinoFFT FFT(sampling_rate);
- 确保在
-
如果
ArduinoFFT
是一个第三方库:- 按照库文档的指示安装和包含库。
问题2:函数
void setup()
中的错误invalid use of template-name 'ArduinoFFT' without an argument list
表明ArduinoFFT
类的构造函数没有被正确调用。解决方案2: 在
setup()
函数中,确保在创建FFT
对象时传递适当的参数,如上面提到的sampling_rate
:void setup() { // 其他初始化代码... ArduinoFFT FFT(sampling_period_us); // 使用正确的参数 // ... }
其他步骤:
-
采集音频数据:
- 使用
analogRead()
获取音频输入,并将其存储在vReal
和vImag
数组中。
for (int i = 0; i < SAMPLES; i++) { double sample = analogRead(tonepin); microseconds += sampling_period_us; // 将样本时间戳转换为频率 double frequency = 1.0 / (microseconds / 1000000); // 更新频谱数据 FFT.update(sample, frequency); }
- 使用
-
执行傅立叶变换:
FFT.calculate();
-
处理频谱数据:
- 将结果转换为8x8点阵数据,可能需要对数据进行归一化和裁剪,然后映射到点阵上。
-
显示点阵:
- 使用点阵库(如
Adafruit_GFX
)绘制频谱图。
- 使用点阵库(如
请确保在实际项目中根据你的需求和所使用的库进行相应的调整。如果你还没有找到对应的库或教程,可以查阅Arduino FFT库的文档或搜索相关教程。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录 -
悬赏问题
- ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
- ¥15 matlab自定义损失函数
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图