Arduino--音乐频谱
生活随笔
收集整理的這篇文章主要介紹了
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--音乐频谱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 票据知识要点
- 下一篇: WLAN无线局域网技术 基础(二)PoE