Arduino--音乐频谱
本文主要介绍基于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--音乐频谱相关推荐
- Arduino音乐频谱
一. 项目简介 本制作是踩在前人的肩膀上走过来的,在清风duino基于arduino Pro Mimi_语音播放彩灯系统基础上修改过来的,现在把不成熟的制作过程分享给大家,希望对需要的朋友有所帮助. ...
- Arduino ESP8266+OLED可视化音乐频谱:11段分频1.3寸OLED显示频谱线
Arduino ESP8266+OLED可视化音乐频谱:11段分频1.3寸OLED显示频谱线 本来是想在0.96寸屏幕上驱动显示的,无奈,代码在使用0.96的显示驱动库是,老是找不到I2C的地址,FF ...
- html音乐跳动的线,利用CSS3制作跳动音乐频谱跳动效果
[摘要] CSS3新增很多实用的属性,特别是可以实现动画效果的animation属性,本文通过使用CSS3来实现一个类似于音乐频谱跳动效果. 在一个网站上看到"直播中"的提示标题, ...
- 桌面音乐频谱linux,X Music Spectrum(音乐频谱桌面特效)
XMusicSpectrum是一款音乐频谱桌面特效软件,听上去可能很复杂,简单点来说就是当你用播放器播放音乐时,屏幕下方会出现动态音乐频谱,让你的桌面变成更加丰富多彩. 相关软件软件大小版本说明下载地 ...
- Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条
前段时间,公司项目有个UI需求,要做一个这么的东西 : 一个仿音乐频率谱线进度条(这是什么鬼?),那好,就先将这个控件命名为:音乐频谱进度条:) 废话不多说,先来看一下效果图: 附上在GitHub上的 ...
- Arduino音乐代码《卡农》(简易版)
最近看了电视剧<开端>,我按照音乐简谱编写<卡农>的Arduino音乐代码,仅录了最精彩的部分.我是新手,请多多关照! 我把音乐代码放在了循环函数中,<卡农>会一直 ...
- MSP430F5529 口袋板 实验板 资料 单片机 呼吸灯 音乐频谱 万年历 电子时钟 温度计 墨水屏 声控灯
资料下载戳我 实验 1 看门狗中断会让灯取反 蜂鸣器取反 3.1 按键打开或者关闭50ms定时器中断 3.2 按键打开或者关闭500ms定时器中断 4 电位器电压决定了亮灯个数 5 按键打开或者关闭 ...
- LED音乐频谱之概述
点击打开链接 转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/37929733 这个LED音乐频谱是我在学51单片机的 ...
- Python 提取音乐频谱并可视化
你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作: Python 剪辑音乐就是这么简单 来可视化下面 ...
- STM32F103+FFT+OLED25664的音乐频谱制作分享(继续干货)
前言:之前,笔者设计并制作了一个简单的FFT音乐频谱,并且分享了制作过程.本文是在原来的基础上做了一些修改. 效果演示:https://www.bilibili.com/video/av4791553 ...
最新文章
- android实现长截屏,Android实现全屏截图或长截屏功能
- win10安装配置gcc编译环境
- node.js path
- Linux数据写操作改进
- code iban 是有什么组成_「面试」new String(abc)和abc有什么区别?反编译看看原理吧...
- MyBatis实现SaveOrUpdate
- VMware vSAN 7.0 发行说明
- 在HTML中使用JavaScript
- JSON格式解析和libjson使用简介-转
- 用代码实现task列表里面的Assigned To选择多个人
- 无法识别的配置节“connectionStrings”的解决方法
- Ai斗地主智能出牌算法
- detours钩子库的简单使用
- 二建《机电》案例 100 问
- 巧用css的滤镜filter属性处理图片,高斯模糊,HTML页面黑白滤镜等
- ROS集成开发环境IDE----RoboWare开源
- app直播源代码是如何实现直播间小游戏的
- 平流式沉淀池流量计算_平流沉淀池设计计算
- Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离
- 产品设计中的脉冲群(EFT)防护
热门文章
- unity2D横版游戏教程终章-主菜单和暂停菜单
- [转自雨痕]LINQ to SQL - Delay Loaded
- JS实现页面打印,控制打印时显示隐藏
- 关于机械硬盘的两个重要知识点!!!
- Thinkpad T440P使用 rufus-3.13 安装 Win10_20h2_x64
- Endnote | 如何快速分享文献给别人(包含题录+备注+pdf文件)| endnote保存备份
- 【微信小程序】实现手写电子签名并保存为图片功能
- 一步一步往上爬 学习毕老师java视频的第01.02天
- Markdown 换行,空格
- 技巧分享:你知道视频转文字怎么操作?