Используйте Arduino в качестве передатчика и приемника UART
Я знаю UART, модель последовательной связи и фрейм данных. Но я хочу спросить о другом, когда я искал в Интернете только что нашел примеры одного Arduino в качестве (приемника) и другого Arduino в качестве (передатчика). Итак, мой вопрос: как я могу реализовать два Arduino, и оба Arduino могут общаться друг с другом, когда после передачи данных от одного к другому (пример А->Б). Если интерпретацию полученных данных необходимо снова передать первому отправителю (B->A).
1 ответ
Лучший ответ:
Теперь вы уверены, что 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
- Последовательная связь между nodemcu и Arduino Uno
- Как заставить Arduino взаимодействовать с тремя другими Ардуино?
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Отправка значения с одного Arduino на другой
- Связь Arduino master/slave с использованием RS485
- Клиент MQTT на Arduino + SIM900
- Ошибка инициализации GPS DFRobot [Arduino Uno, SIM808]
- Последовательная связь между несколькими устройствами (или ардуино)
UART полнодуплексный. У него 2 линии, одна на отправку, 1 на получение. Так это автоматически реализуется, @chrisl
Итак, можете ли вы дать мне пример кода, в одном Arduino, действующем по-разному в моменты передачи или приема?, @Türker Berke Yıldırım
Если вы знаете, как заставить А заговорить с Б, то вы уже знаете, как заставить Б заговорить с А — это точно то же самое., @Majenko
Но как вызвать функцию передачи и приема в основной функции? Просто раздельно с задержкой? Или после передачи данных я должен переключить свое положение в качестве получателя, пока данные не поступят?, @Türker Berke Yıldırım