НС-12 + сервопривод
- Войдите на сайт для отправки комментариев
Здравствуйте, я делаю радиоуправляемую игрушку, в ней есть несколько сервоприводов и мотор, управление пытаюсь осуществлять с помощью двух модулей HC-12
в процессе я столкнулся с проблемой
данные передаю в следующем формате
134 285 374 418 596 ...
где в разряде сотен номер управляемого прибора а десятки и единицы это самоуправление от 00 до 99
+ в конце передачи контрольный подсчет общей суммы чисел команд, для непринятия команд если в передаче ошибка
суть проблемы в следующем
при управлении мотором всё работает хорошо, есть небольшая задержка но с этим видимо ничего не поделать
а вот при управлении сервоприводом - беда
он работает как угодно но не так как нужно, крутится, дергается когда захочет
я подозреваю, что при передечи данных от HC-12 к ардуино как то задействован таймер, и при управлении сервоприводом задействован таймер. Получается какой то конфликт.
Это всё с одним сервоприводом.
Кроме вопроса как победить эту проблему есть вопрос в продолжение, не будут ли мешать друг другу несколько сервоприводов работающих параллельно но независимо друг от друга, подключенных к одной ардуине
Если кто то может помочь, буду очень благодарен.
Схему подключения и скетч в студию!
Servo.h вроде как конфликтует с SoftwareSerial.
Здравствуйте, немного отвлекся
схема думаю не понадобится, там всё просто и понятно
а код вот
передатчик
приемник
у меня тоже есть подозрение, что происходит конфликт библиотек
подскажите есть решение которое не будет конфликтовать?
конфликт библиотек тут не причем, способ передачи данных кривой... но еще куда ни шло... А вот способ приема абсолютно нерабочий.
В строчке 27 вы дважды вызываете mySerial.parseInt(), явно не подозревая, что эта функция при чтении очищает Сериал. То есть до строчки 28 (где вы эту функцию вызываете в третий раз, хотя никаких данных в порту давно нет) - никакие числа, принятые в строке 27 - дойти не могут В ПРИНЦИПЕ.
Вместо этого при каждом обращении mySerial.parseInt() вы читаете новую посылку от передачика - с соответвующей задержкей. И при этом ваши проверки на диапазон в строке 27 оказываются абсолютно бесполезны. потому что в строке 28 вы читаете в переменную out совершенно новые данные, которые вполне могут не соответвовать условиям проверки в строке выше.
согласен, не корректно написал
поправил так
но это не решило главную проблему, серво дергается
подключена библиотека SoftwareSerial
вот, что про нее пишут
SoftwareSerial при приеме/отправке байта глобально запрещает прерывания, чтобы гарантировать корректные тайминги. Но это так же и замораживает все таймеры, на которых базируется библиотека Servo.
Вы писали, что можно подключить HC-12 без этой библиотеки, можете дать пример кода и схему куда подключать ноги
У вас на приемнике (там где сервы) на аппаратный Сериал что-нибудь подключено?
всё!! получилось!
подключил без библиотеки.
b707 - большое Спасибо!
всё!! получилось!
подключил без библиотеки.
ну и отлично :)
не прошло и года :)
У меня такой же вопрос но я в этом не разбираюсь, скажите кто может помочь ?
Изложите вопрос, иначе ответов не дождетесь.
А если вопрос - "такой же", то воспользуйтесь "таким же ответом" :)
Задача с помощью hc 12 подключить серво привод
Простите, так дело не пойдет. Я из вас подробности вытягивать не собираюсь.
Если хотите разобраться сами - в сообщении #3 этой ветки есть почти готовый код, чуть ниже написано, как его исправить, чтоб заработало. У автора исходного сообщения все получилось.
А если надо, чтобы все сделали за вас - я вам отписал в платном разделе.
Подскажите как перейти в платный раздел ?
да вы уже там были, даже тему свою создали :)
http://arduino.ru/forum/ishchu-ispolnitelya/pomogite-modul-hc-12-podklyuchit-k-servoprivodu