Разные устройства на разных пинах

vostok
Offline
Зарегистрирован: 24.12.2019

Доброго дня. Ребята подскажите. Есть Arduino Mega 2560, есть блютуз, если цепляю его порты RXD -  на TX любой и соответственно TXD - на RD любой, не работает, если даже назначать через SoftwareSerial. но если указать и вставить пины 50 и 51 ардуинки, все работает. Подскажите как мне задать другие пины для устройства? Чтобы блютуз работал например 40,41 пинах. Спасибо.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(50, 51); 
int val; // освобождаем память в контроллере для переменой

void setup() {
  Serial.begin(9600);  // подключаем последовательный порт
  mySerial.begin(9600);
  pinMode(13, OUTPUT); // объявляем пин 13 как выход
  digitalWrite(13, HIGH); 
    
}

void loop() {

   if (mySerial.available()) {
    char c = mySerial.read(); // читаем из software-порта
    Serial.print(c); // пишем в hardware-порт
  }
  if (Serial.available()) {
    char c = Serial.read(); // читаем из hardware-порта
    mySerial.write(c); // пишем в software-порт
  }

}

 

vostok
Offline
Зарегистрирован: 24.12.2019

TXD - на RХ любой

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А зачем использовать ненадежный Software Serial если у меги есть еще 3 свободных аппаратных UART-а?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Смотри здесь https://www.arduino.cc/en/Reference/softwareSerial раздел Limitations

Но собственно да, а почему не аппаратный?

nik182
Offline
Зарегистрирован: 04.05.2015

Нельзя к любым подключать Tx Rx . Надо к конкретным. Из здешнего справочника :   Последовательная шина: 0 (RX) и 1 (TX); Последовательная шина 1: 19 (RX) и 18 (TX); Последовательная шина 2: 17 (RX) и 16 (TX); Последовательная шина 3: 15 (RX) и 14 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2. 

Использовать можно хардверные serial2  17 (RX) и 16 (TX); и serial3 15 (RX) и 14 (TX). Про софверные не подскажу.

vostok
Offline
Зарегистрирован: 24.12.2019

asam пишет:

А зачем использовать ненадежный Software Serial если у меги есть еще 3 свободных аппаратных UART-а?

Хочу понять как это можно сделать?

Какие еще 3?

vostok
Offline
Зарегистрирован: 24.12.2019

nik182 пишет:

Нельзя к любым подключать Tx Rx . Надо к конкретным. Из здешнего справочника :   Последовательная шина: 0 (RX) и 1 (TX); Последовательная шина 1: 19 (RX) и 18 (TX); Последовательная шина 2: 17 (RX) и 16 (TX); Последовательная шина 3: 15 (RX) и 14 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Выводы 0 и 1 подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2. 

Использовать можно хардверные serial2  17 (RX) и 16 (TX); и serial3 15 (RX) и 14 (TX). Про софверные не подскажу.

и на 16,17,18,19 пробовал, не работает.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

vostok пишет:

и на 16,17,18,19 пробовал, не работает.

Код какой был? Такой же как и в начальном посте?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

vostok пишет:

asam пишет:

А зачем использовать ненадежный Software Serial если у меги есть еще 3 свободных аппаратных UART-а?

Хочу понять как это можно сделать?

Какие еще 3?

Serial1, Serial2, Serial3

vostok
Offline
Зарегистрирован: 24.12.2019

asam пишет:

vostok пишет:

и на 16,17,18,19 пробовал, не работает.

Код какой был? Такой же как и в начальном посте?

да, только менял номера пинов.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Для аппаратных сериал на меге надо использовать


  Serial1.begin(38400);
  Serial2.begin(19200);
  Serial3.begin(4800);

  Serial1.println("Hello Serial 1");
  Serial2.println("Hello Serial 2");
  Serial3.println("Hello Serial 3");

 

vostok
Offline
Зарегистрирован: 24.12.2019

asam пишет:

Для аппаратных сериал на меге надо использовать


  Serial1.begin(38400);
  Serial2.begin(19200);
  Serial3.begin(4800);

  Serial1.println("Hello Serial 1");
  Serial2.println("Hello Serial 2");
  Serial3.println("Hello Serial 3");

 

Уважаемый что за Serial1, на плате куда цеплять то?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Serial1 куда цеплять

Чото движок форума ссылки с русскими буквами обрабатывает через пень-колоду.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

vostok пишет:

Уважаемый что за Serial1, на плате куда цеплять то?

Так почитай что выше писали -то.

Плата Arduino Mega имеет три дополнительных последовательных порта: Serial1 на портах 19 (RX) и 18 (TX), Serial2 на портах на портах 17 (RX) и 16 (TX), Serial3 на портах на портах 15 (RX) и 14 (TX).

vostok
Offline
Зарегистрирован: 24.12.2019

asam пишет:

vostok пишет:

Уважаемый что за Serial1, на плате куда цеплять то?

Так почитай что выше писали -то.

Плата Arduino Mega имеет три дополнительных последовательных порта: Serial1 на портах 19 (RX) и 18 (TX), Serial2 на портах на портах 17 (RX) и 16 (TX), Serial3 на портах на портах 15 (RX) и 14 (TX).

Уважаемый, я пишу, цеплял на эти все пины, не работает, только на 50 и 51 пашет.

Mega

 

0(RX), 1(TX)

19(RX), 18(TX)

17(RX), 16(TX)

15(RX), 14(TX)

 

vostok
Offline
Зарегистрирован: 24.12.2019

Или к ним нужно обращаться именно так: Serial1, Serial2?

nik182
Offline
Зарегистрирован: 04.05.2015

Да, прцепил на пины 18,19 обращаться serial1. И.т.д.

vostok
Offline
Зарегистрирован: 24.12.2019

Спасибо всем, вроде помогло.