大家好。我正在尝试开始我的第一个微控制器体验。我喜欢音乐,因此我从SparkFun Spectrum Shield开始关注arduino。
我用此代码刷新了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输入和模拟读取引脚之间的任何地方都必须存在旁路,但是我无法检测到任何旁路(通过万用表检查)。当我的板上离线时,在arduino板上的引脚5V和A0(以及A1)之间还有一个2.53k-2.59k欧姆的电阻。在A0 / A1与地面之间还有一个4.36k欧姆的电阻。
答案 0 :(得分:0)
模拟引脚从空气中的静电荷中获取随机读数,为解决此问题,我们应在模拟引脚和接地之间使用下拉电阻器,
建议使用“ 10k欧姆电阻”