Печать результата функции 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));
}
@TaRg3t, 👍2
Обсуждение2 ответа
У вас довольно большой конденсатор на аналоговом входе, обычно в этом положении он используется для подавления дребезга. Попробуйте что-нибудь в диапазоне 100 нФ. Другой идеей было бы увеличить R8 до 10 000.
https://www.g7smy. co.uk/2015/09/несколько кнопок на одном контакте с Arduino/
Я решил проблему, соединив две земли на противоположной стороне arduino nano с толстой пайкой на нижней стороне моей платы. Похоже, это действительно было связано с большой емкостью и быстрым разрядом при замыкании на землю.
Возможно, у него был "зарядный насос" одинаковый эффект с развязывающим и устраняющим дребезг колпачком, потому что они находятся на одной стороне платы.
Чтобы избежать этой проблемы, я не буду закорачивать конденсатор, а разряжать его через низкоомный резистор. Кроме того, я мог бы уменьшить емкость, как было указано ранее, и увеличить номиналы резисторов.
- Шумный analogRead
- Расширенная настройка АЦП на Due (SAM3X8E) для повышения точности
- Двоичный в десятичный с использованием побитовых операторов
- Хранение данных в SDRAM Arduino Portenta H7
- Ardunio Mega/ATmega2560: использование порта F или K как для аналоговых входов, так и для цифровых выходов.
- Определенные порты на Teensy 3.6 не считывают правильное битовое разрешение с помощью библиотеки ADC?
- Выход AnalogRead() колеблется, даже если контакт заземлен
- Как прочитать значение АЦП без общего заземления? (Возможно или нет!)
Несколько комментариев, помогает ли добавление задержки в цикл ~ 100 мс? Вы пытались записать значение A3 в переменную, а затем распечатать переменную вместо того, чтобы вкладывать ее в команду печати? Можете ли вы подтвердить, что Arduino получает стабильное питание 5 В? Другие части схемы все еще подключены к Arduino?, @Jack Soldano
Задержка не помогла. Запись значения в переменную и его печать не помогли. Могу подтвердить стабильное питание 5В, проверил. Также следует отметить: когда я использую резистор, например, 1 кОм, значения (~ 512) правильные, никаких сбоев или чего-то еще. Эти проблемы появляются только при замыкании сигнала на землю., @TaRg3t
Добавьте
Serial.println("setup")
в функцию настройки, чтобы вы видели, когда arduino перезагружается., @Sim Son