带有 C# 或同等功能的 Arduino 音频频谱

Posted

技术标签:

【中文标题】带有 C# 或同等功能的 Arduino 音频频谱【英文标题】:Ardunio audio spectrum with C# or equivalent 【发布时间】:2015-04-15 13:12:44 【问题描述】:

我使用带有 arduino 的 msgeq7 芯片将音频从连接在面包板上的音频插孔中分离出来。我有显示 7 个不同频率的代码,每个频率都有一个快速频闪的“响度”值。我想知道是否有人知道我如何使用来自 arduino 的这些数据在 c# 中创建图形频谱?没有什么太复杂的,只是一个 7x6 的网格,底部有绿点,顶部附近有红点,上下移动以帮助可视化响度。有人帮忙吗?

【问题讨论】:

【参考方案1】:

我不了解 c#,但您可以继续处理 https://processing.org/,它是基于 java 构建的,但很容易掌握。您可以使用处理与您的 Arduino 建立串行连接并在它们之间发送数据,然后在处理中渲染出您认为合适的数据。

示例 Arduino 代码:

void setup() 
  Serial.begin(9600);
  Serial.setTimeout(20);
  delay(100);


void loop() 
//send data over serial port
    Serial.println("Hello World");
    delay(50);

处理代码:

import processing.serial.*;

Serial myPort;
String val;

void setup() 
  smooth();
  size(300, 350);
//you may have to mess around with the value in brackets to get the right on.
//Try printling out all values in Serial.list() and find your Arduino port name
  String portName = Serial.list()[3];
  println(portName);
  myPort = new Serial(this, portName, 9600);
  myPort.bufferUntil('\n');


void draw()
    //draw stuff


void serialEvent( Serial myPort) 
  //put the incoming data into a String - 
  //the '\n' is our end delimiter indicating the end of a complete packet
  val = myPort.readStringUntil('\n');
  //make sure our data isn't empty before continuing
  if (val != null) 
    //trim whitespace and formatting characters (like carriage return)
    val = trim(val);
    println(val);
  

希望这可以帮助您入门。大部分信息来自 Sparkfun Arduino 处理教程https://learn.sparkfun.com/tutorials/connecting-arduino-to-processing 如果您还有其他问题,请查看它。

【讨论】:

以上是关于带有 C# 或同等功能的 Arduino 音频频谱的主要内容,如果未能解决你的问题,请参考以下文章

怎么用arduino+1602制作音乐频谱显示器?

C#获取.wav文件的频谱线

如何使用 python 绘制整个音频文件的频谱或频率与幅度的关系?

带有 NAudio 和 WPFSoundVisualizationLib 的频谱分析仪

在 C/C++ 中使用 JACK 和 fftw 的音频频谱

音频频谱效果 iOS/Android