Связь между Genuino Zero и Arduino Uno с использованием UART
Я хочу, чтобы мои Arduino Uno и Genuino Zero взаимодействовали с помощью UART. Мой Genuino Zero — это передатчик, а приемник — Arduino Uno.
Для Arduino Uno я использую библиотеку SoftSerial. Я загрузил коды передатчика и приемника.
Мое подключение следующее:
Genuino Zero (RX) контакт 0 ---------------- Arduino Uno контакт 11
Подлинный нулевой (TX) контакт 1 ---------------- Arduino Uno контакт 10
Земля ---------------------------------- Земля
Пин 10 Arduino Uno — Rx, а контакт 11 — Tx, при использовании SoftSerial.
Передатчик передает «а». Приемник получает «а» и включает светодиод. Моя проблема в том, что на получателе я ничего не получаю.
Мой код здесь:
https://www.dropbox.com/s/4w8o2h2k4zs0it5/transmitter.txt?dl =0 https://www.dropbox.com/s/d50uizoz3iove9w/receiver.txt?dl=0
---приемник-------------------------------------
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // прием, передача
/* Простой сценарий последовательного ECHO: Написано ScottC 07.03.2012 */
/* Используйте переменную byteRead для временного хранения
данные, поступающие с компьютера */
byte byteRead;
void setup() {
// Включаем последовательный протокол
Serial.begin(9600);
mySerial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
char a[8];
/* check if data has been sent from the computer: */
if (Serial.available()) {
/* read the most recent byte */
byteRead = Serial.read();
Serial.print("rushin\r\n");
/*ECHO the value that was read, back to the serial port. */
if(byteRead == 0x61) {
digitalWrite(LED_BUILTIN, HIGH);
Serial.write(byteRead);
}
}
if (mySerial.available()) {
/* read the most recent byte */
byteRead = mySerial.read();
mySerial.print("rushin\r\n");
/*ECHO the value that was read, back to the serial port. */
if(byteRead == 0x61) {
digitalWrite(LED_BUILTIN, HIGH);
mySerial.write(byteRead);
}
}
}
-------------------transmitter----------------------------------
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// к цифровому выводу 2 прикреплена кнопка. Дайте ему имя:
int pushButton = 7;
// процедура настройки запускается один раз, когда вы нажимаете кнопку сброса:
void setup() {
// инициализируем последовательную связь со скоростью 9600 бит в секунду:
Serial.begin(9600);
// делаем вывод кнопки входом:
pinMode(pushButton, INPUT);
}
// процедура цикла выполняется снова и снова, вечно:
void loop() {
// читаем входной контакт:
int buttonState = digitalRead(pushButton);
// распечатываем состояние кнопки:
Serial.println("a");
delay(1000);
// задержка между чтениями для стабильности
}
@Beginner, 👍1
Обсуждение1 ответ
Код вашего передатчика Arduino Zero передается только через последовательный порт USB («Последовательный»). Если вы хотите, чтобы он передавал данные на последовательный порт на контактах 0 и 1, вам необходимо, чтобы он записывал данные на Serial1. (Проверьте файл options.cpp), вы увидите, что Serial1 использует SERCOM0, который находится на контактах 0 и 1.
Итак, ваш код должен выглядеть следующим образом (нот «Serial» заменяется на «Serial1»):
void setup() {
// инициализируем последовательную связь со скоростью 9600 бит в секунду:
Serial1.begin(9600);
// делаем вывод кнопки входом:
pinMode(pushButton, INPUT);
}
// процедура цикла выполняется снова и снова, вечно:
void loop() {
// читаем входной контакт:
int buttonState = digitalRead(pushButton);
// распечатываем состояние кнопки:
Serial1.println("a");
delay(1000);
// задержка между чтениями для стабильности
}
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Как использовать Serial.setTimeout()
- Аппаратная последовательная библиотека Arduino с поддержкой управления потоком rts/cts
- Отправить структуру через Serial
- Передавать данные структуры во внешнюю структуру через serial?
- Мост I2C-UART в виде прорыва или в корпусе DIP
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Последовательная связь между несколькими устройствами (или ардуино)
Опубликуйте код здесь. Ссылки имеют тенденцию исчезать., @gre_gor
извини. не могу сюда загрузить текстовый файл. и ссылка в порядке, @Beginner
Просто скопируйте и вставьте код сюда и отформатируйте его в [блок кода](http://arduino.stackexchange.com/editing-help)., @gre_gor
Что говорит информация о продукте? «В отличие от большинства плат Arduino и Genuino, Zero работает при напряжении 3,3 В. Максимальное напряжение, которое могут выдержать контакты ввода-вывода, составляет 3,3 В. Подача напряжения выше 3,3 В на любой контакт ввода-вывода может повредить плату»., @Mikael Patel
Да, я знаю это. и я работаю с 3,3 В, @Beginner
А Уно? Как ты это подключил? По крайней мере, на контакте 11/TX будет 5 В, если вы не использовали какое-либо преобразование сигнала., @Mikael Patel
Ваш код приемника ничего не скажет ПК в ответ на данные по последовательному программному обеспечению — вы только отправляете обратно индикацию. Вероятно, вместо этого вы захотите отправить какое-то указание на ПК. Также будьте осторожны с запуском сообщений, которые длиннее отправленных, поскольку их передача займет больше времени и может привести к потере новых входящих данных., @Chris Stratton