【花雕动手做】有趣好玩音乐可视化项目(06)---十六段音乐可视化动态频谱仪(使用FFT算法)

在这里插入图片描述

偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累些有用的音乐频谱可视化的资料,也会争取成型一些实用好玩的音乐可视器项目。

【花雕动手做】有趣好玩的音乐可视化系列小项目(06)—点阵频谱灯

项目所需材料如下:

在这里插入图片描述

【花雕动手做】音乐可视化系列小项目(06)—点阵频谱灯
项目之一:两位点阵屏八段分频音乐频谱仪
实验场景图

在这里插入图片描述

实验场景动态图

在这里插入图片描述

【花雕动手做】音乐可视化系列小项目(06)—点阵频谱灯
项目之两位点阵屏八段分频音乐频谱仪

实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMjgzMTQ5Mg==.html?firsttime=0

在这里插入图片描述

【花雕动手做】音乐可视化系列小项目(06)—点阵频谱灯
项目之二:FFT算法,八段音乐可视化动态频谱仪

实验开源代码

/*
 【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯
 项目之二:FFT算法,八段音乐可视化动态频谱仪
*/

#include <arduinoFFT.h>

#include <MD_MAX72xx.h>

#include <SPI.h>

MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 4);

arduinoFFT FFT = arduinoFFT();

double realComponent[64];

double imagComponent[64];

int spectralHeight[] = {0b00000000,0b10000000,0b11000000,

                        0b11100000,0b11110000,0b11111000,

                        0b11111100,0b11111110,0b11111111};

int index, c, value;

void setup()

{

  disp.begin();

  Serial.begin(9600);

}

void loop()

{

  int sensitivity = map(analogRead(A6),0,1023,50,100); 

  Serial.println (analogRead(A6));

  for(int i=0; i<64; i++)

  {

    realComponent[i] = analogRead(A7)/sensitivity;

    imagComponent[i] = 0;

  }

  FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD);

  FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD);

  FFT.ComplexToMagnitude(realComponent, imagComponent, 64);

  for(int i=0; i<32; i++)

  {

    realComponent[i] = constrain(realComponent[i],0,80);

    realComponent[i] = map(realComponent[i],0,80,0,8);

    index = realComponent[i];

    value = spectralHeight[index];

    c = 31 - i;

    disp.setColumn(c, value);

  }

}

【花雕动手做】音乐可视化系列小项目(06)—点阵频谱灯
项目之二:FFT算法,八段音乐可视化动态频谱仪

实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMjkwMjA5Ng==.html?spm=a2hcb.playlsit.page.1

在这里插入图片描述
实验场景动态图

在这里插入图片描述
【花雕动手做】音乐可视化系列小项目(06)—点阵频谱灯
项目之十六段音乐可视化动态频谱仪(使用FFT算法)

实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMjkxMjkxNg==.html?firsttime=0

在这里插入图片描述

实验场景动态图

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
「雕爷学编程」Arduino动手做寻迹的实验可以使用TCRT5000红外反射光电开关寻迹传感器模块。这个传感器模块可以通过检测周围的光反射来进行寻迹操作。你可以将这个模块连接到mBot的主控板mCore V1.5的RJ25接口上,因为mBot的主控板兼容Arduino系统,所以你可以使用Arduino编程语言来控制mBot进行寻迹操作。请参考【Arduino】168种传感器模块系列实验中的实验六十六,该实验详细介绍了如何使用TCRT5000红外反射光电开关寻迹传感器模块进行寻迹。祝你成功完成实验!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【雕爷学编程】Arduino动手做(194)---makeblock mbot 主控板2](https://blog.csdn.net/weixin_41659040/article/details/132141677)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [【雕爷学编程】Arduino动手做(65)---红外寻迹传感器](https://blog.csdn.net/weixin_41659040/article/details/106604080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值