Arduiono-模拟读取返回MAX值

时间:2019-04-14 14:12:31

标签: arduino

简介

大家好。我正在尝试开始我的第一个微控制器体验。我喜欢音乐,因此我从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欧姆的电阻。

1 个答案:

答案 0 :(得分:0)

模拟引脚从空气中的静电荷中获取随机读数,为解决此问题,我们应在模拟引脚和接地之间使用下拉电阻器,

建议使用“ 10k欧姆电阻”