Управление сервой при помощи ползунка

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

Всем привет.

Есть ардуино + серва. Задача реализовать управление сервой по usb через комп ползунком.

Кто может набросать, или кинуть ссылку на програмку управления сервой с компа посредством ползунка?

пример:

http://www.youtube.com/watch?v=5hNNtqajz0A&feature=related

или в таком исполнении

http://www.youtube.com/watch?v=O0za76D_uzA&feature=related

желательно исходники в с++

:)

заранее благодарен.

 

 

kikia99
Offline
Зарегистрирован: 22.03.2011

 http://www.ozhan.org/index.php?kat_id=19#Arduino  взял с вашего примера  если нужна серва то поменять немного прогу ардуины  а так модуль запушенный на компе кидает в виртуальный ком порт цифры  ардуино слушает порт и повенуется  там еще на надпись нажать C# with Arduino

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

все заработало :)

управляющая программа:
http://ifolder.ru/23597907

виртуальный порт 23

скетч ардуины:

#include <Firmata.h>
#include <Servo.h>

Servo servo7;


void analogWriteCallback(byte pin, int value)
{
if(pin == 7)
servo7.write(value);

}

void setup()
{
Firmata.setFirmwareVersion(0, 2);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);

servo7.attach(7);

Firmata.begin(9600);
}

void loop()
{
while(Firmata.available())
Firmata.processInput();
}

 подключаем серву на 7 пин запускаем прогу, двигаем скролл - жужжит...

Alexander
Offline
Зарегистрирован: 25.04.2010

Поправил форматирования. Для вставки кода удобно пользоваться кнопочкой code - вторая слева над окном сообщения.

juniorluck
Offline
Зарегистрирован: 20.05.2011

26rus пишет:

все заработало :)

управляющая программа:
http://ifolder.ru/23597907

виртуальный порт 23

скетч ардуины:

#include <Firmata.h>
#include <Servo.h>

Servo servo7;


void analogWriteCallback(byte pin, int value)
{
if(pin == 7)
servo7.write(value);

}

void setup()
{
Firmata.setFirmwareVersion(0, 2);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);

servo7.attach(7);

Firmata.begin(9600);
}

void loop()
{
while(Firmata.available())
Firmata.processInput();
}

 подключаем серву на 7 пин запускаем прогу, двигаем скролл - жужжит...

 

Уважаемый! А можно выложить исходник управляющей программы?

juniorluck
Offline
Зарегистрирован: 20.05.2011

Мне нужно тоже самое только управление 3мя сервами... Буду Вам очень благодарен!

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

Я, если честно, в программировании ни бум-бум :)

просто умею правильно задавать вопросы в поисковых системах :)

поэтому помогу, чем могу:

вод скетч на 2 сервы (думаю на 3 переделать не составит труда):

#include <Firmata.h>
#include <Servo.h>

Servo servo7;
Servo servo8;

void analogWriteCallback(byte pin, int value)
{
    if(pin == 7)
      servo7.write(value);
    if(pin == 8)
      servo8.write(value);
}

void setup() 
{
    Firmata.setFirmwareVersion(0, 2);
    Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);

    servo7.attach(7);
    servo8.attach(8);
   
    Firmata.begin(9600);
}

void loop() 
{
    while(Firmata.available())
        Firmata.processInput();
}

с программой управления сложнее...

во-первых нужно поставить borland c++ builder 6 (у меня только под него исходники)

во-вторых также переделать исходники (добавить еще 2 скроллбара/ползунка и назначить им соответствующие функции)

Ссылка на исходники управляющей программы (кстати, теперь можно назначать номер сом-порта :)  )

http://ifolder.ru/23652973
 

juniorluck
Offline
Зарегистрирован: 20.05.2011

Спасибо огромное! Сейчас буду ковырять, как что-то наковыряю сразу отпишу!!! Программу поставить не трудно были бы исходники... А по поводу выражения: "Я, если честно, в программировании ни бум-бум :)" - так тут мы с тобой очень и очень похожы! Еще раз спасибо!

juniorluck
Offline
Зарегистрирован: 20.05.2011

так ребятушки :) возникла небольшая трабла.... При включении и выключении серва крутится на середину, в чем может быть проблема?  

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

может она занимает "нулевое" положение?

может в код включить строку "8"?:

#include <Servo.h> 

Servo myservo;

void setup() 
{ 
  myservo.attach(9);
  myservo.writeMicroseconds(1500);  // в среднее положение
} 

void loop() {}

Значение "1500" исправь на нужное при старте.

 

 

Пытаешься забабахать девайс, типа выдвижного монитора в авто?

juniorluck
Offline
Зарегистрирован: 20.05.2011

Тут все более глобально:) Есть телескоп, сама монтировка у него механическая (т.е. приходится руками крутить - выбирать поворот и наклон), вот хочу прибабахать к нему управление с компа :) 

kikia99
Offline
Зарегистрирован: 22.03.2011

Вам нужно другие сервы сделать эти не пойдут  надо взять електроотвертку и датчики оборотов от мышки диск на вал  ну или как то как вы сможите ,модельные сервы слишком не точные и резкие , или шаговик с редуктором 

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

думаю шаговик от флопа 5.25 или принтера, ну или если денег не жалко, то новенький :)

а так задумка прикольная, вводишь координаты звезды, и он тебе ее бац, на экран... как в кино :)

kikia99
Offline
Зарегистрирован: 22.03.2011

не от флопа не пойдет у него один шаг это 8 процентов млечного пути  так все звезды мимо нужен именно с редуктором и момент будет и точность высокая 

 

juniorluck
Offline
Зарегистрирован: 20.05.2011

Вы правы, с сервами скорее всего не получится, т.к. там потенциометр мешает крутится на несколько оборотов в ту или иную сторону... по этому вопрос как его заставить крутить больше чем на 360 градусов, при этом оставить его потенциал? Понимаю что нужно спилить ограничители (спилил) и убрать потенциометр (убрал), сейчас он получается работает как обычный мотор, только с редуктором.... (((

А так для плавности хода хочу поставить оочень большую шестерню на змеевик телескопа и очень маленькую на сам моторчик.... Но получается если сервы не использовать что тогда использовать чтоб повернуть на определенный градус?

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Про мышку выше писали. Берем от туда енкодер, или если шариковая то один вал с оптопарой и мутим) Последнее значение угла записываем (при изменении) в еепром. И мы всегда будем знать где в текущий момент находиться телескоп. Точность можно сделать пратически идеальную

juniorluck
Offline
Зарегистрирован: 20.05.2011

Adessit пишет:

Про мышку выше писали. Берем от туда енкодер, или если шариковая то один вал с оптопарой и мутим) Последнее значение угла записываем (при изменении) в еепром. И мы всегда будем знать где в текущий момент находиться телескоп. Точность можно сделать пратически идеальную

 

А можно схемку нарисовать хотябы в пайнте, я просто начинаю только с этим со всем возится, что-то пока не очень понятно все....

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

вот здесь очень подробно разжевано на примере ЧПУ:

http://www.arduino.ru/forum/proekty/chpu-na-arduino
 

очень высокая точность :)

за основу взять приводы, а управление гораздо проще - хоть ползунки, хоть по координатам наведение...

Гораздо проще, конечно, использовать не arduino, а готовое решение http://www.planet-cnc.com/, но дороже и скучнее :)

контроллер+прога =150 евро + шаговики...

а с arduinой гораздо дешевле :) на молотке шаговики от принтеров по 50р., червячный привод или редуктор, ардуино нано 500р., моторшилд 800р (или сам спаяй дешевле) и усё...

 

а из своей кастрированной сервы сделай это:

http://habrahabr.ru/blogs/DIY/94776/

:)

juniorluck
Offline
Зарегистрирован: 20.05.2011

Как-то все получается ооочень глобально:)

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

а лучше, сделай сначала 1 привод, например резкость...

потом, как все откалибруешь, прикрутишь еще 2, тогда все будет не так глобально...

а http://habrahabr.ru/blogs/DIY/94776/ все таки сделай :))

kikia99
Offline
Зарегистрирован: 22.03.2011

 кто о чем а я все о своем у меня на стабилизаторе головы камеры стоит http://www.minirobo.ru/node/216 точность и на 30 процентов не выбираю скорости отработки по углам не хвотает но вам то вроде бы скорость не особо нужна все таки не лазер для снятия спутников  дороговато конечно но за то сразу все головные боли снимает а так энкодеры ,шестеренки , крепить нужно как то  по мойму проще заплатить и наслождаться 

juniorluck
Offline
Зарегистрирован: 20.05.2011

Небольшой таймаут)) Завис с прогой... Придумал еще туда прикрутить вебкамеру (ну чтоб вообще автономно все было)....

По поводу http://www.minirobo.ru/node/216 - это конечно круто! Но уже дороговато получается.... Проще действительно заплатить и купить вот это например http://foto.ru/sky-watcher_komplekt_dlya_modernizacii_montirovki_eq5_syn... Но первостепенно преследуются знания! Потому как и в программировании и в радиоэлектронике я "нуб" тот еще:) По этому и хочется хоть чуть чуть разбираться... руки вроде прямые... :)

kikia99
Offline
Зарегистрирован: 22.03.2011

ну тогда тернистый путь самодельных сервоприводов надо подбирать мотор что бы хвост вала торчал и вещать на него от мышки датчик с другой стороны редуктор от отвертки или шуруповерта  

juniorluck
Offline
Зарегистрирован: 20.05.2011

Всем привет!

Вобщем приобрел ШД ИЗОТ СДХ 1,8\40 - 2шт.

Спаял драйвер на 2х микрухах L293D

Попытался подключить все это хозяйство, но ничего не вышло.... ((( Непонятна распиновка этих ШД, может кто-нибудь сталкивался с этими шаговиками? (проводов 6 - красный, белый, синий, желтый и 2 коричневых). Подключал все вот по этой схеме  

Менял местами провода и все прочее, убил уже массу времени, по этому прошу помощи.....

juniorluck
Offline
Зарегистрирован: 20.05.2011

Да, кстати, программу написал, но пока для серво.... если кому интересно, могу выложить исходники, тоже на Borland C++ Builder. Прикручено управление 2 сервами и встроена "морда" вывод каринки с вебкамеры (запись видео, фото, и пр.)...

Shurup
Offline
Зарегистрирован: 30.05.2011

 Выкладывай

Shizopara
Offline
Зарегистрирован: 04.05.2011

Тоже хочу попросить поделиться кодом для ознакомления. Спасибо

juniorluck
Offline
Зарегистрирован: 20.05.2011

Сори, что так долго, небыло инета дома (галимый провайдер)....

Вот ссыль на прогу http://depositfiles.com/files/pip6zq078

Я всетаки завел свои шаговики, буду мудрить с прогой кто чем может помочь буду очень признателен....

 

robovan2
Offline
Зарегистрирован: 26.12.2011

ссылка не работает а очень хотелось бы потестить прогу 

26rus
26rus аватар
Offline
Зарегистрирован: 03.05.2011

эта работает? ifolder.ru/23652973

robovan2
Offline
Зарегистрирован: 26.12.2011

там где один ползунок? да работает, и очень хорошо что ком порт можно выбрать, у меня 6-й 

robovan2
Offline
Зарегистрирован: 26.12.2011

я открывал исходники в C++Builder 6 но ничего конечно там непонимаю, можно добавить еще скролбаров, но как их привязать к сервам?(((

robovan2
Offline
Зарегистрирован: 26.12.2011

я открывал исходники в C++Builder 6 но ничего конечно там непонимаю, можно добавить еще скролбаров, но как их привязать к сервам?(((

gaara
Offline
Зарегистрирован: 26.03.2014

Граждане хорошие, у кого нить осталась управляющая программа скомпелированная из последних исходников, поделитесь пожалуйса?

glassonline
Offline
Зарегистрирован: 25.01.2016

26rus пишет:

Я, если честно, в программировании ни бум-бум :)

просто умею правильно задавать вопросы в поисковых системах :)

поэтому помогу, чем могу:

вод скетч на 2 сервы (думаю на 3 переделать не составит труда):

#include <Firmata.h>
#include <Servo.h>

Servo servo7;
Servo servo8;

void analogWriteCallback(byte pin, int value)
{
    if(pin == 7)
      servo7.write(value);
    if(pin == 8)
      servo8.write(value);
}

void setup() 
{
    Firmata.setFirmwareVersion(0, 2);
    Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);

    servo7.attach(7);
    servo8.attach(8);
   
    Firmata.begin(9600);
}

void loop() 
{
    while(Firmata.available())
        Firmata.processInput();
}

с программой управления сложнее...

во-первых нужно поставить borland c++ builder 6 (у меня только под него исходники)

во-вторых также переделать исходники (добавить еще 2 скроллбара/ползунка и назначить им соответствующие функции)

Ссылка на исходники управляющей программы (кстати, теперь можно назначать номер сом-порта :)  )

http://ifolder.ru/23652973
 

 

Охренеть, в каждой ссылке по трояну, вот нафига такое выкладывать??