UNO и фотоаппарат Canon
- Войдите на сайт для отправки комментариев
Ср, 22/11/2017 - 12:06
Добрый день.
Продолжаю осваивать Arduino, появился очередной затык по аппаратной части. На аппаратах Canon есть разъем N3, для подключения пульта дистанционного спуска. Этот разъем содержит три пина. Один из них земля, два других - это фокус и спуск затвора. Соответственно можно замыкать их на землю последовательно (фокус -> спуск), и просто отдельно "спуск".
Вот так это выглядит:
Как видно из картинки, напряжение там 3.3V.
Внимание вопрос:
Каким образом будет правильнее и логичнее организовать замыкание этих контактов при помощи Arduino?
Ну, способов-то 100500, как всегда. Например: пин 3 соединить с GND аруино, а пины 1 и 2 нормально держать в z-state, а когда надо, переключать в LOW. Или пин 3 соединить с GND аруин, , а пины 1 и 2 соедниять с GND при помощи реле.
Ну, способов-то 100500, как всегда. Например: пин 3 соединить с GND аруино, а пины 1 и 2 нормально держать в z-state, а когда надо, переключать в LOW. Или пин 3 соединить с GND аруин, , а пины 1 и 2 соедниять с GND при помощи реле.
Я понимаю, что вариантов наверное море, но вот как раз опыта и не хватает выбрать оптимальный :)
Одно могу сказать точно, это не реле, время срабатывания большое относительно. А т.к. это фотоаппарат, то срость отклика должна быть максимально быстрой.
Ну, тогда делайте по первому варианту.
Ну, тогда делайте по первому варианту.
Если честно, то не понял как будет выглядеть схема... с одной стороны 3.3V(у фотика), с другой 5V(когда в HIGH), GND стала общей.... Недопонимаю как это будет фукционировать.... Но может конечно это надо мне пойти учебник полистать )
Никакого HIGH там быть не должно никогда. На случай ошибки, когда случайно таки выскочит HIGН, поставьте между пином ардуино и пином фотоаппарата резистор на 100К - он ограничит ток приемлемым (менее 30 микроампер) значением в том случае если HIGH таки по ошибке выскочит.
Т.е. соединяете земли фотоаппарата и ардуины вместе, а остальные пины фотоаппарата с двумя пинами ардуино через 100К резисторы.
В нормальном состоянии пины ардуино в z-состяоянии (в режиме IMPUT). Когда надо замкнуть на землю, переключаете в режим OUTPUT (можете туда ещё явно LOW записать, если хотите).
--------
Если по каким-то причина таки хотите переключать HIGH/LOW, то делайте HIGH через преобразователь 5-3,3, но я не понимаю зачем это.
--------
В принципе, можно поставить транзистор, чтобы вообще прямой связи не было, но это если только фотоаппарат понимает падение на переходе (0,6В для кремниевовго или 0,2В для германиевого транзистора) как LOW.
Никакого HIGH там быть не должно никогда. На случай ошибки, когда случайно таки выскочит HIGН, поставьте между пином ардуино и пином фотоаппарата резистор на 100К - он ограничит ток приемлемым (менее 30 микроампер) значением в том случае если HIGH таки по ошибке выскочит.
Т.е. соединяете земли фотоаппарата и ардуины вместе, а остальные пины фотоаппарата с двумя пинами ардуино через 100К резисторы.
В нормальном состоянии пины ардуино в z-состяоянии (в режиме IMPUT). Когда надо замкнуть на землю, переключаете в режим OUTPUT (можете туда ещё явно LOW записать, если хотите).
--------
Если по каким-то причина таки хотите переключать HIGH/LOW, то делайте HIGH через преобразователь 5-3,3, но я не понимаю зачем это.
--------
Вот теперь всё стало предельно понятно. Огромное Вам спасибо! :)
В принципе, можно поставить транзистор, чтобы вообще прямой связи не было, но это если только фотоаппарат понимает падение на переходе (0,6В для кремниевовго или 0,2В для германиевого транзистора) как LOW.
К сожалению я не знаю ответа на этот вопрос. Фотоаппарат Canon EOS 5D mark II.
iceekb - банальный вопрос - к чему тут ардуино вообще? Тут нужна кнопка с двумя положениями и все
iceekb - банальный вопрос - к чему тут ардуино вообще? Тут нужна кнопка с двумя положениями и все
Хочу реализовать съемку тайм лапса, (интервальная съемка), через определенные промежутки времени, допустим раз в 60, 90, 120 секунд, будет срабатывать затвор. Либо по расписанию. Мнпе как раз и надо эмулировать нажатие сначала одной, а потом второй кнопки, либо сразу второй.
Соберите две такие штуки и фотографируйте сколь угодно долго с помощью ардуины: http://arduino.ru/forum/obshchii/reset-kompa#comment-317635
А вообще - и одной хватит. Для таймлапса стоит отключить автофокус и выставить его ручками. Иначе не таймлапс будет, а черте-знает что.
Соберите две такие штуки и фотографируйте сколь угодно долго с помощью ардуины: http://arduino.ru/forum/obshchii/reset-kompa#comment-317635
О! Вроде выглядит совсем не сложно, даже для меня :)
А вообще - и одной хватит. Для таймлапса стоит отключить автофокус и выставить его ручками. Иначе не таймлапс будет, а черте-знает что.
Пускай уж будет, всё по честному. А использовать его или нет, уже вопрос второй.
Соберите две такие штуки и фотографируйте сколь угодно долго с помощью ардуины: http://arduino.ru/forum/obshchii/reset-kompa#comment-317635
Вот здесь есть как раз та засада про которую я писал (и которую ТС лучше просто попробовать, чтобы знать) - там на пине фотоаппарата будет не чистая земля, а 0,6В (или какое там падение напряжения на транзисторе оптопары). Если это фотоаппаратом воспримется как LOW, то это более грамотный подход, чем "через резисторы к пинам". Но вот, воспримется ли? ТС надо просто попробовать. Сломать он этим точно ничего не сломает.
Хочу реализовать съемку тайм лапса, (интервальная съемка), через определенные промежутки времени, допустим раз в 60, 90, 120 секунд, будет срабатывать затвор. Либо по расписанию. Мнпе как раз и надо эмулировать нажатие сначала одной, а потом второй кнопки, либо сразу второй.
Ну, если через определённые (без расписания), то ардуина не нужна, достаточно любого мультивибратора (NE555, например).
Вот здесь есть как раз та засада про которую я писал (и которую ТС лучше просто попробовать, чтобы знать) - там на пине фотоаппарата будет не чистая земля, а 0,6В (или какое там падение напряжения на транзисторе оптопары). Если это фотоаппаратом воспримется как LOW, то это более грамотный подход, чем "через резисторы к пинам". Но вот, воспримется ли? ТС надо просто попробовать. Сломать он этим точно ничего не сломает.
Несомненно, что такое может произойти и эксперимент - наше всё. Но я за безопасные эксперименты с дорогой техникой. С другой стороны - можно же просто сымитировать инфракрасный пульт ДУ и мыргать светодиодом - вообще никаких вмешательств в фотоаппарат не будет. Правда, нужно будет поискать как там посылки кодируются.
В принципе я как-то натыкался на даташит твердотелок в DIP-корпусе, в них два мосфета засунуты - это, наверняка, решит проблему с биполярником оптопары. Впрочем, я тут не советник - есть пограмотнее меня люди.
И, к слову, раз уж о грамотных речь зашла, подтвердите или опровергните, если знаете: в один и тот же указатель, могу я поместить адрес как переменной, так и функции? Сейчас мне приходится двумя разными оперировать для привязки данных к менюшке, которую делаю на LCD, но, быть может, я что-то упустил...
Можете, только как Вы будете отличать что там в данный момент сидит.
Можете, только как Вы будете отличать что там в данный момент сидит.
Ну, в структуре-то айтема у меня есть поле "тип". Однако никак не удавалось мне в size_t* ptrData засунуть void (*ptr_function_t)(void) - компилятор всё ругался, как сапожник. Так что завел два указателя, пока не найду способ укротить энтого зверя. Да и в интернете пишут, что области хранения данных и программы в гарвардовской архитектуре разные, поэтому универсального указателя нет. А я ведь верю прессе.
Тогда я не понял что Вам нужно. Вы хотите, чтобы указатель указывал на одну и ту же точку, а Вы могли передавать туда управление (вызывать функцию) или читать отуда данные (из того же места?).
Приведите пример необльшой, чего Вы хотите добиться.
Тогда я не понял что Вам нужно. Вы хотите, чтобы указатель указывал на одну и ту же точку, а Вы могли передавать туда управление (вызывать функцию) или читать отуда данные (из того же места?).
Нет, всё проще: есть структура "Пункт меню", включающая в себя, кроме прочих, тип ("метрика" или "функция") и некий указатель на адрес. При выборе этого пункта в ходе манипуляций с меню, и исходя из "типа", должен быть осуществлен вызов функции по указателю (коллбэк) или же указатель, приведенный к типу "метрика" передается в процедуру редактирования метрики. Сейчас у меня два указателя в структуре, один на коллбэчную функцию и один на метрику, они заполняются в зависимости от типа пункта меню. Для красоты хотел иметь один универсальный. ...кодом было бы проще проиллюстрировать, конечно, но нужно его выкрамсывать из класса.
void * может указывать вапще на все
Ну, в структуре-то айтема у меня есть поле "тип". Однако никак не удавалось мне в size_t* ptrData засунуть void (*ptr_function_t)(void) - компилятор всё ругался, как сапожник.
не могу представить, почему нужно использовать тип size_t* - какой в этом смысл? Что такое "указатель на size_t" по смыслу?
По сути вопроса - я делал такой трюк в меню, как указатели на процедуры и на данные. Использовал тип void* - компилятор не ругался.
Если хотите сохранить контроль типов, то заключите два Ваших указателя в union и "положите друг на друга". Они будет занимать память как один и т.п.
Но это жуткий, грязный костыль. Такие вещи делатся через иерархию классов. Тогда не нужно даже признака иметь на что он там указывает.
Такие вещи делатся через иерархию классов. Тогда не нужно даже признака иметь на что он там указывает.
извиняюсь, но без признака типа у меня не получилось, так как в ардуино dynamic_cast не поддерживается. А без динамического приведения как это сделать - я не знаю...
Вижу, да - не ту прессу в туалет с собой брал. И указатель на size_t - действительно бредово выглядит, с чего я решил, что это универсальная штука... С void всё компилируется, по крайней мере.
За иерархию классов мне браться еще рано - проклятые скриптовые языки атрофировали мозги до того, что даже работу с указателями позабывал. Там-то всё просто - одна переменная для всего, кастование всё скрыто.
Добрый день.
Продолжаю осваивать Arduino, появился очередной затык по аппаратной части. На аппаратах Canon есть разъем N3, для подключения пульта дистанционного спуска. Этот разъем содержит три пина. Один из них земля, два других - это фокус и спуск затвора. Соответственно можно замыкать их на землю последовательно (фокус -> спуск), и просто отдельно "спуск".
Внимание вопрос:
Каким образом будет правильнее и логичнее организовать замыкание этих контактов при помощи Arduino?
Купите себе вот это https://www.ebay.com/itm/Camera-Timer-Remote-Shutter-Release-for-CANON-1D-II-5D-Mark-II-6D-7D-50D-40D-30D/261962075623?hash=item3cfe280de7:g:NmUAAOSwFe5X0oZ8 и будет вам счастье, наснимаете тайм-лапсов сколько угодно и не мучьте ардуино, не забудьте указать, что разъем N3