日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arduino--音乐频谱

發布時間:2024/3/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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--音乐频谱的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。