Одновременное использование выводов D0, D1 и Serial порта. Возможно?

Paul_B
Offline
Зарегистрирован: 05.12.2016

Одновременное использование выводов D0, D1 и Serial порта. Возможно ли?

Сейчас есть две Ардуины- управляющая и управляемая. У управляемой все выводы заняты, кроме D0 и D1, (TX/RX) по которым она командами обменивается с управляющей ардуинкой. У управляюще ардуинке реализован SoftwareSerial на выводы 5 и 6. Поэтому на ней я могу одновременно использовать и Serial порт (0,1) и mySerial порт (5,6). В частности, у меня не вызывает проблем закачивать в нее скетчи и при этом не отключать ее от соединения.

А вот в управляемую, у которой выводы 0 и 1 сериал подключены к управляющей ардуинке закачать скетч без отключения не получается. Но для того, чтобы на ней реализовать SoftwareSerial порт надо освободить 2 цифровых входа, которые все заняты, т.е. что-то надо будет перекинуть на входы 0 и 1. Не получу ли я новых геморроев в этом случае?

И вообще можно ли как-то использовать выходы D0 и D1 по собственному усмотрению, когда на них реализован TX/RX порт.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Paul_B пишет:

Одновременное использование выводов D0, D1 и Serial порта. Возможно ли?

я запретил.

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

Кто же, кроме Клапауций 234, может запретить вам использовать выводы как вам угодно? Вы проектируете устройство. Вы решаете как использовать ноги. Если эти решения пересекаются и противоречат другим, это уже вам решать иметь дополнительные трудности при работе с процессором или нет.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Способ 1: использовать D0/D1 под вход с высоким сопротивлением. Тогда датчику (источнику сигнала) будет всё равно, ведь и он, и сериал, работают на выход.

Способ 2: использовать под незначащий выход. Например, у вас есть светящиеся буквы в вывеске. Ну помигают две буквы, когда скетч перепрошивается. Некритично. Но вот если туда посадить двигатель, который краном проломит кому-то голову, то да, не стоит.

Способ 3: сдвиговый регистр. Плюсы - работает в обе стороны. Минусы - отдельная внешняя микросхема. Дорогая. Аж 35 фэней за штуку, это в рублях 3.85

Paul_B
Offline
Зарегистрирован: 05.12.2016

Спасибо за варианты, в принципе понятно.

Но они применимы уже на стадии отлаженной программы, когда все команды печати на экран Arduino IDE  уже убраны.

arduinec
Offline
Зарегистрирован: 01.09.2015

Так как ТС не упомянул, то намекну, что аналоговые входы можно использовать как цифровые.

Paul_B
Offline
Зарегистрирован: 05.12.2016

Я в курсе, почитал, но как-то сложно. Две нанки пользую. Может расскажете способ как использовать попроще?

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

Сложно использовать аналоговые входы как цифровые? Так они имеют номера с 14 по 18 и используются также как и остальные. Деление на аналоговые и цифровые чисто условное. Почти все выходы цифровые, только некоторые отягощены дополнительными аналоговыми функциями, которые включаются только по требованию. Например у Nano только входы А6 и А7 не могут быть цифровыми. 

Paul_B
Offline
Зарегистрирован: 05.12.2016

Я читал тут: http://greenoakst.blogspot.ru/2012/06/arduino_29.html

Мне показалось сложновато.

А делать как analogRead(pin) и сравнивать >500 значит High и <100 значит LOW это понятно и так.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Paul_B пишет:

Я читал тут: http://greenoakst.blogspot.ru/2012/06/arduino_29.html

Мне показалось сложновато.

А делать как analogRead(pin) и сравнивать >500 значит High и <100 значит LOW это понятно и так.

Вам это не нужно абсолютно.

Просто забудьте о том, что они "аналоговые" и пользуйтесь ими как обычными цифровыми. Только поправлю: номера не с 14 по 18, а с 14 по 19. Больше Вам ничего про них знать не нужно.

Paul_B
Offline
Зарегистрирован: 05.12.2016

Обращаться к ним как A0,...,A7 или 14,...,19?

Или к A0,...,A5 обращаться 14,...,19, а A6,A7 - они "чисто аналоговые"?

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

Можно 14,...19

А6,А7 чисто аналоговые. Попытаться обратиться к ним цифровым способом можно, ошибки не будет, но и ничего не сработает.

Paul_B
Offline
Зарегистрирован: 05.12.2016

Спасибо, благодаря вашей наводке сделал командное общение ардуинок через 

SoftwareSerial mySerial(14, 15); // RX, TX A0, A1

и можно одновременно с этим заливать скетчи, не оключая ардуинки, а также задават команды на обе ардуинки с компа через Serial.