Какие компоненты можно подключить к контактам 0/1 (RX/TX) без предотвращения загрузки кода?

Для проекта робота я использую Arduino Uno, и у меня заканчиваются контакты. Самым простым решением было бы использование цифровых контактов 0/1. Я знаю, что это означает, что я не смогу использовать последовательную связь (и это нормально), но я также знаю, что эти контакты также используются при загрузке кода на плату, и подключение компонентов к этим контактам может помешать загрузке. .

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

В моем случае я могу выбрать между использованием этих контактов для управления входами для драйвера двигателя L298N (входы TTL) или для считывания сигналов квадратурного энкодера двигателя. Я предполагаю, что последний не будет работать, так как эти сигналы могут быть высокими и создавать помехи (и я не знаю, приведет ли к повреждению подача напряжения на выходы энкодера - у меня нет на них спецификаций).

Однако, может быть, TTL-входы L298N подойдут? Или у меня нет другого выбора, кроме как иметь переключатель для отключения при загрузке или найти какой-то другой способ уменьшить использование контактов (или перейти на Arduino большего размера)?

, 👍2

Обсуждение

двухпозиционный микропереключатель или четыре контакта с двумя перемычками... https://duckduckgo.com/?q=dip+switch&iax=images&ia=images, @jsotola


1 ответ


4

Это общая электронная проблема, не относящаяся к контактам 0/1 Arduino.

Основное правило:

  • Вход может принимать только один сигнал

Но

  • Один сигнал может поступать на множество входов

Другими словами, любой контакт INPUT может принимать сигнал только из одного места, а контакт OUTPUT может посылать сигнал во многие места одновременно.

Последовательное соединение Arduino имеет два сигнала: один вход (RX) и один выход (TX). Входной контакт (RX) может получать сигнал только из одного места, и при программировании этого «одного места» должен быть выводом TX преобразователя USB в UART. Таким образом, все, что подключено к этому контакту, который "посылает сигнал" все запутает, и общение не удастся.

Точно так же контакт RX преобразователя USB в UART может принимать сигнал только из одного места — в данном случае с контакта TX Arduino — подключение к этому контакту чего-либо, что может выводить сигнал, приведет к путанице и нарушению связи.

Итак, подведем итог: все, что только получает сигнал в той или иной форме (т. е. все, что является ВХОДОМ, например, контакт RX или какая-либо форма управляющего входа). например контроллер мотора) к любому из этих контактов, но не подключайте ничего, что может отправить сигнал.

Однако есть одно предостережение: все, что вы подключаете, получит последовательную связь, используемую при программировании. Это может привести к непредвиденным последствиям, например к вращению мотора, когда вы программируете плату.

,

Спасибо, примерно так и думал. Однако я бы предположил, что некоторые входы могут вызвать нагрузку на вывод, который будет мешать? Например, вход с подтягивающим/понижающим резистором будет удерживать напряжение на определенном уровне, препятствуя правильной работе?, @Rustony

И нежелательные входы в драйверы двигателей должны быть в порядке - при программировании я бы не включал двигатели, и даже если бы они были, эти входы были бы только регуляторами направления - вход pwm все еще должен быть 0., @Rustony

@Rustony Идея подтягивающего или подтягивающего резистора состоит в том, чтобы обеспечить устойчивое состояние, когда логический сигнал не подается. Любой логический сигнал (такой как последовательная связь с ПК) должен с успехом преобладать над подтягивающим или подтягивающим резистором., @Majenko