【发布时间】:2019-09-04 16:05:50
【问题描述】:
简介
大家好。我正在尝试开始我的第一次微控制器体验。我喜欢音乐,所以我从 SparkFun Spectrum Shield for arduino 开始。
硬件
- SparkFun Spectrum Shield(使用两个 MSGEQ7 音频芯片)
- ELEGOO UNO R3
软件
我用这段代码刷了我的 arduino https://github.com/sparkfun/Spectrum_Shield/blob/master/Firmware/SparkFun_Spectrum_Demo/SparkFun_Spectrum_Demo.ino 我只添加了一个函数来调试 Frequencies_One 和 Frequencies_Two 值:
void Debug_Frequencies(){
Serial.print("{\"Left\":[");
for(int i= 0; i<7; i++)
{
Serial.print(Frequencies_One[i]);
if(i<6){
Serial.print(",");
}
}
Serial.print("],\"Right\":[");
for(int i= 0; i<7; i++)
{
Serial.print(Frequencies_Two[i]);
if(i<6){
Serial.print(",");
}
}
Serial.print("]");
Serial.print(",\"millSecSinceOn\":");
Serial.print(millis());
Serial.println("}");
}
错误
我在 Arduino IDE 串行监视器中得到以下输出:
15:50:06.080 -> {"Left":[1023,1023,1023,1023,1023,1020,60],"Right":[1023,1023,1023,1023,1023,1023,70],"millSecSinceOn":6599}
15:50:06.536 -> {"Left":[1023,1023,1022,1023,1023,1022,63],"Right":[1023,1023,1023,1022,1023,1023,71],"millSecSinceOn":7025}
15:50:06.949 -> {"Left":[1023,1023,1022,1023,1023,1020,62],"Right":[1023,1023,1023,1023,1023,1023,77],"millSecSinceOn":7451}
15:50:07.370 -> {"Left":[1023,1021,1021,1023,1023,1023,66],"Right":[1023,1023,1023,1023,1023,1023,76],"millSecSinceOn":7877}
制造商代码使用的arduino函数analogRead可以返回0-1023作为int值。所以analogRead方法现在每次都返回MAX值,即使没有音乐输入。
我的分析
我的第一个想法是,5V 输入和模拟读取引脚之间的任何地方都必须有旁路,但我无法检测到任何(用万用表检查)。在我的板上有一个 2.53k-2.59k 欧姆电阻,当板离线时,arduino 板引脚 5V 和 A0(以及 A1)之间。 A0/A1 和地之间还有一个 4.36k 欧姆的电阻。
【问题讨论】:
-
你在哪里添加了对该函数的调用?您的预期输出到底是什么?两个数组中都有一些样本与 1023 不同。我不确定我是否明白你在问什么。
-
我添加了代码而不是
Graph_Frequencies函数的调用。我的预期输出在静音时介于 100-300 之间(因为总是有一种噪音)。是的,我知道,这是一个问题,这里有什么问题,但我不知道正确的值,因为我想测量它。 -
也许json的最后一个值是有效的,所以我希望在60isch范围内
-
我怀疑这是硬件问题。你有一个或多个错误连接(或者你做过一次,这可能损坏了芯片)。 Arduino SE 网站上的人可能更适合帮助您。
-
草图中 setup() 中的初始复位和选通序列似乎与芯片数据表中的图表不匹配。 sparkfun.com/datasheets/Components/General/MSGEQ7.pdf
标签: arduino