Общение двух Arduino через RX/TX
- Войдите на сайт для отправки комментариев
Имеется две ардуинки(UNO R3). Когда на первой ардуинке происходит определенное событие - необходимо подать сигнал на вторую, дабы она запустила у себя какую-либо свою функцию.
Можно ли бросить провод от TX-выхода одной ардуинки на RX-вход второй ардуинки и подавать по нему единицу(HIGH) в тот момент, когда на первой произошло то самое событие? Соответственно, на второй соорудить проверку 0 или 1 на её RX-входе.
Ну и аналогичный вопрос про аналоговые входы и ШИМ-выходы: можно ли сделать так, чтобы если первая ардуинка выдает одно значение на выход(а вторая это значение принимает), то вторая ардуинка выполнит одну команду, а если другое(например, в первом случае, будем посылать 64, а во втором - 128), то другую команду.
Как запрограммировать это я знаю, а вот возможно ли то технически - другой вопрос, который меня и интересует. Боюсь спалить что-нибудь)
не совсем понятно, зачем RX, TX для этого использовать? - любой цифровой пин подойдёт для приёма/отправки 0/1
не совсем понятно, зачем RX, TX для этого использовать? - любой цифровой пин подойдёт для приёма/отправки 0/1
Я как пример привел :)
Т.е. любой цифровой можно и всё будет хорошо?) А ШИМ-выход и аналоговый вход можно сдружить?
Спасибо за ответ :)
Т.е. любой цифровой можно и всё будет хорошо?)
вы же кнопку как к цифровому входу подключаете - ведь всё хорошо?
А ШИМ-выход и аналоговый вход можно сдружить?
нет
Да, всё хорошо. Хотел лишний раз убедиться.
Жаль, что с большИм количеством градаций(т.е. ШИМ + аналоговый вход) не получится. Придется городить отдельную систему связи...
Еще раз спасибо Вам :)
Жаль, что с большИм количеством градаций(т.е. ШИМ + аналоговый вход) не получится. Придется городить отдельную систему связи...
у шима отсутсвуют градации напряжения
какую систему связи? - соединяйте проводами напрямую
*прекратите благодарить - мои ответы вам не помогают.
Проводами напрямую?
Вы имеете ввиду что-то вроде этого:
Цифровой разьем 1 первой ардуинки соединяем с разьемом 1 второй ардуинки. Когда нужно выполнить операцию "А" - первая ардуинка выдает единицу в этот разьем.
Цифровой разьем 2 первой ардуинки соединяем с разьемом 2 второй ардуинки. Когда нужно выполнить операцию "Б" - первая ардуинка выдает единицу в этот разьем.
и так далее. Верно?
Еще как помогают - я терпеть не могу неопределенность, а Вы внесли долгожданную ясность.
Вы имеете ввиду что-то вроде этого:
Цифровой разьем 1 первой ардуинки соединяем с разьемом 1 второй ардуинки. Когда нужно выполнить операцию "А" - первая ардуинка выдает единицу в этот разьем.
Цифровой разьем 2 первой ардуинки соединяем с разьемом 2 второй ардуинки. Когда нужно выполнить операцию "Б" - первая ардуинка выдает единицу в этот разьем.
и так далее. Верно?
ну, "да", а как иначе - входы/выходы у дуино есть и их можно использовать.
Вот и отлично, так и поступим :)
Вот и отлично, так и поступим :)
а, до этого, как вы хотели делать?
Именно так и хотел. Нужна была уверенность в том, что я ничего не сломаю такими действиями :))
землю не забудьте пробросить кроме сигнала, а то намучаетесь
а лучше общее питание
только еще надо обратную связь организовать, чтобы первая ардуина знала, что вторая по команде все что надо выполнила и можно логическую единицу с выхода 1 снимать. а то ведь вторая ардуина будет вход циклически опрашивать? и единожды получив единицу на вход исполнять команду до бесконечности.... Тогда, к примеру, 3-я нога второй ардуины будет выходом и соединена с 3-ей ногой первой ардуины, которая будет входом, и после получения команды по первой ноге идет отмашка о выполнении по третьей :)
Когда количество задействованных ног превысит десяток и вы запутаетесь окончательно, можно снова вернуться к rx/tx - там любое количество разнообразных команд можно передавать по двум ногам, но надо заморачиваться с разбором команд, как одну от другой отличать. но это не сложно.
Для обратной связи можно выделить управляющую линию.
Тогда цикл обмена будет таким: выставляем на три линии код команды (в три линии влезает 6 команд, в 4 - 15), а на управляющую - сигнал готовности команды. Потом потом сигнал с управляющей линии снимаем и ждем на этой же линии сигнал подтверждения
только еще надо обратную связь организовать, чтобы первая ардуина знала, что вторая по команде все что надо выполнила и можно логическую единицу с выхода 1 снимать. а то ведь вторая ардуина будет вход циклически опрашивать? и единожды получив единицу на вход исполнять команду до бесконечности.... Тогда, к примеру, 3-я нога второй ардуины будет выходом и соединена с 3-ей ногой первой ардуины, которая будет входом, и после получения команды по первой ноге идет отмашка о выполнении по третьей :)
Когда количество задействованных ног превысит десяток и вы запутаетесь окончательно, можно снова вернуться к rx/tx - там любое количество разнообразных команд можно передавать по двум ногам, но надо заморачиваться с разбором команд, как одну от другой отличать. но это не сложно.
Тоже об этом вчера подумал - обратная связь будет :)
А не подскажете, где можно почитать про команды TX/RX? Команд будет 2-3, не более, но для собственного развития хотел бы поизучать.
Для обратной связи можно выделить управляющую линию.
Тогда цикл обмена будет таким: выставляем на три линии код команды (в три линии влезает 6 команд, в 4 - 15), а на управляющую - сигнал готовности команды. Потом потом сигнал с управляющей линии снимаем и ждем на этой же линии сигнал подтверждения
Тоже отличная идея - может в аналогичных проектах пригодится. Спасибо :)
Для обратной связи можно выделить управляющую линию.
Тогда цикл обмена будет таким: выставляем на три линии код команды (в три линии влезает 6 команд, в 4 - 15), а на управляющую - сигнал готовности команды. Потом потом сигнал с управляющей линии снимаем и ждем на этой же линии сигнал подтверждения
Тоже отличная идея - может в аналогичных проектах пригодится. Спасибо :)
ну это уже изобретение интерфейсов. есть же рабочие опробованные многими людьми и даже стандартизированные
А не подскажете, где можно почитать про команды TX/RX? Команд будет 2-3, не более, но для собственного развития хотел бы поизучать.
почитайте http://arduino.ru/Reference/Serial