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