Использование контакта RX TX
Могу ли я использовать контакт RX TX на Arduino Uno в качестве контакта регулятора? . Для входного и выходного контактов, потому что два цифровых контакта на моей плате не работают. Спасибо
@Hernanda Wedhar Bagaskoro, 👍1
Обсуждение2 ответа
Лучший ответ:
Да, вы можете использовать эти контакты на Uno как обычные цифровые контакты. Они пронумерованы 0 и 1. Это... при условии, что вы не пытаетесь использовать Serial
.
и компонент, подключенный к этим контактам, может мешать загрузке скетча. и если один из этих двух перестанет работать, последовательная загрузка будет невозможна., @Juraj
Ок, спасибо тебе большое, @Hernanda Wedhar Bagaskoro
TX может использоваться как общий вход или выход
Вывод TX обычно является выходом микроконтроллера Arduino для последовательного преобразователя (преобразователь напряжения RS-232 или преобразователь USB-последовательный), который отправляет данные на хост-компьютер. При таком использовании единственным, что управляет выводом, является последовательное оборудование внутри микроконтроллера Arduino.
Однако можно перенастроить вывод как цифровой выход общего назначения. Сначала вам нужно будет отключить последовательную функцию TX, как описано в этом ответе. Пример кода:
disable_tx();
pinMode(1, OUTPUT);
//...
digitalWrite(1, whatever);
Также возможно перенастроить пин как цифровой вход общего назначения. Опять же, сначала отключите TX. Пример кода:
disable_tx();
pinMode(1, INPUT);
//...
foo = digitalRead(1);
Вы также можете использовать INPUT_PULLUP
для включения внутренних слабых подтягивающих резисторов и даже переключаться между pinMode
. Удобно, что вывод TX/1 находится на стандартном разъеме Arduino, к которому вы можете подключить остальную часть схемы для считывания выходных данных или управления входными данными.
Остерегайтесь, чтобы TX все еще был подключен к последовательному преобразователю. С точки зрения электричества это не проблема, поскольку последовательный преобразователь только считывает значение TX и никогда не управляет им; конфликта нет. Однако сигналы, которые вы генерируете как общий ввод-вывод, вероятно, не будут допустимыми последовательными сигналами, и, таким образом, вы не сможете общаться с хост-системой в то же время, когда используете TX для общего ввода-вывода. Другими словами, не пытайтесь использовать Serial
одновременно с общим вводом-выводом.
Вы по-прежнему сможете загружать программы в Arduino, хотя это будет посылать ложные сигналы на ваши внешние схемы во время этого процесса, что может привести к конфликту. Отключите ваши внешние схемы перед загрузкой программ.
RX не следует использовать как общий вход или выход
Вывод RX обычно управляется последовательным преобразователем, и микроконтроллер считывает его как вход. Это позволяет хост-системе загружать программы, а также считывать Serial
в запущенных программах.
Вы не можете просто перенастроить вывод как выход, потому что тогда и последовательный преобразователь, и микроконтроллер будут пытаться управлять выводом, и у вас возникнет конфликт.
Вы также не можете просто перенастроить пин как вход. Любая схема, которую вы пытаетесь прочитать, будет пытаться управлять этим пином в то же время, когда последовательный преобразователь пытается управлять этим пином, и у вас возникнет конфликт.
Теоретически у вас есть несколько вариантов:
Вы можете перерезать дорожку между последовательным преобразователем и выводом на микроконтроллере. Это предполагает, что дорожка доступна, вы знаете, что делаете, и делаете это правильно. Недостатком является то, что вы никогда не сможете загрузить другую программу на эту плату Arduino.
Вы можете перерезать дорожку как #1 и поставить резистор поперек нее (скажем, 470 Ом). Это требует еще большего мастерства, чем #1. Когда последовательный преобразователь борется за управление штифтом, последовательный преобразователь проиграет, а другой победит.
Теоретически последовательный преобразователь может использовать трехпозиционный выход, который можно отключить, или слабый выход с открытым коллектором, который можно перегрузить. Однако из всех схем плат Arduino, которые я видел, ни одна из них на самом деле этого не делает. Плюс, вам придется вручную включать и выключать его каждый раз, когда вы захотите загрузить новую программу.
Создайте собственную плату, не использующую последовательный порт.
Ни одна из этих альтернатив на самом деле не практична, поэтому лучшим планом будет никогда не использовать RX для универсального ввода или вывода.
- Servo_Pointer' was not declared in this scope
- Операторы If/Else на Arduino не выполняются
- Float печатается только 2 десятичных знака после запятой
- Команда strtok() с Serial связью
- Как получить правильный последовательный порт?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Как я могу прервать задержку() при нажатии кнопки?
- Как отобразить всю входящую строку с serial monitor в arduino ide?
можно немного конкретнее? ты имеешь в виду контакты 0 и 1? Чего не может цифровой контакт 2?, @Michele Cioccarelli