Используйте Arduino в качестве передатчика и приемника UART

Я знаю UART, модель последовательной связи и фрейм данных. Но я хочу спросить о другом, когда я искал в Интернете только что нашел примеры одного Arduino в качестве (приемника) и другого Arduino в качестве (передатчика). Итак, мой вопрос: как я могу реализовать два Arduino, и оба Arduino могут общаться друг с другом, когда после передачи данных от одного к другому (пример А->Б). Если интерпретацию полученных данных необходимо снова передать первому отправителю (B->A).

, 👍0

Обсуждение

UART полнодуплексный. У него 2 линии, одна на отправку, 1 на получение. Так это автоматически реализуется, @chrisl

Итак, можете ли вы дать мне пример кода, в одном Arduino, действующем по-разному в моменты передачи или приема?, @Türker Berke Yıldırım

Если вы знаете, как заставить А заговорить с Б, то вы уже знаете, как заставить Б заговорить с А — это точно то же самое., @Majenko

Но как вызвать функцию передачи и приема в основной функции? Просто раздельно с задержкой? Или после передачи данных я должен переключить свое положение в качестве получателя, пока данные не поступят?, @Türker Berke Yıldırım


1 ответ


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

0

Теперь вы уверены, что Serial.write() и Serial.read(). Это уже то, что вы хотите. Подсказка, чтобы вам было понятно: при использовании общей функции Serial.print() отвечает только линия RxD, поэтому используется только «половина» последовательного интерфейса. Если вы подключаете TxD Arduino A к RxD другого Arduino B и RxD к TxD соответственно, вы получаете полнодуплексную связь, о которой вы просите.

,

О, поймал. Поэтому я просто должен использовать функции записи и чтения для полного дуплекса. Печать для полудуплекса. Ты спас мой день, чувак. Спасибо, @Türker Berke Yıldırım

Я рекомендую поискать простой пример, чтобы увидеть, как на самом деле должно быть реализовано чтение. Это руководство может вам помочь: https://robotic-controls.com/learn/arduino/arduino-arduino-serial-communication, @Sim Son

Нет, печать предназначена не только для полудуплекса. Все соединение всегда дуплексное, и вы можете отправлять и получать в любое время. print и write не делают ничего, кроме помещения данных в буфер. Передача осуществляется в фоновом режиме библиотекой «Serial» и оборудованием. А все команды чтения — это просто чтение уже полученных данных из буфера. Если вы хотите, чтобы одно Arduino реагировало на другое, просто прочитайте данные с первого Arduino на втором и позвольте ему отправить соответствующие данные обратно напрямую (вам не нужна задержка), @chrisl

@chrisl хм, был ли ваш комментарий ответом на комментарий ОП в вопросе? Иначе что именно из того, что я написал, неверно? Вы можете Serial.print() без подключения RxD. Я знаю о подпрограмме, выполняемой на оборудовании, но я думаю, что эта информация не очень помогает OP на данный момент., @Sim Son

Ваш ответ не является неправильным. Я хотел ответить на вышеприведенный комментарий ОП, так как мне показалось, что он думает, что не может использовать печать, если хочет общаться в обоих направлениях. Я хотел предотвратить недоразумение. И всегда полезно знать, что на самом деле делают вызываемые функции. Это помогает в понимании. Если это слишком сложно для комментария, я также могу написать ответ, чтобы объяснить это лучше, чем в моем комментарии., @chrisl