Вход Longruner Nano ATMega 328P остается ВЫСОКИМ на 1 секунду дольше, чем в реальности

arduino-nano input

У меня есть Longruner Nano ATMega 328P (копия arduino nano, основное отличие в разъеме USB, CH340 вместо обычного FT232, насколько я смог найти с помощью поиска в Google).

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

setup(){
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
}

loop(){
  digitalWrite(13, digitalRead(2));
}

Сложно упростить проверку простой вещи: когда я подаю ВЫСОКИЙ сигнал на D2, D13 тоже ВЫСОКИЙ.

Чтобы проверить это, я использовал простой соединительный кабель типа "папа-папа" и на очень короткое время соединил контакт VIN с контактом D2. И я заметил, что D13 остается ВЫСОКИМ около секунды (измерено с последовательным портом, самое низкое, что я смог получить, было 996 мс после очень быстрого касания D2 кабелем).

Я попытался изменить pinMode на INPUT_PULLUP, следуя похожему вопросу, который я нашел, но это ничего не изменило в отношении этой задержки.

Я что-то не так делаю? Может неправильная конфигурация? Или это просто аппаратная проблема из-за того, что я использую копию и меняется не только разъем USB?

Я могу адаптироваться и работать с этим, если это необходимо, но возможность точного обнаружения сигнала мне очень поможет.

, 👍-1


1 ответ


Лучший ответ:

3

Не используйте Vin в качестве источника логики. Используйте контакт +5 В.

Кроме того, отсоединение контакта – это не то же самое, что его заземление. Он "плавающий". Для правильной проверки подключите +5 В к контакту, а затем подключите к нему заземление.

Плавающий контакт имеет неопределенный логический уровень.

В вашем случае будет работать резистор (скажем) 1k между D2 и Gnd. Таким образом, в тот момент, когда вы отключаете вход напряжения, "вытягивание вниз" срабатывает. резистор вернет его к 0 В.

,

@Supamiu в качестве альтернативы (для тестирования) настройте D2 как INPUT_PULLUP и подключите его к земле с помощью перемычки., @Sim Son

То есть вы имеете в виду, что я должен иметь перемычку между D2 и GND и использовать другую перемычку для подключения + 5 В к D2 и наблюдать за триггером на D2?, @Supamiu

@Supamiu Нет, вы должны добавить резистор между D2 и GND, а не перемычку. Перемычка приведет к короткому замыканию при подключении D2 к +5В. https://www.electronics-tutorials.ws/logic/pull-up-resistor.html, @Majenko