Подвес для фотоаппарата

Тема в разделе "Глядите, что я сделал", создана пользователем BossTon, 1 апр 2013.

  1. BossTon

    BossTon Нерд

    А мне особо точность не нужна... допустимы погрешности.. я думаю мне было бы достаточно сделать как-нить так
    Код (C):
    int currentAngleVert = analogRead(A10)/10
    ,без Map если так можно.
    мне нужно чтоб в горизонтальной плоскости он останавливался раз в 40 градусов....будет ли там 41 или 42, не важно это все нивелируется перекрытием кадров в 30%.
    но вот как заставить все это чудовище работать нормально не знаю... я из-за отсуствия знаний, делаю как могу и горожу много чего лишнего, может быть все можно уложить в 3 строчки((((
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Можно сделать немного иначе.
    Создать нечто вроде списка команд и записать его в EEPROM либо каждый раз загружать через последовательный порт либо считывать с SD-карточки - тут уж на что фантазии хватит.
    Команды должны состоять (например) из идентификатора мотора (V - Vertical или H - Horizontal), направления (F - Forward или B - Backward) и длительности работы мотора в миллисекундах. Программе останется всего лишь считывать команды из памяти и выполнять их, не забывая при этом щелкать затвором камеры. Длительности работы мотора можно подобрать экспериментально. Плюсом такого подхода является то, что Вы всегда сможете изменить список команд и тем самым алгоритм съемки панорамы.
    Начальное положение камеры можно выставлять по показаниям потенциометров либо по срабатыванию концевика.
    Как Вам такой подход?
     
  3. BossTon

    BossTon Нерд

    ну как Вам сказать, я мало что понял, но вывел следующее, управлять милисекундами поворотом не подходит сразу, из-за разных весов, и нагрузок(а идеально все выставить горизонтально не получится) каждый раз система будет вести себя поразному, а вот управлять вертикальным поворотом может и пойдет.... так как там привод через червячный редуктор, и нагрузка более менее распределена равномерно.... спасибо за идею
    а концевики, ну как-то это не технично)) да и че я зря чтоли покупал 2 потенциометра, один из которых сломался и я ездил за третьим?)))
     
  4. BossTon

    BossTon Нерд

    обнаружил странную особенность. написал простенький код для проверки вертикальной сервы
    Код (C):
    #include <Servo.h>
     Servo servov;
     void setup()
    {
        servov.attach(9);
    }
     void loop()
     {
       
       delay(5000);
       servov.write(95);
        delay(2000);
       servov.write(90);
     }
    и вот как только включается ардуино, первые 5 секунд серва двигается самопроизвольно, потом чуть медленнее 2 секунды(видимо срабатывает servov.write(95))
    потом останавливается и 5 секунд стоит и далее все начинает работать по скетчу.... стоит перезапустить, опять первые 5 секунд самопроизвольное движения... из-за чего может быть быть такое??? серва откалибрована.....
     
  5. Unixon

    Unixon Оракул Модератор

    Функция attach() не инициализирует серву в нейтральное положение.
    Внутри setup() нужно добавить write(90) сразу после attach().
     
  6. BossTon

    BossTon Нерд

    и все-таки что-то не так взял код для горизонтального вращения-работает
    отдельно для вертикального - работает, а вместе хоть убей нет...походу цикл в цикле нельзя создавать?
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Можно, хоть десяток вложенных друг в друга циклов...
     
  8. BossTon

    BossTon Нерд

    Ну в теории то да, а как видите на практике нет.. в итоге просидел до 2х ночи... и в итоге пришлось все делать как всегда через одно место. Я просто взял за основу рабочий код для горизонтального поворота, создал блоки операторов.
    Поворот вверх1, поворот вверх2 возвращение в первоначальное положение и т.д.
    и встроил их в нужные места. убрал все дополнительные переменные и прописывал их непосредственно в месте выполнения. В общем как я понял сделал все что не советуют делать для красивого написания кода... он у меня получился длиннющим. не красивым... но блин работает....)))
    ща чуть по позже выложу видио. а код дома выложить не смогу пока.

     
  9. BossTon

    BossTon Нерд

    Ну вроде бы практически готово. пытался привести все в человеческий вид и разобраться с проводами, теперь все выглядит вот так вот.
    [​IMG]
    Вышел на финишную прямую, но теперь появились проблемы с питанием.
    У меня MEGA+motor shield + 2 сервы на 2А(при макс.нагрузке) все запитывалось от 6 батареек к motor shield.
    Как только я навел порядок с проводами, и вывел платы метровой витой парой под штатив, верхняя серва отказалась крутиться, а нижняя халявит (делает шаг через 2) Мне кажется что не хватает тока.
    Может ли быть дело в метровом проводе и не жестких соединениях в бредборде?
    И вообще чем бы запитать все это дело, чтобы сервы не загибались?