Multi Camera IR Control


Library Discription:

At the search, how to emulate my Nikon IR remote control, I found following site. bigMike. A first sketch was written fast and with best results. A friend of mine would like use the same easy system to control his Canon. I found the Canon timing and a lot of others at a thread here. Not just Canon, also Minolta, Sony, Olympus and Pentax. I decide to write a Arduino library where all timings are included. Nikon, Canon, Pentax, Olympus and Sony cameras are working very well. The other cameras have to be checked. It would be nice if you could do that and give me a feedback. Some cameras do have the possibility to control a lot of more then just the shutter. For example zoom and other things. I would like to implement these features later if it is clear that the timings are working well.
Please don’t forget to chose a mode of your camera where it will receive IR commands!
You will find the Arduino multiCameraIrControl library download at the end of the page.
Have fun!

Bibliothekenbeschreibung:

Auf der Suche im Web nach einer Möglichkeit meine Nikon Fernauslösung zu simulieren, habe ich folgende Seite mit den passenden Informationen gefunden. bigMike. Eine erste kleine Sketch funktionierte problemlos. Ein Freund war begeistert, konnte die Sketch jedoch nicht benutzen, weil er eine Canon besitzt. Bei der Rechreche nach weiteren IR Timings kommt man ganz schnell auf diesen Forenbeitrag. Dort sind alle Timings für Canon, Nikon, Olympus, Pentax, Minolta und Sony aufgelistet. Ich habe alle in die multiCameraIrControl Arduino Library eingebaut. Die Sequenz für Nikon, Canon, Pentax, Olympus und Sony ist getestet. Minolta sollte funktionieren. Da würde ich mich freuen wenn das jemand mal testen könnte. Einige Modelle bieten weitere Möglichkeiten wie Zoom, usw. an. Das ist in der ersten Version noch nicht implementiert. Soll aber folgen.
Bitte nicht vergessen die Kamera in einen Modus zu schalten in dem Sie Kommandos über IR empfängt!
Der Download der Arduino Library ist ganz unten zu finden. Bitte berichtet über Erfolge und wenn etwas nicht funktioniert.
Viel Spaß!


To Do:

  1. Canon test, thanks Frank
  2. Olympus test, thank you Steve
  3. Pentax test, thx Andries
  4. Minolta test, thank you Hans
  5. Sony test, thanks to Walter
  6. get the Code more tight
  7. Got more functions, zoom and more

Aufgabenliste:

  1. Canon bestätigen, danke Frank
  2. Olympus testen, Danke sehr Steve
  3. Pentax testen, danke Andries
  4. Minolta testen, mit Dank an Hans
  5. Sony testen, Dank an Walter
  6. Code verschlanken
  7. Fehlende Funktionen wie Zoom usw. implementieren


Partlist:

  1. Arduino Diecimila, UNO, or some else
  2. IR LED
  3. Resistor
  4. Camera: Canon, Nikon, Olympus, Pentax, Sony or Minolta with IR sensor

Stückliste:

  1. Arduino Diecimila, UNO, einen anderen
  2. IR LED
  3. Widerstand
  4. Kamera: Canon, Nikon, Olympus, Pentax, Sony oder Minolta mit IR Sensor


Wiring:

Standard:

how to wire multi camera ir control for arduino library

Verkabelung:

Optional:



Schematic:

Standard:

how to wire arduino multi camera ir control library

Schaltplan:

Optional:


Commands:

void shutterNow()

The camera will shot directly a picture. It will work with every camera.

void shutterDelayed()

The camera will wait after transmission for round about two seconds. This is only supported for Canon, Sony and Minolta cameras.

int zoomin(), int zoomout() (Olympus only)

zooming, thank you Steve

int toggleVideo() (Sony only)

start/stop video, thanks InfinitR

int toggleFocus() (Pentax only)

toogle Focus, thanks to Marchel

Funktionen:

void shutterNow()

Die Kamera wird sofort nach dem Erhalt der Botschaft auslösen, dies wird von allen Kameratypen unterstüzt.

void shutterDelayed()

Es wartet die Kamera nach dem Erhalt der Botschaft für zwei Sekunden, bevor sie auslöst. Dies ist aber nur bei Canon, Sony und Minolta möglich.

int zoomin(), int zoomout() (nur Olympus)

Zoomen der Kamera, Dank an Steve

int toggleVideo() (nur Sony)

Video starten bzw. Video stoppen. Dank an InfinitR

int toggleFocus() (nur Pentax)

Focus durchschalten, nah – mittel – endlos Dank an Marchel

Code Example:

Beispielcode:

/*******************************************
 *
 * Name.......:  multiCameraIrControl Library - Canon Example
 * Description:  A small example sketch how to use multiCameraIrControl library. Please check the project page for wiring and leave a comment.
 * Author.....:  Sebastian Setz
 * Version....:  1.2
 * Date.......:  2011-01-25
 * Project....:  http://sebastian.setz.name/arduino/my-libraries/multi-Camera-IR-Control
 * Contact....:  http://Sebastian.Setz.name
 * License....:  This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
 *               To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
 *               Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
 * Keywords...:  arduino, library, camera, ir, control, canon, nikon, olympus, minolta, sony, pentax, interval, timelapse
 * History....:  2010-12-08 V1.0 - release
 *               2011-01-04 V1.1
 *               2011-01-25 V1.2 - changing pin number, because the wiring at the homepage was different
 *
 ********************************************/

#include <multiCameraIrControl.h>

Canon D5(9);

void setup(){
}

void loop(){
  D5.shutterNow();
  delay(5000);
  D5.shutterDelayed();
  delay(5000);
}

License:

Lizenz:

Creative Commons Lizenzvertrag
lightPrint von Sebastian Setz steht unter einer Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Lizenz.
Über diese Lizenz hinausgehende Erlaubnisse können Sie unter http://Sebastian.Setz.name erhalten.


Download:

Arduino Library: multiCameraIrControl_1-91.zipmultiCameraIrControl_1-9.zip (15 KB)

225 Kommentare

  1. Hello guys i have modified the the marlin frimware of RepRap M240 command. By default it emulates canon RC1 remote I modified it to emulate multiple devices Canon, Nikon, Olympus, Pentax, Sony or Minolta IR remotes. But the problem is when i send the code manually it works everytime but when its send to the Print it works sometime, sometimes not. Amy idea what the problem is??
    Program code

    case 240:// M240 Triggers a camera by emulating a Canon, Nikon, Olympus, Pentax, Sony and Minolta http://sebastian.setz.name/arduino/my-libraries/multi-camera-ir-control/ {
    #ifdef PHOTOGRAPH_PIN

    Sony SA900(PHOTOGRAPH_PIN);SA900.shutterNow();delay(50);
    CanonWLDC100 D3(PHOTOGRAPH_PIN);D3.shutterNow();delay(50);
    Canon D5(PHOTOGRAPH_PIN);D5.shutterNow();delay(50);
    Minolta MA900(PHOTOGRAPH_PIN);MA900.shutterNow();delay(50);
    Nikon D5000(PHOTOGRAPH_PIN);D5000.shutterNow();delay(50);
    Olympus E5(PHOTOGRAPH_PIN);E5.shutterNow();delay(50);
    Pentax K7(PHOTOGRAPH_PIN);K7.shutterNow();delay(50);
    #endif
    }

    • Hello Bijil,

      that is soooo clever!!!

      Can you please send me the modified Marlin firmware? I would like to try it.

      Maybe it doesn’t work because the IR sequence is interrupted by a interrupt for the motion control. Can you send me please a gcode file where it works sometimes.

      Best regards

      Sebastian

  2. Hi Sebastian,

    This was really helpful for the project I am working on for my degree.

    One question for you or anyone else that can help.

    How can I get the camera (Canon 600D) to focus, like when you hold the shutter button on the camera half way down, before setting off the shutter using this set up?

    Thanks

    Thor

  3. Hi,
    let me first thanks you for your great contribution with this library.
    However i can’t get it to work with my Canon 70D.

    i bought this shield for the IR led :
    http://www.play-zone.ch/en/linksprite-ir-infrarot-shield-fur-arduino.html
    I have tested the camera on manual mode, aperture, with 2sec and 10 sec timer with the led close to the camera receptor.

    I checked the IR led with my Iphone Camera and i can see it “blinking” when using your library so the signal is sent but the 70D is not triggered.
    Tested also on both arduino 1.5.6-r2 and 1.0.5-R2 with Uno and Mega.

    Could it be the led signal not strong enough ? or the 70D not compatible with your library ? or anything else ?
    I’m getting short on ideas and hope someone could help.

      • Yes i did test the camera with a Canon RC-6 and it works fine.

        I not sure to understand what you mean by “activate the IR mode”. If it is on the camera (timer mode), i think i’m good since the original remote is ok.
        On the arduino side, i have plugged the IR Shield on the arduino, checked the pin for emiter (3) and used the following code (tried both with and without shutterDelayed) :

        #include

        Canon D5(3);

        void setup(){
        }

        void loop(){
        D5.shutterNow();
        delay(2000);
        }

  4. Hallo Sebastian,

    Ich würde gerne dein Programm mit einer Fuji S2000HD nutzen.
    Soweit ich weiss funktioniert diese mit den folgenden NEC-Codes :

    0xD30C817E : Shutter
    0xD30C41BE : Play
    0xD30C11EE : Back
    0xD30CE11E : Menu
    0xD30CC13E : Up
    0xD30C21DE : Down
    0xD30C619E : Left
    0xD30CA15E : Right
    0xD30C916E : Feature

    Ist da irgend eine Kamera implementiert, die da kompatibel ist?

    Danke

    Uwe

  5. Hi!

    shutterNow() works fine with a OLYMPUS E300 SLR.
    Using a IR-Led from an TV- Remote-Controller from scratch, is works up to 2m.
    (more not yet tested)
    Zoom is not supported from the camera.

    shutterDelayed() gives me an error:
    ” ‘class Olympus’ has no member named ‘shutterDelayed’ ”

    Thank you for this program.

  6. great thanks, just tested with Canon EOS M, worked! but something weird happen, first shoot takes instantly and secondly shoot is delayed, this happen repeatedly is this suppose to happen? how can i make it shoot instantly every time?

  7. Sebastian, i have tested today this Remote control with my Canon EOS 7D.
    It works fine at a distance of 2 meters ( I have not tested for increased distance).
    I used IR led ( dont know the IR wavelenght) with resistor R2 to 27 Ohms for more power (distance).
    R1 is 10 K ohms and I used BC 548 transistor (common use).
    http://www.fairchildsemi.com/ds/BC/BC548.pdf

    To be able to use the remote control in Canon 7D, you must set the Timer function before.
    Thank you very much!

    Gustavo Murta from Brazil.

  8. I have not too much experience with arduino. I have been trying to use the nikon example after downloading the file “multiCameraIrControl_1-9.zip”. I have move to Nikon folder the files
    “multiCameraIrControl.cpp”, “multiCameraIrControl.h” and “keywords.txt”.

    I’m using arduino 1.0.5 hand when i verify the code i get this error:
    Nikon:22: error: ‘Nikon’ does not name a type
    Nikon.pde: In function ‘void loop()’:
    Nikon:28: error: ‘D5000′ was not declared in this scope

    What i’m doing bad?

    Best regards

    Javier

  9. Hi Sebastian
    Small question.
    Is it possible to assign only one port to all possible cameras in the framework?
    For example:
    Canon D5(9);
    Nikon D5000(9);
    Sony A900(9);
    …. so on.

    I’m working on project and this is the device which rotate object on it for 360° and take photos. I need selection of type of camera because in that case I can support as many cameras as available in the framework and no wire connection. So very useful would be to have only one IR port output.
    I haven’t tried the code because I’m waiting for IR LED that’s why I’m curious about that.

    Thanks in advance for answer.

  10. I just replaced my IR code with this library and it works quite well.
    One problem that I have, which also occurred with my code was that my EOS 350D sometimes missed a trigger, even when directly facing the led.
    Could this be a problem with the diode?

      • Thanks,

        I have replace the Ir led I used and tested with 2 wide angle iR leds at 880nm and 950nm. In both cases it still sometimes fails to trigger the camera. Even with all other components disconnected and the led as close to the controller as possible.
        For now I build in a wired trigger module because I need the thing to work perfectly next week, But I’ll try to figure this out on another arduino board.

        • Thank for the tip, but that wasn’t it. I tried the same setup standalone with my prototyping arduino board and it work much better. It must be the carrier frequency which is slightly off on the arduino mini in the project.
          But thanks anyway!

  11. I have addaped the code for the Sony Nex-5N:


    ///
    /// Class for Sony Nex-5N IR Remote Control based on Sebastian Setz's Multi
    /// Camera IR Control Arduino libray.
    ///
    /// Sebastian Schucht
    class SonyNex5N{
    public:
    SonyNex5N(int pin);
    void shutterNow();
    void shutterDelayed();
    void toggleVideo();
    private:
    int _pin;
    int _freq;
    };

    ///
    /// Constructor for Sony Nex-5N IR Remote Control class.
    ///
    ///
    /// Insert the number of the Arduino pin, where the IR LED is attached to.
    ///
    /// Sebastian Schucht
    SonyNex5N::SonyNex5N(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _freq = 40;
    }

    ///
    /// Release the shutter of the Sony Nex-5N without delay. If the camera is
    /// set to BULB mode, the shutter will be opened until a second commands
    /// close it.
    ///
    /// Sebastian Schucht
    void SonyNex5N::shutterNow()
    {
    bool _seq[] = { 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
    for (int j=0;j<3;j++) {
    high(2320,_freq,_pin);
    wait(650);
    for (int i=0;i<sizeof(_seq);i++){
    if (_seq[i]==0){
    high(575,_freq,_pin);
    wait(650);
    }
    else{
    high(1175,_freq,_pin);
    wait(650);
    }
    }
    wait(10000);
    }
    }

    ///
    /// Release the shutter of the Sony Nex-5N with delay of 2 seconds.
    ///
    /// Sebastian Schucht
    void SonyNex5N::shutterDelayed()
    {
    bool _seqDelayed[] = { 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
    for (int j=0;j<3;j++) {
    high(2320,_freq,_pin);
    wait(650);
    for (int i=0;i<sizeof(_seqDelayed);i++){
    if (_seqDelayed[i]==0){
    high(575,_freq,_pin);
    wait(650);
    }
    else{
    high(1175,_freq,_pin);
    wait(650);
    }
    }
    wait(10000);
    }
    }

    ///
    /// Starts or stops the video recording. If the camera is recording a video
    /// the recordion will be stoped. Otherwise the video recording will be
    /// stopped.
    ///
    /// Sebastian Schucht
    void SonyNex5N::toggleVideo()
    {
    bool _seqToggle[] = { 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
    for (int j=0;j<3;j++) {
    high(2320,_freq,_pin);
    wait(650);
    for (int i=0;i<sizeof(_seqToggle);i++){
    if (_seqToggle[i]==0){
    high(575,_freq,_pin);
    wait(650);
    }
    else{
    high(1175,_freq,_pin);
    wait(650);
    }
    }
    wait(10000);
    }
    }

    have fun.

  12. We havent com across IR commands for cameras before, but we will add them to our list for inclusion in our project….tnx

    For anyone interested in IR protocols – we have just launched a project for AnalysIR – IR Decoder & Analyzer GUI (Arduino & Raspberry Pi). Currently we support 17 IR protocols and are looking for more to add as part of the campaign. Suggestions Welcome!

    If the project is successful, we hope to add support for Raspberry Pi !

    You can find out more and support the Project by visiting http://igg.me/at/AnalysIR/x/3752156 or Screenshot via http://www.AnalysIR.com

  13. I have a program using three steppers and the library AccelStepper. The program works fine but when I include the lines:

    #include
    Nikon D7000(9);

    the program begins to malfunction.

    Is there a incompatibility between AccelStepper and multiCameraIrControl?

    Thanks.

  14. Hi to all
    Coding For Pentax Shoud be named ToggleZoom not Focus. I can confirm same coding works for Pentax Optio S1 and X-5 as well. In my blog you can also find undocumented IR timing codes for FUJI ‘s Finepix (S2000HD). All IR scketches for cameras can be ported on ATtiny85 provided you “burn” it to run on 16MHZ internal PLL with BOD disabled.
    Regards
    Manolis

  15. Hi Sebastian

    I would like to use this library in my project It works prefect on my uno but I would like to use an attiny45 20pu I have the fuse set at 8mhz but it will not trigger the shutter with the attiny. I am thinking that the frequency and or timer delay is altered by using 8mhz instead of the 16mhz that the uno runs. Do you know what modifications I would need to do to the cpp file in order to get it to work with the 8mhz chip?

    Thank in advance for any help you can offer.

    • Hello Mike,

      there library don’t use any special timer or so. I don’t know if the way I produce the carrier frequency is that smart, maybe that can be a problem…
      But, you can check the website where I got all the timings from. He uses a ATtiny25, maybe you can learn something there.

      Sebastian

  16. Hi,

    No, I just wanted to use my normal canon intervalometer that has a 2.5mm jack and connect it to an arduino board with an IR LED so I can make my existing intervalometer multicamera compatible.

    I am just not sure how I can detect the shutter being activated using an arduino board.

    Thanks

  17. Thanks this is a great tool!

    Have used it with my canon and sony works great.

    I wanted to do something else using this. Is it possible to read with the arduino board the shutter control from an intervalometer and then use this code to trigger the camera with the IR?

    I suppose yes. what would you need to read to detect the shutter circuit being closed?

    Intervalometer –> shutter–> arduino detect shutter–> arduino IR–> trigger camera with IR
    Thanks

  18. Moin,

    tolles Projekt. Habe es zwar noch nicht ausprobiert aber die Kommentare sprechen ja für sich.

    Mich würde interessieren, ob es über IR (für Sony) auch prinzipiell die Möglichkeit gibt die Belichtungszeit einzustellen. Dann könnte man z.B. Braketing Reihen mit mehr als 0,7EV machen. Soweit ich weiß geht es zumindes über den Kabeltrigger nur auf 1/10 sec runter. Kürzer ist da nicht möglich. Wie ist das hier?

    Gruß

    Steffen

    • Hallo Steffen,

      das kann ich Dir ehrlich gesagt nicht genau sagen. Ich besitze keine Sony, sondern bin auf das Feedback der Anwender angewiesen.
      Gibt es denn generell die Möglichkeit bei deiner Sony per IR die Belichtungszeit zu beeinflussen? Bei einigen Kameras soll man per Fernbedienung den Bulb Modus nutzen können. Das wäre dann das was Du brauchst.
      Wenn Du noch eine Canon rumliegen hast, dann wäre das CHDK was für Dich.

      Grüße

      Sebastian

  19. Thanks for the Sony camera library….It works fine on the Arduino, But if I make a change to the LED pin (0) to load to an ATTiny 85 I get avrdude error??

    How can I see the actual include library…. multiCameraIrControl ? this is my first attempt at programming the Arduino!!

    john

  20. Hi Sebastian,

    Thanks for making this available for everyone. I’m writing a program that will use this, but won’t have access to a camera with IR capability for a few weeks. Looking at your code, it looks like you don’t need to use a PWM digital pin for the IR remote, but can use a plain digital output pin. Am I correct? Thanks

  21. Excuse me, I am new with this stuff. I saw that it was possible with to control a Canon, a Nikon, an Olympus, a Pentax, a Sony, a Minolta with the Arduino. But, do you think it would possible to control the 6 cameras simultaneously with and arduino uno and a EduShield? Or what should I add to make this work? Thank you in advance.

    • Hello Marco,

      exact simultaneously will be difficult. Because of two reasons.
      1. The code for the IR Release will be send one by one
      2. There will be different delays in the different cameras

      You should use just one camera type or a cable.

      What do you plan to do? It sounds interesting.

      Best regards

      Sebastian

  22. To toggle focus on Pentax:

    13 ms high
    3 ms low
    1 ms high
    1 ms low
    1 ms high
    1 ms low
    1 ms high
    1 ms low
    1 ms high
    1 ms low
    1 ms high
    1 ms low
    1 ms high
    3 ms low
    1 ms high

    It will toggle between wide, middle and tele but you can not select one of these explicit. Tested with WG-1 and K-r.

  23. i’m using it with an Attiny85 @ 8Mhz but it is not working, putting the same sketch in an arduino uno works perfectly, can someone tell me what am i doing worg? :(


    #include

    // IR Emitter PIN
    #define irPin 0
    // Manual Shoot Pin
    #define buttonPin 1
    // Shooting Mode
    // 0 : Time lapse. (5 sec.)
    // 1 : Manual Shooting.
    #define modePin 2

    // LIBRERIA DE LA CAMARA
    Sony A900(irPin);
    // Shooting Mode Pin
    int mode;

    // INIT
    void setup(){
    mode = digitalRead(modePin);
    }

    // MAIN PROCESS
    void loop(){
    if (mode == 0){
    A900.shutterNow();
    delay(4900);
    }
    else if (mode == 1) {
    if (digitalRead(buttonPin) == 1)
    {
    A900.shutterDelayed();
    }
    }
    delay(100);
    }

  24. Hello. total respect for what you are doing. ill be back in a few weeks while working on my lightning trigger for nikon d3000. For now i’d like to make a suggestion to assist you or any of your posters on how to obtain the “timings” from in IR remote. The logitech harmony remotes (even the lowest model the 300) have the ability to record these timings and saves them to memory on the remote. you access the data from a txt file on the remote. you access the remote with USB & can browse the folders as if storage device. I dont know what the data means but I am sure its what you are looking for. chat in a few weeks time :D

  25. Me again. For all those having problems:

    Check if LED is on by looking at the LED with a cheap camera (Mobile Phone)

    Try without any resistor in PIN 13. Here it is working for me! (Canon EOS 550D)

    Cheers and thanks for the Lib!

    Nuccel

  26. Hello mates,

    I am using a Canon Eos 550D and I tried with 2 differnent LED but I can not get it running.
    I have this LED : http://www.dx.com/SKU.135040 and another from an old remote. I used 2 different types of transistors (BUZ72A) and 2n7002 but when I check the LED with my cell phone camera in Canon mode I can only the a glimmming light – no proper flash as I can see in a professional remote controll. When I manually set the PIN high (digitalWrite(9, HIGH)) I can see a shiny light.
    Any ideas what might be wrong? Is the LED to slow to follow the impuls?
    Thanks for your input

    Nuccel from Germany

  27. Hallo,

    Ich suche nun seit einigen Tagen eine Lösung um meine CANON 600D mit einem IR LED und dem ARDUINO UNO anzusteuern (Bild auslösen). Habe den Empfang mit dem Arduino und einer Fernsteuerung hingekriegt, schaffe es aber unter keinen Umständen mittels IR-LEDS die Kamera auszulösen.
    Frage a) welchen Typ IR-LED benötige ich genau ?
    Frage b) welchen sketch kann ich dazu nehmen, dass es dann funktioniert ? Habe gelesen, dass nicht jeder code läuft. Ich bin fast am verzweifeln….

  28. I tried to use the provided example for Pentax, but when compiling it gives me the following error message:

    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Canon::shutterDelayed()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:286: multiple definition of `Canon::shutterDelayed()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:286: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Canon::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:269: multiple definition of `Canon::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:269: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Canon':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:262: multiple definition of `Canon::Canon(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:262: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Canon':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:262: multiple definition of `Canon::Canon(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:262: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Sony':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:213: multiple definition of `Sony::Sony(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:213: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Sony':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:213: multiple definition of `Sony::Sony(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:213: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Minolta':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:170: multiple definition of `Minolta::Minolta(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:170: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Minolta':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:170: multiple definition of `Minolta::Minolta(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:170: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Olympus':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:85: multiple definition of `Olympus::Olympus(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:85: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Olympus':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:85: multiple definition of `Olympus::Olympus(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:85: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Pentax':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:68: multiple definition of `Pentax::Pentax(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:68: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Pentax':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:68: multiple definition of `Pentax::Pentax(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:68: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Nikon':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:50: multiple definition of `Nikon::Nikon(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:50: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Nikon':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:50: multiple definition of `Nikon::Nikon(int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:50: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `high(unsigned int, int, int)':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:39: multiple definition of `high(unsigned int, int, int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:39: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `wait(unsigned int)':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:33: multiple definition of `wait(unsigned int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:33: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Sony::shutterDelayed()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:241: multiple definition of `Sony::shutterDelayed()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:241: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Sony::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:220: multiple definition of `Sony::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:220: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Minolta::shutterDelayed()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:195: multiple definition of `Minolta::shutterDelayed()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:195: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Minolta::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:177: multiple definition of `Minolta::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:177: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Olympus::zoomout(unsigned int)':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:141: multiple definition of `Olympus::zoomout(unsigned int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:141: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Olympus::zoomin(unsigned int)':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:111: multiple definition of `Olympus::zoomin(unsigned int)'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:111: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Olympus::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:92: multiple definition of `Olympus::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:92: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Pentax::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:75: multiple definition of `Pentax::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:75: first defined here
    multiCameraIrControl\multiCameraIrControl.cpp.o: In function `Nikon::shutterNow()':
    C:\Users\user01\arduino\arduino-1.0-windows\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.cpp:57: multiple definition of `Nikon::shutterNow()'
    multiCameraIrControl.cpp.o:C:\Users\user01\AppData\Local\Temp\build535879018211725218.tmp/multiCameraIrControl.cpp:57: first defined here
    

    What am I doing wrong?

    Many thanks.

      • Thanks it worked. Now I have another question: how can I manage the B exposure with my Pentax K100D Super? According to manual as far as the IR is “on” the shutter should remain open, but this is not the case with the library. I’m afraid the IR signal is given just “one shot”. Is this possible? Did anyone succeed in using the B on Pentax with MulticameraIR?
        Thank you so much!
        P.S. Some Pentax cameras may be configured such that the B works as “one shot opens – next shot closes”, unfortunately not mine :-(

        • Sebastian, thank you so much. It works great with my ‘Pentax K100D Super’. I tested with an Arduino Pro Mini, an Arduino Nano and an Arduino Uno. Can’t wait to set it up for some great time-lapse shooting!

          Tom, I went through the manual again and I cannot seem to find any place where the Bulb mode is mentioned in relation to the IR remote. Maybe, you should try and read again to make sure.
          What is more, I do not think it would be possible to “hold down” the IR remote button. What it does when you press the button once is light the IR led a few times with different timings, a sort of light morse code. Pressing and holding the button would not be the same as pressing and holding a button switch on a wired trigger.

  29. Hi,

    FYI: this library (1.7 on Duemilanove) works with the Pentax WG-1. Thanks a lot for your work and making it available!

    I assume you used Arduino as well to read the remote codes? If so, could you share the code and the schematic so that I may try to find the Pentax’s ‘zoom’ and ‘function’ remote codes?

    Regards,

    Martijn

    • I just ordered an arduino, and was looking various hardware projects, and noticed the question about the Olympus SP-565UZ. Unfortunately, the SP-565UZ does not support an infrared remote shutter release (Olympus product numbers RM-1, RM-2). However, it does support a wired shutter release (RM-UC1). You need to get a cable that is compatible with the RM-UC1, either by hacking up an existing clone RM-UC1 shutter release, or getting the Pixel CL-UC1 cable, which has the Olympus 12 pin multi-connector on one side, and a 2.5mm phono plug on the other side. I would imagine there are other projects that deal with wired shutter releases. A commerical product that will start shipping shortly is the triggertrap (triggertrap.com), and they make a shield that plugs into the Arduino, and the code is available for the shield.

  30. Hallo ich habe folgendes Problem:

    Ich möchte per Knopfdruck meine D3000 auslösen jedoch zeigt er mir die fehlermeldung:

    Button.cpp: In function ‘void loop()’:
    Button:16: error: ‘D3000′ was not declared in this scope

    Woran könnte das liegen?

    Hier der Code:

    #include 
    #include 
    
    const int buttonPin = IO27;    
    int buttonState = 0;         
    void setup() {
    
      pinMode(buttonPin, INPUT);   
    digitalWrite (buttonPin,HIGH);
    Nikon D3000(IO15);
    }
    
    void loop(){
      buttonState = digitalRead(buttonPin);
      if (buttonState == HIGH) {     
      
       D3000.shutterNow();
      delay(1000);
      } 
      else {
        
        
      }
    }
      • Hallo Sebastian
        Danke für den Code.
        Werde mich am WE mal damit befassen.

        Meine NEX 5 funktioniert mit Deinem Code problemlos.
        Möchte den Code auch für die Sony CX Familie erweitern.
        Falls es klappt sende ich den Code zurück.

        Gruss
        Erich

  31. I have incorporated your code into my own project.
    If the Camera (EOS 550D) is set to Bulb and the following code is used, long exposure shots (5 sec in example) are capable.

    D5.shutterNow();
    delay(50);
    D5.shutterDelayed();
    delay(5000);
    D5.shutterNow();
    delay(50);

    Sorry if this is obvious, or it has already been posted but i cannot read German.

  32. Hallo Sebastian,

    Vielen Dank für Deine Arbeit mit dieser Bibliothek. Ich habe sie in meinem inzwischen nicht mehr ganz kleinen Arduino-Fotoprojekt eingesetzt. Dazu musste ich allerdings sinnvollerweise die Zuordnung der Pins in die Funktionen stecken, die das IR-Signal generieren, weil die Pins in meinem Programm variabel sind. Weil ich es für sehr verwirrend halte, wenn mehrere Bibliotheken mit ähnlichen Namen existieren, habe ich die Funktionen aus den Bibliotheken in meinen normalen Quelltext integriert.

    Falls Du Lust auf Wassertropfenfotografie bekommen solltest, kannst Du Dich gerne auf meiner Projektseite umschauen.

      • Jup, das Photoduino kenne ich. Und noch das eine oder andere Gerät, das ähnliche Dinge kann (z.B. CameraAxe, Glipsecatcher, Timemachine, Stopshot und ein paar andere aus dem Arduino-Playground). Das war mir aber alles entweder zu teuer oder hardwaretechnisch zu anspruchsvoll. Teilweise ist es auch schwierig, die benötigten Bauteile zu finden, deswegen bin ich am Ende bei der Eigenentwicklung gelandet, dabei habe ich auch eine Menge gelernt.

        Wenn es um die Steuerung von mehreren Ventilen geht, wird das Feld der Mitbewerber übrigens schon deutlich kleiner, das kann in der Form eigentlich nur der Glimpsecatcher, der allerdings nur über eine Computerverbindung nutzbar ist. Inzwischen ist meine Variante wohl auch eine der flexibelsten Lösungen, weil es softwareseitig nur noch eine untergeordnete Rolle spielt, was an die Pins angeschlossen wird.

        Gruß,

        Nico

  33. Hi,
    ich habe das ganze heute mit meiner Canon D600 getestet. shutterDelayed funktionierte, shutterNow jedoch nicht. Laut folgender Seite http://www.doc-diy.net/photo/rc-1_hacked/ braucht man sowohl für shutterDelayd als auch für shutterNow 16 Impulse(natürlich mit verschiedenem delay). Ich habe den Code dementsprechend angepasst. Nun funktioniert es :). Vielleicht hilfts ja dem einen oder anderen.

    void Canon::shutterNow()
    {
      for(int i=0; i<16; i++) { 
        digitalWrite(_pin, HIGH);
        delayMicroseconds(11);
        digitalWrite(_pin, LOW);
        delayMicroseconds(11);
      } 
      delayMicroseconds(7330); 
      for(int i=0; i<16; i++) { 
        digitalWrite(_pin, HIGH);
        delayMicroseconds(11);
        digitalWrite(_pin, LOW);
        delayMicroseconds(11);
      }
    }
  34. Was mache ich falsch?

    Ich benutze Arduino 1.0, habe die ZIP-Datei entpackt und in das Verzeichnis C:\Program Files\arduino-1.0\libraries\ kopiert. Sowohl beim klicken auf “Verfiy” als auch bei “Upload” erhalte ich folgende Fehlermeldung:

    C:\Program Files\arduino-1.0\libraries\multiCameraIrControl/multiCameraIrControl.h:26:22: error: WProgram.h: No such file or directory

    Unter File – Examples finde ich die Beispielprogramme und unter Sketch – Import Library … finde ich Bibliothek.

    Gruß und Danke

    Helmut

  35. Hallo Sebastian,

    vielen Dank für deine Library.
    Ich spiele zum ersten Mal mit Arduino und einer Olympus E-3 mit deinem Code. Trotz der mehrfachen Forumseinträge über ZoomIn / ZoomOut mit der Olympus bring ich das Arduino nicht damit zu laufen. Gibt es Hoffnung auf eine weitere Version deinerseits?

    Danke für die Info!

  36. Hi Sebastian,
    Thank you for the library. I tried to rewrite the code to make it smaller, faster and prevent interrupts from causing a problem. Each demo sketch compiles to about 100 bytes smaller and should be faster. I cannot really test most of the routines but it is possible that all timings are slightly off because the code is faster. I don’t know if this is consistant with the plans to ‘tighten’ the code but this is my attempt.
    Thanks for all of your work.
    don

    class Canon{
    public:
    Canon(int pin);
    void shutterNow();
    void shutterDelayed();
    private:
    int _pin;
    int _pause;
    };

    // Canon S60/S70/S1IS/G1/G2/G3/G5/G6/Pro90/Pro1
    class CanonWLDC100
    {
    public:
    CanonWLDC100(int pin);
    void shutterNow();
    private:
    int _pin;
    int _pause;
    byte _len;
    unsigned long _seqShutter;
    };

    class Minolta{
    public:
    Minolta(int pin);
    void shutterNow();
    void shutterDelayed();
    private:
    int _pin;
    int _pause;
    byte _len;
    //unsigned long long _seqShutter; // will add approx 600 bytes
    //unsigned long long _seqDelayed; // will add approx 600 bytes
    unsigned long _seqShutter;
    unsigned long _seqDelayed;
    };

    class Nikon{
    public:
    Nikon(int pin); //sets IRLED pin and other private data
    void shutterNow(); //toggles IRLED appropriately
    private:
    int _pin; //pin to use for IRLED
    int _pause; //(1000/freq/2)-4; if freq is 38khz use 38 in calc
    };

    class Olympus{
    public:
    Olympus(int pin);
    void shutterNow();
    void zoomIn(unsigned int pct);
    void zoomOut(unsigned int pct);
    private:
    int _pin;
    int _pause;
    byte _len;
    unsigned long _seqShutter;
    unsigned long _seqZoomIn;
    unsigned long _seqZoomOut;
    };

    class Pentax{
    public:
    Pentax(int pin);
    void shutterNow();
    private:
    int _pin;
    int _pause;
    byte _len;
    unsigned long _seqShutter;
    };

    class Sony{
    public:
    Sony(int pin);
    void shutterNow();
    void shutterDelayed();
    private:
    int _pin;
    int _pause;
    byte _len;
    unsigned long _seqShutter;
    unsigned long _seqDelayed;
    };

    void wait(unsigned long time)
    {
    time += micros();
    while(micros() < = time)
    ;
    }

    void high(unsigned long time, int pause, int pinLED)
    {
    time += micros();

    while(micros() <= time)
    {
    digitalWrite(pinLED,HIGH);
    delayMicroseconds(pause);
    digitalWrite(pinLED,LOW);
    delayMicroseconds(pause);
    }
    }

    Canon::Canon(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 11; //(1000/33/2)-4;//frequency of 33khz use 40 for 40khz
    }

    void Canon::shutterNow()
    {
    cli(); //turns off interrupts

    high(480,_pause,_pin);
    wait(7330);
    high(480,_pause,_pin);

    sei(); //turns interrupts back on
    }

    void Canon::shutterDelayed()
    {
    cli(); //turns off interrupts

    for(int i=0; i<16; i++) {
    digitalWrite(_pin, HIGH);
    delayMicroseconds(_pause);
    digitalWrite(_pin, LOW);
    delayMicroseconds(_pause);
    }

    delayMicroseconds(5360);

    for(int i=0; i<16; i++) {
    digitalWrite(_pin, HIGH);
    delayMicroseconds(_pause);
    digitalWrite(_pin, LOW);
    delayMicroseconds(_pause);
    }

    sei(); //turns interrupts back on
    }

    CanonWLDC100::CanonWLDC100(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 9; //(1000/38/2)-4;//frequency of 38khz use 40 for 40khz
    _len = 32; //_seq is 32 bits long
    // 5 3 8 D F 8 0 7
    _seqShutter = 0x538DF807;//B0101|0011|1000|1101|1111|1000|0000|0111;
    }

    void CanonWLDC100::shutterNow()
    {
    unsigned long mask = 1UL <>= 1;
    }

    high(599,_pause,_pin);

    sei(); //turns interrupts back on
    }

    Minolta::Minolta(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 9; //(1000/38/2)-4;//frequency of 38khz use 40 for 40khz
    //_len = 33; //sequence is 33 bits long but we will send out a
    //standalone leading zero then 32 bits of the rest
    //of the code, this avoids unsigned long longs
    //this avoids about 600 bytes of code

    // 0 5 8 A 7 0 5 0 1
    //_seqShutter = 0x058A70501;//B0|0101|1000|1010|0111|0000|0101|0000|0001
    //_seqDelayed = 0x058A70401;//B0|0101|1000|1010|0111|0000|0100|0000|0001
    _len = 32; //sequence is 33 bits long but we will send out a leading 0
    _seqShutter = 0x58A70501;//B0101|1000|1010|0111|0000|0101|0000|0001;
    _seqDelayed = 0x58A70401;//B0101|1000|1010|0111|0000|0100|0000|0001;
    }

    void Minolta::shutterNow()
    {
    //unsigned long long mask = 1ULL < < (_len - 1); //64 bit mask
    unsigned long mask = 1UL <>= 1;
    }

    sei(); //turns interrupts back on
    }

    void Minolta::shutterDelayed()
    {
    //unsigned long long mask = 1ULL < < (_len - 1); //64 bit mask
    unsigned long mask = 1UL <>= 1;
    }

    sei(); //turns interrupts back on
    }

    Nikon::Nikon(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 8; //(1000/40/2)-4;//frequency of 38khz use 40 for 40khz
    }

    void Nikon::shutterNow()
    {
    cli(); //turns off interrupts

    high(2000,_pause,_pin);
    wait(27830);
    high(390,_pause,_pin);
    wait(1580);
    high(410,_pause,_pin);
    wait(3580);
    high(400,_pause,_pin);

    sei(); //turns interrupts back on
    }

    Olympus::Olympus(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 8; //(1000/40/2)-4;//frequency of 38khz use 40 for 40khz
    _len = 32;
    // 6 1 D E 8 0 7 F
    _seqShutter = 0x61DE807F;//B0110|0001|1101|1100|1000|0000|0111|1111;
    _seqZoomIn = 0x61DEC03F;//B0110|0001|1101|1100|1100|0000|0011|1111;
    _seqZoomOut = 0x61DE40BF;//B0110|0001|1101|1100|0100|0000|1011|1111;
    }

    void Olympus::shutterNow()
    {
    unsigned long mask = 1UL <>= 1;
    }

    sei(); //turns interrupts back on
    }

    void Olympus::zoomIn(unsigned int pct)
    {
    unsigned long mask = 1UL <>= 1;
    }
    wait(40000);

    if (pct>100) pct = 100;

    pct = (pct*52)/100 + 1;

    for (int i=1; i {
    high(9000,_pause,_pin);
    wait(2000);
    high(500,_pause,_pin);
    wait(96000);
    }

    sei(); //turns interrupts back on
    }

    void Olympus::zoomOut(unsigned int pct)
    {
    unsigned long mask = 1UL <>= 1;
    }
    wait(40000);

    if (pct>100) pct = 100;

    pct = (pct*70)/100 + 1;

    for (int i=1; i high(9000,_pause,_pin);
    wait(2000);
    high(500,_pause,_pin);
    wait(96000);
    }

    sei(); //turns interrupts back on
    }

    Pentax::Pentax(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 9; //(1000/38/2)-4;//frequency of 38khz use 40 for 40khz
    }

    void Pentax::shutterNow()
    {
    cli(); //turns off interrupts

    high(13000,_pause,_pin);
    wait(3000);

    for (int i=0;i<7;i++){
    high(1000,_pause,_pin);
    wait(1000);
    }

    sei(); //turns interrupts back on
    }

    Sony::Sony(int pin)
    {
    pinMode(pin, OUTPUT);
    _pin = pin;
    _pause = 8; //(1000/40/2)-4;//frequency of 38khz use 40 for 40khz
    _len = 20;
    // 7 4 7 8 F
    _seqShutter = 0x7478F; //B1011|0100|1011|1000|1111;
    _seqDelayed = 0xEC78F; //B1110|1100|1011|1000|1111;
    }

    void Sony::shutterNow()
    {
    unsigned long mask = 1UL << (_len - 1); //32 bit mask

    cli(); //turns off interrupts

    for (int j=0;j>= 1;
    }
    wait(10000);
    }

    sei(); //turns interrupts back on
    }

    void Sony::shutterDelayed()
    {
    unsigned long mask = 1UL < < (_len - 1); //32 bit mask

    cli(); //turns off interrupts

    for (int j=0;j>= 1;
    }
    wait(10000);
    }

    sei(); //turns interrupts back on
    }

  37. mega tolle idee!
    leider muss ich weiterhin einen servo an meine kamera binden…
    könnte man den code denn so abändern, dass das ganze auch mit meiner fuji s2000 hd funktioniert?! kann ich das selbst machen und falls dem so ist, woher hast du die schaltzeiten bekommen?!

    lg j

    • Hallo,

      das kannst Du natürliuch! Ich habe oben im Text geschrieben woher ich all die Timings bekommen habe. Außerdem hat RIm am 18. Juli einen Link gepostet in dem es unzählige weitere Timings gibt.
      Wenn Du etwas zu Fuji gefunden hast, würde ich mich freuen das in die Bibliothek einbauen zu können.

      Gruß

      Sebastian

  38. For my Canon EOS ti1 (d500 in Europe) I noticed that you need to send only one signal for it to work. If you do a simple if condition with a pushbutton for exemple it will not work because the controller will send many signals to your camera. A simple delay fix the issue.
    This will NOT work:

    void loop() { 
      if (digitalRead(pushBUTTON1) == HIGH) {
          t1i.shutterNow();
      }
    }

    This will work:

    void loop() { 
      if (digitalRead(pushBUTTON1) == HIGH) {
          t1i.shutterNow();
          delay(1000);
      }
    }
  39. Hi Sebastian,

    cooles Projekt. Ich habs nachgebaut und mit einer regulären LED ausprobiert ob es funzt. Bei der IR Led hab ich mit meinem Handy geschaut und gesehen, aha, es pulst. Jedoch will meine Kamera EOS 350D nicht auslösen, woran könnte es liegen ??
    Denn hier im Thread hat ja auch schon jemand es mit einer 350D geschafft. Ich weiss nicht was ich falssch gemacht haben könnte. Vielen Dank für Hilfe.

  40. Super Projekt. Ich hab eine IR-LED aus einer alten Medion-Fernbedienung genommen, einen 1000Ohm Widerstand und es ging fast problemlos. Ich musste erst den IR-Empfänger auf der Canon 450D suchen (ist das kleine schwarze Fenster im Griff unter dem Auslöser). Die Reichweite beträgt über 20cm.

    Gruß Gunnar

  41. Just tried your sketch on my Sony Alpha 580 and it works like a charm.

    Great work. I now have to work on a way to have different intervals and be able to switch. Also have it battery powered. Will use it for time lapse photography.

    cheers

  42. Greetings! I’ve just written and tested class CanonWLDC100 for you library, which adds possibility to use IR transmitter for Canon WL-DC100 remote for Canon next cameras: S60/S70/S1IS/G1/G2/G3/G5/G6/Pro90/Pro1

    class CanonWLDC100{
    public:
      CanonWLDC100(int pin);
      void shutterNow();
    private:
      int _pin;
      int _freq;
    };
    
    CanonWLDC100::CanonWLDC100(int pin)
    {
      pinMode(pin, OUTPUT);
      _pin = pin;
      _freq = 38;
    }
    
    void CanonWLDC100::shutterNow()
    {
      bool _seq[] = {
        0,1,0,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1
      };
      high(9042,_freq,_pin);
      wait(4379);
    
      for (int i=0;i&lt;sizeof(_seq);i++){
        if (_seq[i]==0){
          high(612,_freq,_pin); 
          wait(512);
        }
        else{
          high(612,_freq,_pin);
          wait(1621);
        }
      };
        high(599,_freq,_pin); 
    }

    using:

    CanonWLDC100  D3(8);
    
    void setup(){
    }
    
    void loop(){
      D3.shutterNow();  delay(5000);
    }

    Thanks for the library!

    ImaRH.

  43. I’ve just managed to get my Canon XSi (EOS 450d) shooting remotely with this code, but I would like to point out one little thing with IR led’s, for those who are having problems with getting their rig to work. At least in the case of the IR LED I used, you basically have to aim the head of the LED directly at the IR sensor on your camera. If it is orthogonal to it, it will probably not trigger the shutter. Apparently my Arduino was sending out signals correctly all this time while I was tinkering with the timings thinking something was off. I can’t speak for other cameras but on the XSi the remote sensor sits directly below the shutter button. Also, I used a 850nm IR LED over a 100 Ohm resistor.

    Anyways, I’m really glad I found this little library, it has made my evening. Danke schoen!!

  44. i’m a student in informatic engineering in Italy,
    i’d like to implement something (just a little intervalometer) in hardware, with VHDL language.
    it’s a project for university, NON COMMERCIAL.
    i’d like to talk a bit with you…
    where did you found documentation or datasheet to know how “talk” to camera and timing?
    could you help me? please…
    thanks giacomo

  45. Hallo Sebastian,

    Ich kan bestetigen das deine “multi camera ir control” functioniert mit meine alte Minolta F300 camera.
    Ich habe doch probleme um die intensitat meine IR led zu optimieren. Ich habe schaltung 1 gebraucht doch solte schaltung 2 ausprobieren wollen als ich wusste welche transistor ich gebrauchen kan?

    Schone grusse aus Holland!
    Hans

  46. Hello Sebastian. Прошу прощение, что не пишу на вашем языке. К сожалению я не знаю не Немецкий и не Английский. Но обязан сказать вам, что очень вам благодарен. Благодаря вам я смог реализовать свою идею управление Sony NEX5 через ИК-порт с помощью Arduino Всё очень хорошо работает: http://www.youtube.com/watch?v=-Af50zDC9xU И теперь я смогу собрать ещё один Kap Rig: http://kitevlad.ucoz.ru/forum/14-43-2603-16-1298625439 с применением ИК-дида.

    Sebastian, огромное вам спасибо!

    Google ->>

    “Hallo Sebastian. Ich schreibe nicht in Ihrer Sprache entschuldigen. Leider weiß ich nicht, kein Deutsch und kein Englisch. Aber muss Ihnen sagen, dass sehr dankbar. Dank euch konnte ich seine Idee der Verwaltung Sony NEX5 realisieren Infrarot mit Arduino Alles funktioniert sehr gut: http://www.youtube.com/watch?v=-Af50zDC9xU Und jetzt kann ich sammeln anderen Kap Rig: http://kitevlad.ucoz.ru/forum/14-43-2603-16-1298625439 mit Infrarot Dida.

    Sebastian, ich danke Ihnen sehr!”

    • Hallo!

      Das ist ein tolles Projekt! Ich hoffe irgendwann meine Kamera auch mal an meinen 8m² Rokkaku hängen zu können… ;-)

      A very nice project! I hope I can put my camera once to my 8m² Rokkaku… ;-)

      Это большой проект! Я надеюсь, что в какой-то момент моя камера иногда может висеть на моем 8 м ² Rokkaku.

      Gruß

      Sebastian

  47. Hallo Sebastian,
    bin gerade über deine Seite gestolpert weil ich genau nach einer Möglichkeit suche meine Nikon CoolPix P6000 mit Intervalen auszulösen die kleiner sind als ihre eigenen.

    Habe die Bibliothek getestet und was soll ich sagen sie funktioniert ;) aber leider nur an meiner Nikon D90 meine CoolPix P6000 interesiert das Signal kein Stück :( habe auch mal Andere Bibliotheken von vonRoth getestet D90 “ja” P6000 “nein”

    Was ich nicht verstehe ich kann beide mit der originalen ML-L3 auslösen ich dachte Nikon benutzt den gleichen Code.

    Kennst du das Problem und hast eine Lösung parat?

    Gruss Marcus

    • Hallo Marcus,

      ich kenne das Problem nicht & leider habe ich auch keine Lösung. Ich könnte mir höchstens vorstellen, dass evtl. der originale Auslöser zwei unterschiedliche Signale sendet… Falls ich noch was raus finden sollte sage ich Bescheid. Wenn Du es noch hin bekommst bitte auch! :-)

      Gruß

      Sebastian

  48. Many thanks for your good work (and all those that have assisted).
    I am a newcomer and I find that when I try and use the Canon example Arduino comes up with the error message …………….’Canon’ does not name a type.
    I have simply opened up the Canon example from the Arduino Sketchbook. I am obviously doing something WRONG !!
    Thanks again John W

  49. Hallo Sebastian,
    genau wie bei Thorsten funktionierts bei mir auch nicht, in meinem Fall mit einer Canon 550D.
    Funktion der LED ist gegeben. Anscheinend ist hier eine andere Sequenz gefordert. Der für diese Kamera angebotene Fernauslöser ist auch für folgende verwendbar (siehe http://www.riccos-camera.de/product_info.php/products_id/7529?osCsid=43850bbf0326f1a4aadcdd383ce103c2)
    * Canon EOS 60D
    * Canon EOS 550D
    * Canon EOS 450D
    * Canon EOS 500D
    * Canon EOS 7D
    * Canon EOS 5D Mark II
    Auf gleicher Internetseite gibt es auch eine Angabe für welche Kameras die RC-1 Fernbedienung funktioniert.
    Vielleicht ist hier jemand unterwegs, der die RC-6 Sequenz kennt oder ausmessen kann.
    Gruß Reinhard
    Reinhard

  50. Hallo,
    warum nimmst Du bei der Treiberschaltung “optional” eine Emitterschaltung die hat doch eine 180°Phasendrehung (Inverter) und ist als Spannungsverstärker vorgesehen, Du willst doch den Ausgang entlasten da eignet sich die Kollektorschaltung besser. Ansonsten scheint mir der Arbeitspunkt mit 2×220 Ohm etwas willkürlich…

    Bei den Nikons kann man doch auch den Focus einstellen, das wär doch auch an Sich ganz nett.
    Wenn man jetzt noch über einen Optokoppler ein Blitzgerät abfeuern könnte ware das ganz cool.

    Horst

    • Hallo Horst,

      bei dem ersten Teil Deiner Frage würde ich mir gern etwas Zeit nehmen. Woher hast Du die 2×220Ω? Von den Farbringen der Verkabelung? Das ist nur ein Serviervorschlag ;-)

      Der zweite Teil fällt mir schon leichter. Ich kenne keine Nikon DSLR deren Fokus ich über IR steuern könnte.

      Gruß

      Sebastian

    • Hallo Horst

      Emitterschaltung und Collektorschaltung sind Schaltungen in denen der Transistor im Proportionalbereich verwendet wird und die Ausgangsspannung proportional der Eingagsspannung ist.

      Die Schaltung die Sebastian verwendet ist eine Treiberschaltung bei der der Basisstrom den Transistor voll durchschaltet und darum die Collektor – Emittorspannung klein ist. Der Transistor geht in Sättigung und der Collektorstrom ist durch die Last (LED mit Vorwiderstand) begrenzt und nicht durch den Transistor. Diese Schaltung negiert das Signal nicht. Die LED leuchtet, wenn Spannung auf die Basis gegeben wird.

      http://www.elektronik-kompendium.de/sites/slt/0208031.htm
      http://www.elektronik-kompendium.de/sites/slt/1201131.htm

      Der Vorwiderstand an der Katode der LED wird so gewählt, daß der Strom durch die LED auf einen Werte begrenzt wird daß die Verlustleistung den maximal zulässigen Wert der LED nicht überschreitet. Kurzzeitige Ansteuerung mit großen Pausen erlauben einen höheren Strom.

      Der Strom errechnet sich aus dem Spannungabfall über den Widerstand und den gewälten LED-Strom. Der Spannungabfall über die IR-Led ist ca 1,4V. Bei 220 Ohm fließen ca 16mA. Man könnte auch Widerstands-Werte bis hinunter zu 10 Ohm verwenden. Dann fließen ca 350mA und die Reichweite erhöht sich. Die meisten IR-LEDs verkraften diesen Wert kurzzeitig. Eine Kontrolle im Datenblatt der LED schadet aber nicht.

      Der Widerstand an der Basis ist zum Schutz des Arduino-Ausganges. Der Wert ist nicht kritisch. Es muß nur sichergestellt werden, daß der Bassistrom groß genug ist, um den Transistor voll durchzusteuern, da ansonsten die Verlustleistung des Transistors zu groß wird und unter Umständen der Transistor thermisch zerstört würde.

      Viele Grüße Uwe

  51. Hello Sebastian,

    I spent more time today experimenting with the Olympus pulse train, and found the allowable limits for each pulse and null by trial and error. I also added two functions, zoomin() and zoomout(), to control the camera’s zoom function. The functions are passed an unsigned integer value which represents the percentage of zoom movement requested. This value determines the number of times the trailing pulse train is repeated.
    The code for zoomout is identical except for the bool sequence and the percentage coversion factor, which is 70 rather than 52.

    Here is the code:

    void Olympus::shutterNow()
    {
      bool _seq[] = 
      {0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1};
      high(9000,_freq,_pin);           // 7100-? allowable
      wait(4500);                      // 4000-5200
      high(500,_freq,_pin);            //  380-850
      for (int i=0;i<sizeof(_seq);i++){
        if (_seq[i]==0){
          wait(500);                   //  300-700
          high(500,_freq,_pin);        //  380-850
        }
        else{
          wait(1500);                  // 1400-1900
          high(500,_freq,_pin);        //  380-850
        }
      }
    }
    void Olympus::zoomin(unsigned int pct)
    {
      bool _seq[] = {
        0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1    };
      high(9000,_freq,_pin);
      wait(4500);
      high(500,_freq,_pin);
      for (int i=0;i<sizeof(_seq);i++){
        if (_seq[i]==0){
          wait(500);
          high(500,_freq,_pin);
        }
        else{
          wait(1500);
          high(500,_freq,_pin);
        }
      };
      wait(40000);
      if (pct>100) pct = 100;
      pct = (pct*52)/100 + 1;
      for (int i=1; i<pct; i++)
      {
        high(9000,_freq,_pin);
        wait(2000);
        high(500,_freq,_pin);
        wait(96000);
      }
    
    }
    void Olympus::zoomout(unsigned int pct)
    {
      bool _seq[] = 
                 {0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1 };
      high(9000,_freq,_pin);           // 
      wait(4500);
      high(500,_freq,_pin);
      for (int i=0;i<sizeof(_seq);i++){
        if (_seq[i]==0){
          wait(500);
          high(500,_freq,_pin);
        }
        else{
          wait(1500);
          high(500,_freq,_pin);
        }
      };
      wait(40000);
      if (pct>100) pct = 100;
      pct = (pct*70)/100 + 1;
      for (int i=1; i<pct; i++)
      {
        high(9000,_freq,_pin);
        wait(2000);
        high(500,_freq,_pin);
        wait(96000);
      }
    }
    

    Regards,

    Steve

  52. The program failed tests with an Olympus C-750. I wrote a quick program to trap pulse train sequences from an Olympus RM-1 and captured the following sequence (values are in microseconds):

        +8976,-4376,+624,-488,+600,-1612,+628,-1584,+624,-488,+628,-488,+600,
        -488,+624,-488,+628,-1588,+620,-1612,+600,-1608,+624,-484,+596,-1612,+628,-1588,
        +620,-1612,+600,-492,+624,-488,+628,-1580,+620,-488,+624,-492,+600,-488,+624,-48
        8,+628,-492,+592,-488,+628,-488,+628,-484,+600,-1608,+620,-1588,+628,-1608,+600,
        -1612,+624,-1584,+624,-1608,+604,-1612,+620,-39444,+8980,-2160,+624,-95152,+8952
        ,-2164,+620,-95160,+8972,-2164,+596,-95156,…

    Where “+” indicates a pulse, and “-” indicates null. The +89xx,-21xx,+6xx,-95xxx at the end is repeated as long as the remote’s shutter button is pressed.

    The major differences between this pulse train and the program’s pulse train are:

    1. The start pulse is almost 9 ms, rather than 3.8 ms long. This is probably the crucial difference.
    2. The “zero” nulls are slightly less than 500 us.
    3. The “ones” nulls are 1600 us long, rather than 1500 us.
    4. The pulses between the nulls are 600 us, rather than 500.

    I modified the multiCameraIrControl.cpp program as follows, with the literal values from the test results, and was successful in triggering the camera:

    void Olympus::shutterNow()
    {
      bool _seq[] = {
        0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1    };
      high(8972,_freq,_pin);
      wait(4384);
      high(624,_freq,_pin);
      for (int i=0;i<sizeof(_seq);i++){
        if (_seq[i]==0){
          wait(488);
          high(600,_freq,_pin);
        }
        else{
          wait(1600);
          high(600,_freq,_pin);
        }
      };
    }
    

    Thank you for sharing this program. I am constructing an Arduino-based camera controller, and this has been very helpful!

    - Steve

  53. Hi,
    also so ganz hab ich das hier noch nicht durchschaut:
    Es gibt drei Files:
    - unter Examples:Canon.pde
    - multicameraircontrol.h
    - multicameraircontrol.cpp

    Öffnen kann ich nur die pde datei, die anderen beiden nur mit einem Editor.
    Wie genau muss ich die denn nun verknüpfen oder kopieren?
    Ich möchte nur mit meiner IR LED meine canon 450d ansprechen und auslösen.
    Freu mich über Hilfe

    Gruß

    • Hallo Thorsten,

      im Grunde sehr einfach, Du hast nichts mit den einzelnen Dateien zu tun. Library installieren und Beispiel laden. Folgend aber die einzelnen Schritte:

      1. Die .zip Datei herunter laden
      2. den Ordner “multiCameraIrControl” in den libraries Ordner entpacken. Unter Windows meist: Eigene Dateien/Arduino/libraries
      3. Arduino (die IDE) neu starten
      4. in Arduino, File > Examples > multiCameraIrControl > Canon, aufrufen
      5. die Sketch hochladen
      6. IR LED mit Vorwiderstand anschließen
      7. die Kamera in den Fernauslöser Modus schalten
      8. Fertig :-), jetzt sollte im Intervall Bilder aufgenommen werden

      Bei Fragen bitte nochmal melden, natürlich gern auch wenn es funktioniert hat!

      Gruß

      Sebastian

      • Hallo Sebastian,
        Sketch konnte ich jetzt so problemlos hochladen.
        Meine 450d wird allerdings nicht ausgelöst. => sollte aber damit funtionieren oder?

        - Cam ist im Selbst/Fernauslösermodus
        - IR funktioniert, hatte ich durch den Sucher meiner Kompakten getestet (Mit dem Blink Sketch, hier sind die Zeiten scheinbar so kurz, dass ich nix sehe)
        - Kanns am falschen WIderstand liegen? Dass die IR beispielsweise zu schwach ist weil der Widerstand zu hoch? Problem ist, dass ich den genauen OHM Wert nicht berechnen kann, da ich die genauen V und mA Werte nicht von der Reichelt site finde, diese IR LED hab ich : http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A54;GROUPID=3045;ARTICLE=6832;START=0;SORT=artnr;OFFSET=16;SID=314gkqFawQAR8AAAywayYf9390196e81ea05f2096e628fc5497f4
        Vielleicht kannst mir ja helfen :)

        Gruß
        Thorsten

        • Moin Thorsten,

          das Datenblatt findest Du auf der von Dir genannten Seite unter Datenblatt.

          Dort steht, dass die typische Spannung 5V & 150mA beträgt. Wenn Du die IR LED ohne Transistor anschließen möchtest, würde ich einen möglichst kleinen Vorwiderstand von nicht weniger als 100Ω verwenden um den AtMega nicht zu überlasten.

          Wenn Du aber schon sagst, dass Du die LED in Deiner Kompakten sehen kannst ist eigentlich alles OK. Du kannst noch versuchen die LED direkt vor den Empfänger zu halten. Ansonsten überprüfe noch mal ob Du im richtigen Modus bist. Ich habe selbst keine Canon, meine aber zu wissen, dass es einen Unterschied zwischen Selbstauslöser & Fernauslöser gibt.

          Viel Erfolg & gern wieder melden.

          Gruß

          Sebastian

          • Hi,
            ich kriegs leider nicht hin. Hab leider keinen 100ohm Widerstand, aber habs mit 68 und 240 und ohne getestet. Das IR Signal seh ich nur bei BLINK, ich vermute in deinem Sketch ist das nicht sichtbar weil sehr kurze Zeiten???
            Hab auch den Sketch mal geändert (Canon D5(13); un Canon D5(9); => versteh das eh nicht, deine grafik legt die LED ja an Ausgang 9 an, dein Sketch an 13) egal, beides geht nicht.
            Vermutlich ist mein Empfänger an der Cam auch defekt, kann das leider nicht testen.
            Ärgerlich, hätt das so gern mal ausprobiert.
            Dir jedenfalls danke. Und falls hier noch jemand ist, der die 450d hat und mir nen Tipp geben kann…wäre nett!
            Gruß

            • Hallo Thorsten,

              mmh hier noch in paar Gedanken:

              • Du siehst die IR vermutlich wirklich aufgrund der kurzen Zeit nicht
              • Die Pin Nutzung von Beispielcode und Schaltplan ist nicht konsistent, werde ich anpassen. Du kannst jeden Pin benutzen den Du möchtest. Musst ihn halt über die Funktion z.B. Canon([Pinnummer]) deklarieren
              • Ich vermute nicht, dass Dein IR Empfänger hinüber ist. Hardware ist zu 99% nicht Schuld am nicht-funktionieren, sondern es sind meist Anwenderfehler (das kann auch eine falsche Wellenlänge der IR LED sein)
              • Was mir noch könnte ist, dass die Wellenlänge der LED nicht passt. Wobei ich untershiedlichste LEDs bereits ohne Probleme benutzt habe

              Das war’s jetzt leider erst mal mit meinen Ideen, sorry.

              Gruß

              Sebastian

              • Hallo Sebastian,

                also ich habe jetzt mehrere IR LEDs getestet mit verschiedenen Wellenlängen. Mit keiner hat es geklappt.
                Die IR LED seh ich mit meinem iPhone ganz schwach alle 5 sek blinken, also da sollte alles stimmen.
                Es kann also nur daran liegen, dass die Frequez nicht für die 450d geeignet ist oder dass tatsächlich mein Empfänger defekt ist.

                Sehr schade für mich

                Viele Grüße
                Thorsten

                • Hi Thorsten,

                  Micha (ganz unten) und Reinhard (02.02.11) haben ähnliche Probleme. Mit einer EOS350D funktioniert die Library allerdings offensicht. Vermutlich wurde bei den aktuellen Modellen am Timing was geändert… Mal sehen ob ich das irgendwie noch in die Bibliothek eingebaut bekomme…

                  Sebastian

      • Hallo Sebastian,

        ich habe (weil Anfänger) die Sketch erst mal nicht zum laufen gebracht. Jetzt funktionierts. Fehler war, dass MultiCameraIrControl.h in dem selben Verzeichnis stehen musste wie Olympus.pde. Ich benutze eine Olympus E 510.

        Zur Zeit versuche ich das Programm abzuändern um timelapse-Fotografien zu machen. Gedacht habe ich mir, über einen Taster von 1 bis 5 zu zählen und dann dadurch fünf verschiedene Zeitintervalle auszulösen. Das bekomme ich aber nicht hin. Kann jemand helfen, wo ich z.B. die Zeilen aus dem Beispiel ButtonStateChange einfügen muss.

        Danke und Gruß
        Harald

        • Hallo Harald,

          wie die Library zu installieren ist, sollte ich vielleicht nochmal im Text beschreiben. Ansonsten daran halten wie ich es Thorsten am 22.01.11 weiter unten bereits sehr ausführlich erklärt habe.
          Heut hab ich leider keine Zeit für die weitere Beantwortung Deiner Frage, melde mich aber wieder.

          Gruß

          Sebastian

  54. mhm vllt mach ich ja was falsch aber ich bekomm da immer die fehler
    C:\…\arduino-0022\libraries\multiCameraIrControl\multiCameraIrControl.cpp: In member function ‘void Sony::shotDelayed()’:
    C:\…\arduino-0022\libraries\multiCameraIrControl\multiCameraIrControl.cpp:176: error: ‘_seq’ was not declared in this scope

  55. Hier der funktionierende Code für Sony :

    void Sony::shotNow()
    {
      bool _seq[] = {
        1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,1,1,1,1  };
    for (int j=0;j<3;j++) {    // muß 3mal ausgeführt werden
      high(2320,_freq,_pin);
      wait(650);  // Pause hat gefehlt
      for (int i=0;i<sizeof(_seq);i++){
        if (_seq[i]==0){
          high(575,_freq,_pin);
          wait(650);
        }
        else{
          high(1175,_freq,_pin);
          wait(650);
        }
      }
      delay(10); // Verzögerung zwischen den Commands
      }
    }
  56. Hi,
    I was trying to get my dSLR (Canon EOS400) work with this library, as a start point for the bigger project, but.. it didn’t work (I’ve tested) minimal version now. What is your suggestion for R1 resistor? I’ve tried with 100Ohm. I don’t know why it’s not working, but I will try to make it work. I’ve to study your library to check. I’ve tested IR led, it’s working fine (video + slower blinking, second on, second off, pin 13). Is there any setup in Camera which should be done..? Thank you in advance.

    • Hello Michal,

      you have to switch into the RC mode by using the timer button(the top right of the screen). Than you should see a RC symbol on the screen.
      The value of R1 depends on your LED. But if your LED has a voltage drop of 1.5V and a current of less than 50mA, 100 Ohm is a good choice.

      Arduino multiCameraIrControl Canon 400d

      Please let me know if you get it work.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>