Взаимодействие ардуин, или digitalRead?!
- Войдите на сайт для отправки комментариев
Здравствуйте.
У меня есть следующая задача, а именно:
Есть ардуинка Uno R3 к которой по 8 цифровым портам подключается другое цифровое устройство.
Логика работы проста до безобразия.
Ардуинка посылает по портам логическую единицу, второе устройство её принимает и отправляет ардуинке ответ таким же темпом, а первая в это время пристально слушает.
Бьюсь уже 4 дня, нарисовал схему того, что есть сейчас во фриз. Загрузить сюда не удалось, загрузил на обменник
http://i80.fastpic.ru/big/2016/0515/a4/28f5db7957c4e091ce065a18c78cb2a4.jpg
Код девайса с диодами http://codepaste.net/4twyjm
Код девайса с кнопками http://codepaste.net/fxoevh
Сейчас всё работает в таком режиме:
Устройство с диодами (тестовое) правильно считывает сигналы и включает диоды по ним.
Устройство с экраном (главное) правильно отдаёт 4 команды, все единицы, все нули, бегущий 0 и бегущая единица.
Теперь нужно как то заставить их отвечать друг другу и слушать собеседника.
Пробовал pulseIn, пробовал просто читать состояние выходов, но при переключении главного с OUTPUT в INPUT состояние у него остаётся старое и не меняется при любом раскладе. Потом начинает твориться неразбериха полная.
Я уже даже не знаю что придумать. Помогите советом, или делом, куда копать.
Спасибо
Не могу отредактировать свой пост.
По поводу множества закоменченных строк в коде - это всё мои попытки их разговорить.
Зачем же так громоздко? Используйте последовательную передачу. Гляньте, задача практически Ваша:
http://arduino.ru/forum/programmirovanie/peredacha-znachenii-s-odnoi-pla...
Зачем же так громоздко? Используйте последовательную передачу. Гляньте, задача практически Ваша:
http://arduino.ru/forum/programmirovanie/peredacha-znachenii-s-odnoi-pla...
Спасибо, изучу стандарт.
Однако в даьнейшем вместо тестовой ардуины будет применяться другое устройство с неизвестным протоколом передачи.
Всё, что я о нём знаю - это оно умеет принять сигнал (логический 0 или 1) по проводу (проводов 8, по каждому надо обработать отдельно) и ответить по этому же проводу свой 0 или 1. А может и не ответить.
Ещё есть вариант, что провод не подключен к устройству и тогда об ответе речи не идёт, но ардуина должна как - то узнать об этом.
Спасибо
..будет применяться другое устройство с неизвестным протоколом передачи.
Запрограмить "неизвестный протокол" это круто.
Всё, что я о нём знаю - это оно умеет принять сигнал (логический 0 или 1) по проводу (проводов 8, по каждому надо обработать отдельно) и ответить по этому же проводу свой 0 или 1. А может и не ответить.
ну тогда и выбор невелик: перешли в режим выхода, отдали сигнал, перешли в режим слушания, слушаем некоторое время, принимаем решение. Не забыли схемотехнически защитить порт МК от передачи "1" в момент ответа нулем с другой стороны. Только как Вы будете синхронизировать это? Особенно если протокол не известен.
перечитал. похоже на бред :(
Задача изменилась))
Теперь оби ардуинки соединены через UART, земля общая.
У первой все выходы OUT и выставлено некоторое значение, она отправляет сигнал второй, что пора читать.
Вторая в INPUT через digitalRead читает значения и отправляет по UART их первой, которая в свою очередь сравнивает отправленные и принятые.
Данные передаются нормально по порту, но у принимающей ардуинки значения - полный бред. Она просто читает рандом с портов какой то.
Как можно вылечить "шум" в портал? Порты от 5 до 12.
Спасибо
Данные передаются нормально по порту, но у принимающей ардуинки значения - полный бред. Она просто читает рандом с портов какой то.
Как можно вылечить "шум" в портал? Порты от 5 до 12.
Спасибо
Подтяжка?
Да, спасибо!
Уже всё решил сам))
Тему можно закрывать.