Значит проблема такая, изначально 2 серва просто двигаются по кругу без какого либо алгоритма.
А нахрена Вы вставили управление сервой до того, как получили числа? Вы числа по радио получаете в строке 30. А что Вы там в серву-то пихаете в строках 27-28?
Значит, строки 27-28 переносим в позицию между строками 36 и 37.
И что в лупе делает delay(1000), а заодно и delay(15);? Вам надо читать сигнал как только пришёл, а не спать в делэях. Удаляйте.
Но при этом перестаёт работать mySwitch.available(), сейчас я буду разбираться что там в библиотеке сбросить надо, но делэи здесь не нужны (и вредны) в любом случае.
Фигушки, там "Страница доступна только авторизованным пользователям". Но это не важно.
У меня много новостей.
1. Если убрать delay, то углы валятся постоянно не ожидая никакой секунды. Решение простое, после чтения угла сбрасывать available при помощи функции mySwitch.resetAvailable();
2.Как только я этосделал, столкнулся с новй бедой - углы приходят не одноразово, а по нескольку штук одинаковых. Стал разбираться. оказывается библиотека RCSwitch отправляет кажду посылку 10 раз (помните выше мы говорили о потерях данных? так вот, они с ними борются).
3. Хорошо, стал проверять что пришло и, если тоже самое. что в прошлый раз, то игнорировать. Полегчало, но не до конца.
4. Иногда пакет оказывается перевран. Стал разбираться. Нашёл, что в библиотеке в строка 33-36 файла RCSwitch.cpp объявлен переменные. Они используются (изменяются) в обработчике прерывания, но объявляьб их volatile дядя будет. Пришлось присобачивать костыль - читать при запрещённых прерываниях.
В результате удалось добиться более или менее вменяемого поведения.
Значит, смотрите, что Вы сейчас пробуете.
1. Сохраните свой передатчик, он пригодится, но для начала поэкспериментируем с моим.
Как видите здесь постоянно идут команды повернуться одном до 100, а втором до 90, затем наоборот.
3. Если картинка правильная, то меняете в строке №5 приёмника 0 на 1. Запускаете. Сервы должны ходить от 90 до 100 градусов в противоположные стороны каждую секунду (полторы). Ходят?
Если ходят нормально, то попробуйте использовать свой передатчик (который уже с джойстиком) с этим приёмником. Возможно, он и не заработает, но если при моём передатчике работает, а при "настоящем" не пашет - это уже понятнее и будем дальше бороться.
В мониторе порта всего 1 строчка, больше ничего не поступает, почему?
Fun begins!
q=90 z=90 time=499
Не смотря на это поменял 0 на 1, ходить на 10 градусов серво не стали, они жужат на месте и их невозможно сдвинуть, они обратно возвращаются на это же место, по крайней мере они в этот раз не крутятся самопроизвольно------
Чисто случайно переподал напряжение, серво зашевелились, ходят туда сюда примерно на 10 градусов, а вот в мониторе порта по прежнему ничего, то есть ничего конкретного по корректной работе сказать врятли могу
Так, то что показалось 90 и 90 означает, что Вы что-то перепутали.
Убедитесь, что Вы загружаете именно мой приёмник и менно мой передатчик в правильные ардуины (если их подключить две, то настройка порта у них одна на двоих и запросто запутаться). На всякийй случай в строка 23 и 24 приёмника замените 90 на ... ну на 98, чтобы видно было. По крайней мере без серв (с 0 в приёмнике) всё обязано работать, у меня ж работает. Сделайте всё точно и аккуратно и не переходите к сервам пока это не дожмёте.
Если вылазит это значение, значит Вы ничего не приняли.
то что крутятся на 10 градусов обнадёживает, они и должны на 10 градусов крутиться - с 90 до 100 и обратно
--------------
Попробуйте всё-таки всё с чистого листа аккуратно проделать.
Чисто случайно переподал напряжение, серво зашевелились, ходят туда сюда примерно на 10 градусов, а вот в мониторе порта по прежнему ничего, то есть ничего конкретного по корректной работе сказать врятли могу
Кстати, если переподали напряжение, то монитор перезапускать надо - он отваливается. Постарайтесь аккуратно с чистого листа всё сделать.
Блин, вот серв-то у меня как раз и нету, чтобы попробовать. так что придётся Вам отдуваться.
Делайте два эксперимента:
1. Увеличте в моём передатчике delay(1000) до 3000
2. Запустите приёмник без серв (с 0) - убедитесь, что пеатается правильно
3. Запустите прёмник с сервами. если опть бред, то попробуйте в приёмник закомментировать ВСЁ, связанное с Serial (и begin и все print'ы). запустите и посмотрите, будут ли вертеться сервы на 10 градусов туда-сюда.
Более ничего, зажужали сервы, стоят на 1 месте, не двигаются. Закоментировал, без изменений
Дополнение: 0 на 1 менять только в 5 строчке? Я пробовал везде менять, так вот, если везде 1, то серва молчит.
То есть, два серва я в произвольное положение ставлю, запускаю работу, два серва встают в это самое положение, которое видимо задано программой и гудят
Стоп, если Вы закомментируете всё связанное с сериалом, то нифига поялвться не должно! Вообще ничего, т.к. с сериалом не работаем! Вы что, закомментировали, а загрузить забыли?
Сука. Так, давайте поймём, что не работает и почему сервы так себя ведут. Сейчас я сделаю скетч "типа приёмника", но без приёма вообще. Если сервы заработают, значит таки библиотека. В этом случае будем переходить на VirtualWire. Ту я хоть знаю хорошо. Сейчас сделаю.
Передатчик тут не нужен - никто не принимает ничего. Просто запустите. Если сервы не заходят взад-вперёд, закомментируйте всё, свяанное с сериалом и ещё раз запустите. Посмотрим.
Т.е. и сервы ходят и в монитор порта печатается. Правильно я понял?
Сцуко. Самое подлое, что я не могу понять какого рожна ей надо. Она (RCWitch) ничего собственно особого-то не делает.
Ладно, с виртуал ваир не так сразу, Вам она нужна модифицированная, т.к. оригинальная занимает первый таймер (как и серва) - точно подерутся.
У меня есть версия для второго таймера. Вам подойдёт? Он у Вас свободен? Напишите. Если подойбёд, то я передалю под неё наши приёмник и передатчик, но это вечером или завтра.
Кстати, она и лучше. Мало того, что она универсальная (а RCSwitch - специализированая), но она ещё и грамотно написана, а RCSwitch - очень любительская.
Не выбрасывайте никуда вчерашние скетчи, возможно мы к ним вернёмся (см. мою ремарку в конце этого сообщения).
1.
Возьимте библиотеку VirtualWire2 - она точно такая же, как оригинальная VirtualWire, только умеет работать и с таймером 2 тоже (оригинальная только с таймером 1). В моём архиве она уже сконфигурирована на таймер 2, так что Вам нужно просто распаковать архив в папку библиотек, конфигурировать ничего не надо.
#include <VirtualWire2.h>
static int qz[2];
#define q qz[0]
#define z qz[1]
void setup(void) {
vw_set_tx_pin(2);
vw_setup(2000);
q = 100;
z = 90;
}
void loop(void) {
q = 190 - q;
z = 190 - z;
vw_send((uint8_t *)qz, sizeof(qz));
delay(1000);
vw_wait_tx(); // если передача не закончилась - подождать
}
3.
Тестируем также, как вчера. Т.е. сначала в приёмнике USE_SERVO - 0 (как сейчас). Если он всё примимает и печатает, ставим 1 и смотрим.
Иногда пакеты могут теряться. Это нормально, не пугайтесь. RCSwitch делала 10 попыток передачи. Здесь мы делаем только одну. Ну, потеряется и ладно, на следующей секунде дойдёт. С потерями потом разберёмся, сейчас бы ей в принципе заработать.
--------------------
Ремарка: если будет как вчера (без серв работает - с сервами - нет), то я почти уверен, что проблема не в скетче, а в том, что Ваши сервы слишком сильно шумят в питание и/или в эфир. Смотрите от чего они питаются и постарайтесь уменьшить помехи. В этом, я, к сожалению, дистанционно помочь не смогу.
Во первых, с праздником, во вторых, я сделал всё, как Вы написали, при USE_SERVO - 0 всё работает, сообщения в монитор порта поступают, только делаю единичку, сообщений не поступает никаких, как бы я близко не подносил друг к другу радиомодули :( А серво по прежнему жужат, затормозившись в 1 положении.
Если вы "почти уверены" в сильном шуме серв, то я вообще не пойму в чём дело)
Почитал в интернете кучу информации как уменьшить шумы серв и ни к какому выводу не пришел, начал проделывать всякие эксперименты и опа, зацепка.
Начал питать 3.3 В и сервы зашевелились туда сюда на 10 градусов, но в мониторе порта ничего по прежнему не появляется. изменил способ, питаю теперь сервы 3.3 В, а радиоприемник 5В. НО проблема та же, в мониторе порта пусто :( Хотя бы заставили шевелиться сервы)
Теперь как добиться корректной передачи сообщений?
Ну, если они швелятся на 10 градусов, то значит, сообщение приходят нормально, но почему-то не печатаются.
Можете попробовать в строка 10-11 передатчика вместо 100 и 90 поставить 135 и 45 соответственно, а в строках 15-16 вместо 190 поставить180. Должны начать ходить на 90 градусов.
Если ходят, значит библиотеки приёма и сервы совместимы. Почему не работает сериал - хрен его знает. Попробуйте - ходят или нет?
Кстати, им времени хватает? Они "повернутся и отдыхают" или захлёбываются?
delay увеличил, без изменений, сервы также нервно дергаются туда сюда. Дело в том, что отсоединив приемник от питания, они по прежнему "ходят". Получается, что радиоприем не осуществляется. Подключил сервы к отдельному источнику питания, ничего не изменилось. Опять же, при серво 0, сообщения поступают..
Ну или для того, которому не лень собрать у себя стенд. Потому что по скетчу из #76 они могут мотаться только, если в Serial Monitor что-то будет вылезать.
Кстати, не пытались ли вы просто закомментировать в нем (#76) строку #define USE_SERVO? Если сделать так, то сервоверчение продолжается?
Если я правильно понимаю, то вы хотите сказать, что как только к системе электрически подключаются сервы, начинается разброд и шатание?
Т.е. если в ситуации, когда define не закомментарен и, допустим, равен 1, в Serial Monitor вы видите некоторые данные, принимаемые с удаленной стороны, но сервы физически отключены (даже по питанию), вы, ничего не меняя в программной части, просто подключаете сервы - сразу чертовщина начинается - пропадает вывод в Monitor и пр.?
Вы точно закомментировали строки 23-24 и 42-43? Т.е. программе не осталось ни одной команды Servo.write, а они всё равно вертятся? Точно? Убедитесь в этом
Если так, тогда стопудово разирайтесь с питанием и соплями в соединениях потому, что если серве не подавать команды крутиться, то она и не будет крутиться. А если она крутится, значит откуда-то команда поступает. Поступать она может с сопли или с дрыгания питания.
Удостоверился, сервы все равно крутятся на 10 градусов. Это при питании 3.3 В, если же питание 5 В, они жужат, затормозившись в 1 положении. Просто и разбираться собственно не в чем) Соединений мало, всё еще раз перепроверил и всё еще раз пошевелил, всё корректотно, почему же они вертятся?
Если я правильно понимаю, то вы хотите сказать, что как только к системе электрически подключаются сервы, начинается разброд и шатание?
Т.е. если в ситуации, когда define не закомментарен и, допустим, равен 1, в Serial Monitor вы видите некоторые данные, принимаемые с удаленной стороны, но сервы физически отключены (даже по питанию), вы, ничего не меняя в программной части, просто подключаете сервы - сразу чертовщина начинается - пропадает вывод в Monitor и пр.?
Если define = 0, тогда в мониторе порта есть сообщения, если =1, тогда сообщений нету, не важно подключены ли к питанию сервы или нет
Удостоверился, сервы все равно крутятся на 10 градусов. Это при питании 3.3 В, если же питание 5 В, они жужат, затормозившись в 1 положении. Просто и разбираться собственно не в чем) Соединений мало, всё еще раз перепроверил и всё еще раз пошевелил, всё корректотно, почему же они вертятся?
Отключите управляющий провод...
3V - это может быть мало, внутрисервовый контроллер потенциально может подглючивать или перезагружаться сам по себе, а при включении немного прокручивать серву, что и воспринимается, как хаотическое движение. Если же при 5V серва в одном положении застыла и рукой чувствуется ее сопротивление на проворот - значит контроллеру кто-то постоянно дает пульс. Отключайте управляющий провод. Если серва перестает держаться за место, то значит с пина ардуины постоянно летит пульс. ...что, впрочем, объяснимо - при servo.attach(9); на пин начинают поступать удерживающие импульсы.
Отключил управляющий провод, сообщения приходят(даже где define 1), только стоит подключить управляющий провод, сообщения больше не поступают и сервоприводы при 3.3В хаотически крутятся, а при 5В зацикливаются в 1 положении.
Ну, в общем, на этом я закончился. Дистанционно я тут ничего не могу сделать, извините. У меня даже сервы нет в СВХ, чтобы локально попытаться воссоздать ситуацию. Может кто другой сможет понять что там происходит. Извините.
Вот конечный скетч
Значит проблема такая, изначально 2 серва просто двигаются по кругу без какого либо алгоритма.
А нахрена Вы вставили управление сервой до того, как получили числа? Вы числа по радио получаете в строке 30. А что Вы там в серву-то пихаете в строках 27-28?
Значит, строки 27-28 переносим в позицию между строками 36 и 37.
И что в лупе делает delay(1000), а заодно и delay(15);? Вам надо читать сигнал как только пришёл, а не спать в делэях. Удаляйте.
Заменил всё как Вы написали, видео прикрепляю, удалю после Вашего просмотра,
https://vk.com/videos59230953?section=uploaded&z=video59230953_456239074...
Фигушки, там "Страница доступна только авторизованным пользователям". Но это не важно.
У меня много новостей.
1. Если убрать delay, то углы валятся постоянно не ожидая никакой секунды. Решение простое, после чтения угла сбрасывать available при помощи функции mySwitch.resetAvailable();
2.Как только я этосделал, столкнулся с новй бедой - углы приходят не одноразово, а по нескольку штук одинаковых. Стал разбираться. оказывается библиотека RCSwitch отправляет кажду посылку 10 раз (помните выше мы говорили о потерях данных? так вот, они с ними борются).
3. Хорошо, стал проверять что пришло и, если тоже самое. что в прошлый раз, то игнорировать. Полегчало, но не до конца.
4. Иногда пакет оказывается перевран. Стал разбираться. Нашёл, что в библиотеке в строка 33-36 файла RCSwitch.cpp объявлен переменные. Они используются (изменяются) в обработчике прерывания, но объявляьб их volatile дядя будет. Пришлось присобачивать костыль - читать при запрещённых прерываниях.
В результате удалось добиться более или менее вменяемого поведения.
Значит, смотрите, что Вы сейчас пробуете.
1. Сохраните свой передатчик, он пригодится, но для начала поэкспериментируем с моим.
2. Берёте вот эти два файла
приёмник
передатчик
запускаете их. В мониторе порта должна наблюдаться примерно такая картинка
Как видите здесь постоянно идут команды повернуться одном до 100, а втором до 90, затем наоборот.
3. Если картинка правильная, то меняете в строке №5 приёмника 0 на 1. Запускаете. Сервы должны ходить от 90 до 100 градусов в противоположные стороны каждую секунду (полторы). Ходят?
Если ходят нормально, то попробуйте использовать свой передатчик (который уже с джойстиком) с этим приёмником. Возможно, он и не заработает, но если при моём передатчике работает, а при "настоящем" не пашет - это уже понятнее и будем дальше бороться.
Жду результатов.
Чисто случайно переподал напряжение, серво зашевелились, ходят туда сюда примерно на 10 градусов, а вот в мониторе порта по прежнему ничего, то есть ничего конкретного по корректной работе сказать врятли могу
Так, то что показалось 90 и 90 означает, что Вы что-то перепутали.
Убедитесь, что Вы загружаете именно мой приёмник и менно мой передатчик в правильные ардуины (если их подключить две, то настройка порта у них одна на двоих и запросто запутаться). На всякийй случай в строка 23 и 24 приёмника замените 90 на ... ну на 98, чтобы видно было. По крайней мере без серв (с 0 в приёмнике) всё обязано работать, у меня ж работает. Сделайте всё точно и аккуратно и не переходите к сервам пока это не дожмёте.
Если вылазит это значение, значит Вы ничего не приняли.
то что крутятся на 10 градусов обнадёживает, они и должны на 10 градусов крутиться - с 90 до 100 и обратно
--------------
Попробуйте всё-таки всё с чистого листа аккуратно проделать.
Чисто случайно переподал напряжение, серво зашевелились, ходят туда сюда примерно на 10 градусов, а вот в мониторе порта по прежнему ничего, то есть ничего конкретного по корректной работе сказать врятли могу
Кстати, если переподали напряжение, то монитор перезапускать надо - он отваливается. Постарайтесь аккуратно с чистого листа всё сделать.
Убедился с правильностью портов, в этом сложностей нет. Далее поменял на 98 и вот чудо, заработало, не понятно почему в 1 раз не работало:
Поменял 0 на 1, и снова 1 строка и более ничего:
Блин, вот серв-то у меня как раз и нету, чтобы попробовать. так что придётся Вам отдуваться.
Делайте два эксперимента:
1. Увеличте в моём передатчике delay(1000) до 3000
2. Запустите приёмник без серв (с 0) - убедитесь, что пеатается правильно
3. Запустите прёмник с сервами. если опть бред, то попробуйте в приёмник закомментировать ВСЁ, связанное с Serial (и begin и все print'ы). запустите и посмотрите, будут ли вертеться сервы на 10 градусов туда-сюда.
1 и 2 эксперимент
Вроде работает корректно
3 эксперимент
Более ничего, зажужали сервы, стоят на 1 месте, не двигаются. Закоментировал, без изменений
Дополнение: 0 на 1 менять только в 5 строчке? Я пробовал везде менять, так вот, если везде 1, то серва молчит.
То есть, два серва я в произвольное положение ставлю, запускаю работу, два серва встают в это самое положение, которое видимо задано программой и гудят
Нет, конечно, только в 5-ой
Оставил я серво и отошел покурить, прихожу, в мониторе порта появились сообщения, но сами судите, сколько времени прошло судя по строке тайм
Естесственно
Стоп, если Вы закомментируете всё связанное с сериалом, то нифига поялвться не должно! Вообще ничего, т.к. с сериалом не работаем! Вы что, закомментировали, а загрузить забыли?
Нет, я откомментировал обратно, если закоментить, то сервы также жужат, а в мониторе порта ничего
То есть у меня сейчас стоят ваши скетчи приемника и передатчика, с единичкой в 5 строке
Сука. Так, давайте поймём, что не работает и почему сервы так себя ведут. Сейчас я сделаю скетч "типа приёмника", но без приёма вообще. Если сервы заработают, значит таки библиотека. В этом случае будем переходить на VirtualWire. Ту я хоть знаю хорошо. Сейчас сделаю.
Передатчик тут не нужен - никто не принимает ничего. Просто запустите. Если сервы не заходят взад-вперёд, закомментируйте всё, свяанное с сериалом и ещё раз запустите. Посмотрим.
Давайте сразу попробуем виртуалвайр, раз эта выпендривается
Браво, сервы заходили, зажили своей жизнью так сказать)
Примерно на 10 градусов туда сюда и двигаются, с учетом того, что я ничего не комментировал
Сука. Так, давайте поймём, что не работает и почему сервы так себя ведут. Сейчас я сделаю скетч "типа
Скоро обнаружите, что там сосед евонный в эфир срет...
Т.е. и сервы ходят и в монитор порта печатается. Правильно я понял?
Сцуко. Самое подлое, что я не могу понять какого рожна ей надо. Она (RCWitch) ничего собственно особого-то не делает.
Ладно, с виртуал ваир не так сразу, Вам она нужна модифицированная, т.к. оригинальная занимает первый таймер (как и серва) - точно подерутся.
У меня есть версия для второго таймера. Вам подойдёт? Он у Вас свободен? Напишите. Если подойбёд, то я передалю под неё наши приёмник и передатчик, но это вечером или завтра.
Кстати, она и лучше. Мало того, что она универсальная (а RCSwitch - специализированая), но она ещё и грамотно написана, а RCSwitch - очень любительская.
Давайте попробуем, вот только не знаю , что значит первое и второе время.
п.с. И сервы шевелят и монитор печатается
Откладываем на завтра, но в случае, если Вы сегодня выйдите на связь, я готов и сегодня доработать
Ну, поехали.
Не выбрасывайте никуда вчерашние скетчи, возможно мы к ним вернёмся (см. мою ремарку в конце этого сообщения).
1.
Возьимте библиотеку VirtualWire2 - она точно такая же, как оригинальная VirtualWire, только умеет работать и с таймером 2 тоже (оригинальная только с таймером 1). В моём архиве она уже сконфигурирована на таймер 2, так что Вам нужно просто распаковать архив в папку библиотек, конфигурировать ничего не надо.
2.
Возьмите скетчи приёмника
и передатчика
3.
Тестируем также, как вчера. Т.е. сначала в приёмнике USE_SERVO - 0 (как сейчас). Если он всё примимает и печатает, ставим 1 и смотрим.
Иногда пакеты могут теряться. Это нормально, не пугайтесь. RCSwitch делала 10 попыток передачи. Здесь мы делаем только одну. Ну, потеряется и ладно, на следующей секунде дойдёт. С потерями потом разберёмся, сейчас бы ей в принципе заработать.
--------------------
Ремарка: если будет как вчера (без серв работает - с сервами - нет), то я почти уверен, что проблема не в скетче, а в том, что Ваши сервы слишком сильно шумят в питание и/или в эфир. Смотрите от чего они питаются и постарайтесь уменьшить помехи. В этом, я, к сожалению, дистанционно помочь не смогу.
Во первых, с праздником, во вторых, я сделал всё, как Вы написали, при USE_SERVO - 0 всё работает, сообщения в монитор порта поступают, только делаю единичку, сообщений не поступает никаких, как бы я близко не подносил друг к другу радиомодули :( А серво по прежнему жужат, затормозившись в 1 положении.
Если вы "почти уверены" в сильном шуме серв, то я вообще не пойму в чём дело)
Почитал в интернете кучу информации как уменьшить шумы серв и ни к какому выводу не пришел, начал проделывать всякие эксперименты и опа, зацепка.
Начал питать 3.3 В и сервы зашевелились туда сюда на 10 градусов, но в мониторе порта ничего по прежнему не появляется. изменил способ, питаю теперь сервы 3.3 В, а радиоприемник 5В. НО проблема та же, в мониторе порта пусто :( Хотя бы заставили шевелиться сервы)
Теперь как добиться корректной передачи сообщений?
Ну, если они швелятся на 10 градусов, то значит, сообщение приходят нормально, но почему-то не печатаются.
Можете попробовать в строка 10-11 передатчика вместо 100 и 90 поставить 135 и 45 соответственно, а в строках 15-16 вместо 190 поставить180. Должны начать ходить на 90 градусов.
Если ходят, значит библиотеки приёма и сервы совместимы. Почему не работает сериал - хрен его знает. Попробуйте - ходят или нет?
Кстати, им времени хватает? Они "повернутся и отдыхают" или захлёбываются?
От чего Вы их питаете? Это важно. БП у них свой?
Пока что я не дома, приеду, сделаю, отпишусь. Сервы захлёбываются, то есть нету пауз у них, ходят туда сюда без отдыха. Питаю от самой ардуины
Сервы захлёбываются, то есть нету пауз у них
Увеличьте delay в передатчике - пусть ходят с паузами. Добейтесь этого
Питаю от самой ардуины
Очень плохая идея. Просто очень, учитывая, что Вы питаете две сервы сразу.
Попробуйте подключить к отдельному БП (только земли вместе соедините). Глядишь и сериал оживёт.
delay увеличил, без изменений, сервы также нервно дергаются туда сюда. Дело в том, что отсоединив приемник от питания, они по прежнему "ходят". Получается, что радиоприем не осуществляется. Подключил сервы к отдельному источнику питания, ничего не изменилось. Опять же, при серво 0, сообщения поступают..
Скайп/WhatsApp иная другая связь есть? Хоть городской телефон) Обмениваясь сообщениями с часовыми перерывами мы так долго к успеху идти будем)
Попробуйте убрать собственно движение, но сами сервы и их подключение оставить - закомментируйте строки 23-24 и 42-43.
Сделал, ничего не меняется. Сервы вертятся, монитор порта пустой
.
Т.е. q и z не меняется, servo.write() не вызывается, а сервы постоянно туда-сюда мотает? Дьявольщиной попахивает...
При Серво 0 q и z меняются в мониторе порта, а при серво 1, в порт ничего не поступает, а сервы двигаются
Думаю, что это работа для экзорциста-ардуинщика.
Ну или для того, которому не лень собрать у себя стенд. Потому что по скетчу из #76 они могут мотаться только, если в Serial Monitor что-то будет вылезать.
Кстати, не пытались ли вы просто закомментировать в нем (#76) строку #define USE_SERVO? Если сделать так, то сервоверчение продолжается?
Нет, не продолжается, сообщения в монитор порта поступают, серво не крутится, как и при серво 0
Если я правильно понимаю, то вы хотите сказать, что как только к системе электрически подключаются сервы, начинается разброд и шатание?
Т.е. если в ситуации, когда define не закомментарен и, допустим, равен 1, в Serial Monitor вы видите некоторые данные, принимаемые с удаленной стороны, но сервы физически отключены (даже по питанию), вы, ничего не меняя в программной части, просто подключаете сервы - сразу чертовщина начинается - пропадает вывод в Monitor и пр.?
Вы точно закомментировали строки 23-24 и 42-43? Т.е. программе не осталось ни одной команды Servo.write, а они всё равно вертятся? Точно? Убедитесь в этом
Если так, тогда стопудово разирайтесь с питанием и соплями в соединениях потому, что если серве не подавать команды крутиться, то она и не будет крутиться. А если она крутится, значит откуда-то команда поступает. Поступать она может с сопли или с дрыгания питания.
Удостоверился, сервы все равно крутятся на 10 градусов. Это при питании 3.3 В, если же питание 5 В, они жужат, затормозившись в 1 положении. Просто и разбираться собственно не в чем) Соединений мало, всё еще раз перепроверил и всё еще раз пошевелил, всё корректотно, почему же они вертятся?
Если я правильно понимаю, то вы хотите сказать, что как только к системе электрически подключаются сервы, начинается разброд и шатание?
Т.е. если в ситуации, когда define не закомментарен и, допустим, равен 1, в Serial Monitor вы видите некоторые данные, принимаемые с удаленной стороны, но сервы физически отключены (даже по питанию), вы, ничего не меняя в программной части, просто подключаете сервы - сразу чертовщина начинается - пропадает вывод в Monitor и пр.?
Если define = 0, тогда в мониторе порта есть сообщения, если =1, тогда сообщений нету, не важно подключены ли к питанию сервы или нет
Евгений, так всё же, есть скайп? Я бы всё показал наглядно, может и проянилось бы всё?
Удостоверился, сервы все равно крутятся на 10 градусов. Это при питании 3.3 В, если же питание 5 В, они жужат, затормозившись в 1 положении. Просто и разбираться собственно не в чем) Соединений мало, всё еще раз перепроверил и всё еще раз пошевелил, всё корректотно, почему же они вертятся?
Отключите управляющий провод...
3V - это может быть мало, внутрисервовый контроллер потенциально может подглючивать или перезагружаться сам по себе, а при включении немного прокручивать серву, что и воспринимается, как хаотическое движение. Если же при 5V серва в одном положении застыла и рукой чувствуется ее сопротивление на проворот - значит контроллеру кто-то постоянно дает пульс. Отключайте управляющий провод. Если серва перестает держаться за место, то значит с пина ардуины постоянно летит пульс. ...что, впрочем, объяснимо - при servo.attach(9); на пин начинают поступать удерживающие импульсы.
Отключил управляющий провод, сообщения приходят(даже где define 1), только стоит подключить управляющий провод, сообщения больше не поступают и сервоприводы при 3.3В хаотически крутятся, а при 5В зацикливаются в 1 положении.
Ну, в общем, на этом я закончился. Дистанционно я тут ничего не могу сделать, извините. У меня даже сервы нет в СВХ, чтобы локально попытаться воссоздать ситуацию. Может кто другой сможет понять что там происходит. Извините.
Так всё же, давайте свяжемся в скайпе? Я всё покажу
Вы и приемник, поди, от 3.3в питаете... и сервы. Сервы поехали, напругу просадили, приемник отклячился и в Монитор перестало валитью
Приемник питается от 5В, сервы от 3.3В