本文主要介绍基于Arduino实现的音乐频谱显示,音乐频谱原理就是声音传感器(MIC)接收音频信号后通过FFT将时域信号转换成频域信号,再将音频信号频域分量分别显示在对应的LED点阵屏上,呈现出音乐随频律动的感觉,整体效果比较赏心悦目
完整代码见文末链接(含相关头文件)

(1)简介

首先介绍实现本文所需要的主要器件:
(1)Arduino开发板:全系列均可以,本文主要以UNO为例
(2)MAX7219 LED点阵模块
有关于该模块的详细介绍见:https://blog.csdn.net/u011816009/article/details/124309755
(3)声音传感器:要求能模拟量输出,理论上只要能输出模拟量的都可以,我是电子大楼随意几块钱买了个,也能正常使用

(2)接线图

接线图相对比较简单,按照下图示意接线即可

(3)程序代码

初始化配置

include "LedControl.h"/* Led matrix - Max7219 Declared */
LedControl lc = LedControl(7, 6, 5, 1);const int maxScale = 50;/* Sensor - Max9812 Declared */
const int sensorPin = A4;
const int sampleWindow = 50; // 50ms = 20Hz
unsigned int sample;

主函数如下

void loop() {
startMillis = millis();
//peakToPeak = 0;signalMax = 0;
signalMin = 255;// Get data in 50ms
while (millis() - startMillis < sampleWindow) {
sample = analogRead(sensorPin);if (sample < 255) {
if (sample > signalMax) {
signalMax = sample;
}
if (sample < signalMin) {
signalMin = sample;
}
}// 20Hz - 64Hz - 125Hz - 250Hz - 500Hz - 1kHz (timeCycle = 1/F)(ms)
timeCycle = millis() - startMillis;
if (timeCycle == 1 || timeCycle == 2 || timeCycle == 4 || timeCycle == 8
|| timeCycle == 16 || timeCycle == 32 || timeCycle == 40 || timeCycle == 50) {
signalMaxBuff[index] = signalMax;
signalMinBuff[index] = signalMin;
index = (index + 1) % 8;
delay(1);
//Serial.println(timeCycle);
}
}// Delete pointer to array
index = 0;// Calculation after get samples
for (int i = 0; i < 8; i++) { // i = row (led matrix)
// sound level
peakToPeak[i] = signalMaxBuff[i] - signalMinBuff[i];// Map 1v p-p level to the max scale of the display
displayPeak[i] = map(peakToPeak[i], 0, 254, 0, maxScale);// Show to led matrix
displayLed(displayPeak[i], i);// Led drop down
if (displayPeak[i] >= temp[i]) {
temp[i] = displayPeak[i];
}
else {
temp[i]--;
}

(4)视频效果展示

Arduino音乐频谱

(5)附完整代码(含所需头文件等)

百度网盘下载:
链接:https://pan.baidu.com/s/15uyKs5nhGCX9W46Yd7j4FA
提取码:c457

CSDN下载:
https://download.csdn.net/download/u011816009/87177570

Arduino--音乐频谱相关推荐

  1. Arduino音乐频谱

    一. 项目简介 本制作是踩在前人的肩膀上走过来的,在清风duino基于arduino Pro Mimi_语音播放彩灯系统基础上修改过来的,现在把不成熟的制作过程分享给大家,希望对需要的朋友有所帮助. ...

  2. Arduino ESP8266+OLED可视化音乐频谱:11段分频1.3寸OLED显示频谱线

    Arduino ESP8266+OLED可视化音乐频谱:11段分频1.3寸OLED显示频谱线 本来是想在0.96寸屏幕上驱动显示的,无奈,代码在使用0.96的显示驱动库是,老是找不到I2C的地址,FF ...

  3. html音乐跳动的线,利用CSS3制作跳动音乐频谱跳动效果

    [摘要] CSS3新增很多实用的属性,特别是可以实现动画效果的animation属性,本文通过使用CSS3来实现一个类似于音乐频谱跳动效果. 在一个网站上看到"直播中"的提示标题, ...

  4. 桌面音乐频谱linux,X Music Spectrum(音乐频谱桌面特效)

    XMusicSpectrum是一款音乐频谱桌面特效软件,听上去可能很复杂,简单点来说就是当你用播放器播放音乐时,屏幕下方会出现动态音乐频谱,让你的桌面变成更加丰富多彩. 相关软件软件大小版本说明下载地 ...

  5. Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条

    前段时间,公司项目有个UI需求,要做一个这么的东西 : 一个仿音乐频率谱线进度条(这是什么鬼?),那好,就先将这个控件命名为:音乐频谱进度条:) 废话不多说,先来看一下效果图: 附上在GitHub上的 ...

  6. Arduino音乐代码《卡农》(简易版)

    最近看了电视剧<开端>,我按照音乐简谱编写<卡农>的Arduino音乐代码,仅录了最精彩的部分.我是新手,请多多关照! 我把音乐代码放在了循环函数中,<卡农>会一直 ...

  7. MSP430F5529 口袋板 实验板 资料 单片机 呼吸灯 音乐频谱 万年历 电子时钟 温度计 墨水屏 声控灯

    资料下载戳我 实验 1 看门狗中断会让灯取反 蜂鸣器取反 3.1 按键打开或者关闭50ms定时器中断 3.2 按键打开或者关闭500ms定时器中断 4 电位器电压决定了亮灯个数 5 按键打开或者关闭 ...

  8. LED音乐频谱之概述

    点击打开链接       转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/37929733 这个LED音乐频谱是我在学51单片机的 ...

  9. Python 提取音乐频谱并可视化

    你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作: Python 剪辑音乐就是这么简单 来可视化下面 ...

  10. STM32F103+FFT+OLED25664的音乐频谱制作分享(继续干货)

    前言:之前,笔者设计并制作了一个简单的FFT音乐频谱,并且分享了制作过程.本文是在原来的基础上做了一些修改. 效果演示:https://www.bilibili.com/video/av4791553 ...

最新文章

  1. android实现长截屏,Android实现全屏截图或长截屏功能
  2. win10安装配置gcc编译环境
  3. node.js path
  4. Linux数据写操作改进
  5. code iban 是有什么组成_「面试」new String(abc)和abc有什么区别?反编译看看原理吧...
  6. MyBatis实现SaveOrUpdate
  7. VMware vSAN 7.0 发行说明
  8. 在HTML中使用JavaScript
  9. JSON格式解析和libjson使用简介-转
  10. 用代码实现task列表里面的Assigned To选择多个人
  11. 无法识别的配置节“connectionStrings”的解决方法
  12. Ai斗地主智能出牌算法
  13. detours钩子库的简单使用
  14. 二建《机电》案例 100 问
  15. 巧用css的滤镜filter属性处理图片,高斯模糊,HTML页面黑白滤镜等
  16. ROS集成开发环境IDE----RoboWare开源
  17. app直播源代码是如何实现直播间小游戏的
  18. 平流式沉淀池流量计算_平流沉淀池设计计算
  19. Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离
  20. 产品设计中的脉冲群(EFT)防护

热门文章

  1. unity2D横版游戏教程终章-主菜单和暂停菜单
  2. [转自雨痕]LINQ to SQL - Delay Loaded
  3. JS实现页面打印,控制打印时显示隐藏
  4. 关于机械硬盘的两个重要知识点!!!
  5. Thinkpad T440P使用 rufus-3.13 安装 Win10_20h2_x64
  6. Endnote | 如何快速分享文献给别人(包含题录+备注+pdf文件)| endnote保存备份
  7. 【微信小程序】实现手写电子签名并保存为图片功能
  8. 一步一步往上爬 学习毕老师java视频的第01.02天
  9. Markdown 换行,空格
  10. 技巧分享:你知道视频转文字怎么操作?