Arduiono - Analog Read возвращает значение MAX - PullRequest
0 голосов
/ 14 апреля 2019

Введение

Привет всем. Я пытаюсь начать свой первый опыт работы с микроконтроллером. Мне нравится музыка, поэтому я начал с 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 Serial Monitor:

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, даже если нет музыкального ввода.

Мой анализ

Мои первые мысли были, что где-то между входом 5 В и аналоговым выводом чтения должен быть обход, но я не могу его обнаружить (проверено мультиметром). На моей плате есть сопротивление 2,53 кОм-2,59 кОм между контактами 5V и A0 платы Arduino, когда плата находится в автономном режиме. между A0 / A1 и землей есть сопротивление 4,36 кОм.

1 Ответ

0 голосов
/ 18 апреля 2019

аналоговый вывод получает случайные показания от статических зарядов в воздухе, и для преодоления этой проблемы мы должны использовать понижающий резистор между аналоговым выводом и землей,

"резистор 10 кОм" рекомендуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...