15985浏览
楼主: 驴友花雕

[项目] 【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 07:22:53

   实验场景动态图

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 07:25:05

本帖最后由 驴友花雕 于 2021-11-22 07:28 编辑

  【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之二:多档arduinoFFT浮点32段频谱仪

   实验视频剪辑 5

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.5


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 07:38:36

   实验场景动态图

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 10:56:56

本帖最后由 驴友花雕 于 2021-11-22 11:09 编辑

    【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏   项目之二:多档arduinoFFT浮点32段频谱仪

   实验视频剪辑 6

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


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 11:14:46

   实验场景动态图

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 11:38:06

  【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之二:多档arduinoFFT浮点32段频谱仪

   实验视频剪辑 7

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 11:53:01

   实验场景动态图7

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1






回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 12:02:09

  【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之二:多档arduinoFFT浮点32段频谱仪

   实验视频剪辑 8

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 12:08:38

   实验场景动态图 8


【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 12:13:14

【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之三:红绿色32段级联频谱点阵屏灯(FFT算法)

   实验开源代码


  1. /*
  2.   【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
  3.   项目之三:红绿色32段级联频谱点阵屏灯(FFT算法)
  4.   接脚连线:MAX9814 接A0
  5.   MAX7219 UNO
  6.   VCC →→→→→ 5V
  7.   GND →→→→→ GND
  8.   DIN →→→→→ D11(数据,数据接收引脚)
  9.   CS →→→→→ D10(负载,命令接收引脚)
  10.   CLK →→→→→ D13(时钟,时钟引脚)
  11. */
  12. #include <arduinoFFT.h>
  13. #include <MD_MAX72xx.h>
  14. #include <SPI.h>
  15. MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 1);
  16. arduinoFFT FFT = arduinoFFT();
  17. double realComponent[64];
  18. double imagComponent[64];
  19. int spectralHeight[] = {0b00000000, 0b10000000, 0b11000000,
  20.                         0b11100000, 0b11110000, 0b11111000,
  21.                         0b11111100, 0b11111110, 0b11111111
  22.                        };
  23. int index, c, value;
  24. void setup()
  25. {
  26.   disp.begin();
  27.   Serial.begin(9600);
  28. }
  29. void loop()
  30. {
  31.   int sensitivity = map(analogRead(A0), 0, 1023, 50, 100);
  32.   Serial.println (analogRead(A0));
  33.   for (int i = 0; i < 64; i++)
  34.   {
  35.     realComponent[i] = analogRead(A7) / sensitivity;
  36.     imagComponent[i] = 0;
  37.   }
  38.   FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
  39.   FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD);
  40.   FFT.ComplexToMagnitude(realComponent, imagComponent, 64);
  41.   for (int i = 0; i < 32; i++)
  42.   {
  43.     realComponent[i] = constrain(realComponent[i], 0, 80);
  44.     realComponent[i] = map(realComponent[i], 0, 80, 0, 8);
  45.     index = realComponent[i];
  46.     value = spectralHeight[index];
  47.     c = 31 - i;
  48.     disp.setColumn(c, value);
  49.   }
  50. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 12:55:50

【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之三:红绿色32段级联频谱点阵屏灯(FFT算法)

   实验视频剪辑 1

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.3



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 13:27:53

   实验场景动态图

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 14:23:13

【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
   项目之三:红绿色32段级联频谱点阵屏灯(FFT算法)

   实验视频剪辑 2

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 14:29:04

   实验场景动态图


【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 16:18:30

【花雕动手做】有趣好玩的音乐可视化系列小项目
   项目之四:FFT算法的双点阵屏的动态频谱仪

   实验视频剪辑

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-22 16:31:28

   实验场景动态图

【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-10-5 09:53:55

【花雕动手做】看见声音,基于Arduino系列音乐可视器(1)---LED节奏灯
https://mc.dfrobot.com.cn/thread-311167-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(2)---OLED频谱灯
https://mc.dfrobot.com.cn/thread-311174-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(3)---RGB律动灯
https://mc.dfrobot.com.cn/thread-311183-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(4)---WS2812条灯
https://mc.dfrobot.com.cn/thread-311190-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(5)---WS2812柱跳灯
https://mc.dfrobot.com.cn/thread-311192-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(6)---点阵频谱灯
https://mc.dfrobot.com.cn/thread-311201-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(7)---大方格频谱灯
https://mc.dfrobot.com.cn/thread-311364-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)---四位32段点阵屏
https://mc.dfrobot.com.cn/thread-311490-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(9)---X Music Spectrum
https://mc.dfrobot.com.cn/thread-311627-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(10)---WS2812硬板屏
https://mc.dfrobot.com.cn/thread-311641-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(11)---WS2812幻彩灯带
https://mc.dfrobot.com.cn/thread-313648-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(12)---米管快速节奏灯
https://mc.dfrobot.com.cn/thread-313708-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(13)---有机棒立柱灯
https://mc.dfrobot.com.cn/thread-313723-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(14)---水杯水瓶灯
https://mc.dfrobot.com.cn/thread-313803-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(15)--横排LED方管灯
https://mc.dfrobot.com.cn/thread-313811-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(16)--热干胶棒棒灯
https://mc.dfrobot.com.cn/thread-313844-1-1.html
【花雕动手做】有趣好玩音乐可视化系列(17)--光导纤维灯
https://mc.dfrobot.com.cn/thread-313867-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(18)--LED平面板灯
https://mc.dfrobot.com.cn/thread-313951-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(19)--通体光纤灯
https://mc.dfrobot.com.cn/thread-313962-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(20)--首饰盒镜子灯
https://mc.dfrobot.com.cn/thread-313969-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(21)--CD 光盘灯
https://mc.dfrobot.com.cn/thread-313984-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(22)--LED无限魔方
https://mc.dfrobot.com.cn/thread-313994-1-1.html
【花雕动手做】有趣好玩的音乐可视化(23)--3合1闪点光纤
https://mc.dfrobot.com.cn/thread-314168-1-1.html
【花雕动手做】有趣好玩的音乐可视化(24)--无限LED镜子灯
https://mc.dfrobot.com.cn/thread-314180-1-1.html
【花雕动手做】有趣好玩音乐可视化(25)--水龙卷旋涡灯
https://mc.dfrobot.com.cn/thread-314231-1-1.html
【花雕动手做】有趣好玩音乐可视化系列(26)--LED 超立方体
https://mc.dfrobot.com.cn/thread-314244-1-1.html
【花雕动手做】有趣好玩的音乐可视化(27)--磁搅LED水旋灯
https://mc.dfrobot.com.cn/thread-314273-1-1.html


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-12-4 20:45:47

程序说明:

安装所有必需的库后,通过包含库来启动代码。ArduinoFFT库用于将输入模拟信号转换为频谱。MD_MAX72xx库用于控制显示并在显示器上绘制音频频谱。而SPI库用于在Arduino和点阵显示器之间建立SPI通信。

  1. <div>#include <arduinoFFT.h></div><div>#include <MD_MAX72xx.h></div><div>#include <SPI.h></div>
复制代码



接下来,使用函数 MD_MAX72XX () 为MD_MAX72XX创建一个实例。此功能需要三个参数,第一个是硬件类型,第二个是CS引脚,第三个是连接设备的最大数量。另外,使用 arduinoFFT() 函数为 arduinoFFT 创建一个实例。

  1. <div>MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 4);</div><div>arduinoFFT FFT = arduinoFFT();</div>
复制代码



然后在下一行中,定义两个新数组来存储频谱的实部和虚部的 64 位频谱分量。

  1. <div>double realComponent[64];</div><div>double imagComponent[64];</div>
复制代码





回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-12-4 21:03:10

现在,在 setup() 函数中,以 9600 的波特率初始化串行监视器以进行调试。另外,使用 disp.begin() 函数初始化点阵显示。

  1. <p>void setup()</p><p>{</p><p>  disp.begin();</p><p>  Serial.begin(9600);</p><p>}</p>
复制代码


现在,在循环函数中,我们将使用 for 循环通过 Arduino nano 的 A7 引脚采集 64 个麦克风读数样本,并存储到我们之前定义的“realComponent”数组中。

  1. <p>for (int i=0; i<64; i++)</p><p>  {</p><p>    realComponent[i] = analogRead(A7)/sensitivity;</p><p>    imagComponent[i] = 0;</p><p>  }</p><p></p>
复制代码

从麦克风获得 64 个频谱值后,我们通过 FFT 算法将它们传递,以计算实部和虚部信号的 64 个频谱分量。然后在接下来的几行中,我们通过了这些阅读 FFT。ComplexToMagnitude() 函数用于计算 64 个光谱分量的星等。

  1. <p>FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD);</p><p>FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD);</p><p>FFT.ComplexToMagnitude(realComponent, imagComponent, 64);</p>
复制代码


现在,在接下来的几行中,我们使用 for 循环来控制 LED 矩阵的所有 32 列。在此循环中,我们首先将这些读数转换为已知范围,然后使用 map 函数将这些读数映射到 0 到 8 的范围。零表示该特定列的所有 LED 都将低电平,反之亦然。

  1. <p>for(int i=0; i<32; i++)</p><p>  {</p><p>    realComponent[i] = constrain(realComponent[i],0,80);</p><p>    realComponent[i] = map(realComponent[i],0,80,0,8);</p><p>    index = realComponent[i];</p><p>    value = spectralHeight[index];</p><p>    c = 31 - i;</p><p>    disp.setColumn(c, value);</p><p>  }</p>
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-12-6 19:58:23

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-12-6 20:00:39

本帖最后由 驴友花雕 于 2022-12-6 20:03 编辑

实验的视频记录之二
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5





回复

使用道具 举报

12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail