Библиотека Servo не совместима с библиотекой VirtualWire для работы с приёмником и передатчиком на 433 МГц.
Вот сайт, тут же пишут про что я говорил изначально. Может в этом проблема и стоит вернуться к первой библиотеке???
Там же они предлагают библиотеку Servo2, но ничего не меняется, всё остается по прежнему не понятным. Вот какая картина у нас VirtualWire работает корректно, но Servo у нас не работает, т.е. две сервы при 5В стоят на месте, а при 3.3В хаотично двигаются, при этом мешая корректно работать библиотеке VirualWire, т.к. ничего не поступает в монитор порта.
Попробовал проверить работоспособность серво, вернулся к самому первому скетчу из сообщения №1. Серво работают и хаотично не двигаются, а напрямую подчинаются командам с джойстика. Следовательно, где то в скетчах косяк, либо косяк в конфликте библиотек. И что с этим делать?
Скоро обнаружите, что там сосед евонный в эфир срет...
ЕвгенийП, может действительно помехи от серв забивают приемник ?
То что приемник "без приемника" из 69 сообщения работает - наводит именно на эту мысль.
Как вариант сделать в передатчике и передачу в эфир и управление сервами, а в приемнике оставить только вывод в сериал.
Если при физическом подключении серв к передатчику приемник перестает что-либо ловить - то либо искать другие сервы, которые не срут в эфир, либо переходить на другие модели радиоприемника/передатчика.
Да, тоже думаю, что кто-то срёт в эфир. Либо сами сервы, либо их обвязка.
У меня с этой парой приёмник/передатчик была весёлая история с засёром эфира. Ошибся в программе и вместо 10 попыток передачи, фигачил передачу просто постоянно. Всё типа классно работало, приёмник включал и выключал то, что должен включать и выключать - всё здорово! Только потом заметил, что отвалилась метостанция (какая-то простая от Vitek, но с вынесенными на улицу датчиками) и ворота перестали открываться с брелока. Надо ж было так эфир засрать!
А то я заказал вчера (по другому поводу) пару серв, как приедут, могу вернуться к этой теме и попытаться помочь Вам её дожать. Надо или всё уже решено? Если надо, то я апну тему, когда сервы придут (месяц, конечно, но всё же).
Хорошо, я тему сохраню в закладках, а как придут апну. Но это месяц примерно (China Post Registered Air Mail), да ещё пока продавец отправит. В общем, как только, так сразу.
Я обещал поднять эту тему, когда получу сервы и смогу попробовать полный пример. Получил – поднимаю.
apendics, если Вам ещё актуально, смотрите. Вот макетка, на которой видны все соединения. Слева передатчик, справа - приёмник.
Как видите, передатчик ни с чём не соединён, как и положено, а сервы имеют общую землю с приёмником. Передатчик работает от 5В (что для него голодный паёк), но на таком расстоянии более или менее работает даже без антенны. Сервы питаются отдельно от лабораторного блока - 5В.
Вот скетч передатчика (читайте комментарии). В нём используется штатная библиотека VirtualWire. Он передаёт углы для серв, двигая их от 10 до 170 градусов и обратно. Первую серву крутит вдвое медленнее, чем вторую (смотрите шаги – 5 и 10).
#include <VirtualWire.h>
#define PIN_DATA A5
//
//Структура для передачи приёмнику.
//Сделано предельно упрощённо, на практике так лучше не делать,
//т.к. если у Вас более одного устройства на этой частоте,
//приёмнику неоткуда узнать его это пакет или чужой (разве что
//по длине, но длины могут совпасть). На практике, я предваряю
//каждый такой пакет сигнатурой (просто 4-байтовое число) – в
//первых трёх байтах уникальный код, а в старшем – длина пакета.
//Приёмник проверяет уникальный код и длину, и если всё совпало –
//считает это сообщение своим, иначе – игнорирует.
//
struct ServoPackage {
int firsServoAngle;
int secondServoAngle;
};
void setup() {
vw_set_tx_pin(PIN_DATA);
vw_setup(2000);
}
//
//Здесь передача производится при каждом проходе loop – это сделано
//потому, что в примере используется передатчик на самом голодном
//(минимальном) питании и без антенны – некоторые посылки могут
//теряться. На практике так делать нельзя, т.к. эфир сильно
//загадится и в доме перестанут работать другие устройства на
//этой частоте. По уму нужно делать либо обратную связь –
//подтверждение приёма, либо хотя бы передачу несколько раз,
//но не постоянно.
//
void loop() {
static ServoPackage package = { 10, 170 };
static int step1 = 5, step2 = -10;
vw_send((byte *) & package, sizeof(ServoPackage));
vw_wait_tx();
static uint32_t startInterval = 0, interval = 50;
if (millis() - startInterval > interval) {
startInterval = millis();
package.firsServoAngle += step1;
package.secondServoAngle += step2;
if (package.firsServoAngle == 10 || package.firsServoAngle == 170) step1 = -step1;
if (package.secondServoAngle == 10 || package.secondServoAngle == 170) step2 = -step2;
}
}
А вот скетч приёмника, здесь используется моя VirtualWire2 (я Вам её давал), которая работает со вторым таймером и потому не конфликтует с библиотекой Servo.
http://wiki.amperka.ru/%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0:%D1%81%D0%B5%D1%80%D0%B2%D0%BE%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D1%8B
Библиотека Servo не совместима с библиотекой VirtualWire для работы с приёмником и передатчиком на 433 МГц.
Вот сайт, тут же пишут про что я говорил изначально. Может в этом проблема и стоит вернуться к первой библиотеке???
Там же они предлагают библиотеку Servo2, но ничего не меняется, всё остается по прежнему не понятным. Вот какая картина у нас VirtualWire работает корректно, но Servo у нас не работает, т.е. две сервы при 5В стоят на месте, а при 3.3В хаотично двигаются, при этом мешая корректно работать библиотеке VirualWire, т.к. ничего не поступает в монитор порта.
Попробовал проверить работоспособность серво, вернулся к самому первому скетчу из сообщения №1. Серво работают и хаотично не двигаются, а напрямую подчинаются командам с джойстика. Следовательно, где то в скетчах косяк, либо косяк в конфликте библиотек. И что с этим делать?
Ну, а какие вам в голову приходят варианты кроме как:
1) Рыть упорно самому;
2) Заинтересовать кого-то другого, чтобы он рыл за вас.
Приемник питается от 5В, сервы от 3.3В
От разных источников? Или от одного. Разведите на разные.
От разных
От разных
А общую фотографию можете запостить ?
Что бы видно было питание и подключение приемника, ардуины и серв.
ЗЫЖ Сервы должны от 5В питаться.
Скоро обнаружите, что там сосед евонный в эфир срет...
ЕвгенийП, может действительно помехи от серв забивают приемник ?
То что приемник "без приемника" из 69 сообщения работает - наводит именно на эту мысль.
Как вариант сделать в передатчике и передачу в эфир и управление сервами, а в приемнике оставить только вывод в сериал.
Если при физическом подключении серв к передатчику приемник перестает что-либо ловить - то либо искать другие сервы, которые не срут в эфир, либо переходить на другие модели радиоприемника/передатчика.
Да, тоже думаю, что кто-то срёт в эфир. Либо сами сервы, либо их обвязка.
У меня с этой парой приёмник/передатчик была весёлая история с засёром эфира. Ошибся в программе и вместо 10 попыток передачи, фигачил передачу просто постоянно. Всё типа классно работало, приёмник включал и выключал то, что должен включать и выключать - всё здорово! Только потом заметил, что отвалилась метостанция (какая-то простая от Vitek, но с вынесенными на улицу датчиками) и ворота перестали открываться с брелока. Надо ж было так эфир засрать!
apendics, Вы решили проблему?
А то я заказал вчера (по другому поводу) пару серв, как приедут, могу вернуться к этой теме и попытаться помочь Вам её дожать. Надо или всё уже решено? Если надо, то я апну тему, когда сервы придут (месяц, конечно, но всё же).
Надо
Хорошо, я тему сохраню в закладках, а как придут апну. Но это месяц примерно (China Post Registered Air Mail), да ещё пока продавец отправит. В общем, как только, так сразу.
Я обещал поднять эту тему, когда получу сервы и смогу попробовать полный пример. Получил – поднимаю.
apendics, если Вам ещё актуально, смотрите. Вот макетка, на которой видны все соединения. Слева передатчик, справа - приёмник.
Как видите, передатчик ни с чём не соединён, как и положено, а сервы имеют общую землю с приёмником. Передатчик работает от 5В (что для него голодный паёк), но на таком расстоянии более или менее работает даже без антенны. Сервы питаются отдельно от лабораторного блока - 5В.
Вот скетч передатчика (читайте комментарии). В нём используется штатная библиотека VirtualWire. Он передаёт углы для серв, двигая их от 10 до 170 градусов и обратно. Первую серву крутит вдвое медленнее, чем вторую (смотрите шаги – 5 и 10).
А вот скетч приёмника, здесь используется моя VirtualWire2 (я Вам её давал), которая работает со вторым таймером и потому не конфликтует с библиотекой Servo.
Работает нормально, обе сервы одновременно крутятся, причем левая вдвое медленнее правой. Проверяйте по скетчу – так и должно быть.
Разбирайтесь что у Вас там не работало, попробуйте точно воспроизвести схему, в общем, удачи!
Спасибо Вам. Уже заработало. Введение двух переменных с углами решило вопрос)