Печать результата функции AnalogRead() приводит к сбою Arduino

Я создал схему, которая считывает аналоговый вывод 3 на Arduino Nano и выполняет другие действия в зависимости от возвращаемого значения. Однако у меня есть проблемы с функцией AnalogRead(). Всякий раз, когда я использую кусок провода, чтобы закоротить "Analog_UpDownHorn_Signal" и сделайте это в быстром темпе, чтобы arduino неоднократно считывал 0 В и 5 В, последовательная связь прекращалась. Иногда возобновляется. Иногда это не так, и когда это происходит, значение всегда равно 1023.

Мне удалось сократить проблему до следующих двух строк кода, что заставляет меня поверить, что это моя схема или ошибка в используемых функциях. Перед тем, как Arduino застрянет, она иногда выдает случайные '?' или другие странные символы на последовательном мониторе.

void setup()
{
  Serial.begin(9600);
}

void loop() 
{
  Serial.println(analogRead(A3));
}

, 👍2

Обсуждение

Несколько комментариев, помогает ли добавление задержки в цикл ~ 100 мс? Вы пытались записать значение A3 в переменную, а затем распечатать переменную вместо того, чтобы вкладывать ее в команду печати? Можете ли вы подтвердить, что Arduino получает стабильное питание 5 В? Другие части схемы все еще подключены к Arduino?, @Jack Soldano

Задержка не помогла. Запись значения в переменную и его печать не помогли. Могу подтвердить стабильное питание 5В, проверил. Также следует отметить: когда я использую резистор, например, 1 кОм, значения (~ 512) правильные, никаких сбоев или чего-то еще. Эти проблемы появляются только при замыкании сигнала на землю., @TaRg3t

Добавьте Serial.println("setup") в функцию настройки, чтобы вы видели, когда arduino перезагружается., @Sim Son


2 ответа


2

У вас довольно большой конденсатор на аналоговом входе, обычно в этом положении он используется для подавления дребезга. Попробуйте что-нибудь в диапазоне 100 нФ. Другой идеей было бы увеличить R8 до 10 000.

https://www.g7smy. co.uk/2015/09/несколько кнопок на одном контакте с Arduino/

,

2

Я решил проблему, соединив две земли на противоположной стороне arduino nano с толстой пайкой на нижней стороне моей платы. Похоже, это действительно было связано с большой емкостью и быстрым разрядом при замыкании на землю.

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

Чтобы избежать этой проблемы, я не буду закорачивать конденсатор, а разряжать его через низкоомный резистор. Кроме того, я мог бы уменьшить емкость, как было указано ранее, и увеличить номиналы резисторов.

,