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:
Canon test, thanks FrankOlympus test, thank you StevePentax test, thx AndriesMinolta test, thank you HansSony test, thanks to Walter- get the Code more tight
- Got more functions, zoom and more
Aufgabenliste:
Canon bestätigen, danke FrankOlympus testen, Danke sehr StevePentax testen, danke AndriesMinolta testen, mit Dank an HansSony testen, Dank an Walter- Code verschlanken
- Fehlende Funktionen wie Zoom usw. implementieren
Partlist:
- Arduino Diecimila, UNO, or some else
- IR LED
- Resistor
- Camera: Canon, Nikon, Olympus, Pentax, Sony or Minolta with IR sensor
Stückliste:
- Arduino Diecimila, UNO, einen anderen
- IR LED
- Widerstand
- Kamera: Canon, Nikon, Olympus, Pentax, Sony oder Minolta mit IR Sensor
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:

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.





Ich habe getested op ich mein pentax dslr bedienen konte mit ein Gentled + arduino.
<a href="http://www.astapix.be/forum/IMGP8675_1000.jpg
Man kan die camera bedienen mit ein servo command
Der Gentled <a href="http://www.gentles.ltd.uk/gentled/
Natürlich ist deine Library viel besser, danke
I tested “Canon EOS-M + OSI5FU5111C-40 + Arduino nano(ATmega328)”.
No problem. Thank you very much.
Hi
I captured the “Aputure” v-remote IR signal. Canon video start-stop.
Capture soft: Raw IR decoder sketch!
ON OFF ON
1100 4440 1080 (video)
1100 6420 1060 (picture)
I tested. on D600 video mode not working. D5 ok.
Thank you for sharing Jozsef!
Works with a Sony Alfa 330 ! Need to set the camera in IR command mode, then point the led to the IR receiver (in the hand-grip). Thx for this awesome library;
sehr coole library!
funktioniert perfekt für meine nex5!
vielen dank, sebastian.
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
I have confirmed that the bootloader must be 16mhz for this to work, I am sure that the library can be modified but a work around is to use a chip running a 16mhz bootloader. Thanks for your help.
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
Hello,
OK. Just connect the GND pin of your intervalometer to GND of the Arduino and the other pin to a digital pin. read that pin, if it is high, trigger the LED.
I hope I could help.
Sebastian
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
Hello Duffy,
do I understand you right, that you would like to detect the shutter from one camera and use this library to take a picture with another camera?
Sebastian
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
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
Hi John,
can you upload any other code to the ATTiny which include pin0?
You can open the files *.cpp and *.h in the library folder for a closer look how the code works.
Sebastian
nice job.
It took me longer to find the IR receiving spot at the Sony A380, than setting the whole thing up…
Thanks!!
Boen
Hello!
Excellent work! I’m using your library on my project:
https://github.com/vegos/CameraTrigger
Thank you again!
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
Hello Leszek,
that’s right.
I hope you will enjoy the library
Regards
Sebastian
Vielen Dank!
Excuse my basic question, but what are the IR commands? I assume that it is a feature that must have the camera. But I searched it in google and nothing appears but the infrared cameras
Hi Ignacio,
on some cameras you can control different functions (shutter, zoom, …) with a remote control (like this one). This library can replace such a remote control…
I hope this is helpful for you,
Sebastian
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
To toggle focus on Pentax:
13 ms high3 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.
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);
}
—
ho! and i’m using and Sony Nex-5n!
Please supply Visual Basic source code for the library. My project requires Visual Basic, not the C++ language.
Hello Steffan,
this code is everything I have.
But I hope it is easy readable, so it will be fast translated.
Best regards
Sebastian
It really works perfectly with my Nikon D80…
If you need any kind of help with this project, please let me know, I’ll try to help !!
nice library!!!! thank you guys for the hard works, keep it rolling!!!!
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
Hello, I have discovered the IR code for Sony video recording mode toggle. This has been tested as working on Sony Nex-5n: 0,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,1,1,1,1
Hi,
very nice!
How would you implement it into the library, what name would you use?
videoToggle()?Sebastian
Hi.
Yes, that is how I implemented it. Thank you for the library.
void Sony::videoToggle() { 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); } }I am having trouble getting this working with the Pentax X-5. Any idea if this should work on the X-5 or only the DSLRs?
Thanks!
Hello Andrew,
I didn’t own a Pentax so I can’t try it. But if the cameras are using the same protocol it should work. Maybe someone else is using the library for your X-5 successful.
Sebastian
Got it working with the optional set-up! I had a bad jumper cable.
Thanks!
Hello Sebastian,
Thank you for the library. I got it working within the hour, and that for my first Arduino project
.
As a beginner I needed the most time figuring out how to load a library. Here is how: http://arduino.cc/en/Guide/Libraries . Maybe ‘How to load a library’ could be part of your documentation? It might help others.
Thanks you Sebastian
it work for me perfect with a sony nex5
http://www.youtube.com/watch?v=liCniXu4chM&feature=youtu.be
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
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
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….
Works with my sony nex 5n but was not able to get it to work with the canon 7d
hello,
I think you have a misstake in the schema. I think that the resistore come before the ir led no?
It’s not vss(Pin out) -> resistor -> ir led -> gnd?
thanks GTKOW
Hello,
it doesn’t matter where to place the resistor. The resistor will limit the current on any side of the LED.
Sebastian
I tried to use the provided example for Pentax, but when compiling it gives me the following error message:
What am I doing wrong?
Many thanks.
Hello Tom,
did you maybe copied the library into two different directories?
Sebastian
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.
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
Thanks Martijn!
As I wrote in the text above I found all timings in a forum. But somewhere in the past I found a very good website where somebody had a arduino project which could do what you would like to do. But I cant find it right now…
Best regards
Sebastian
Martijn, you can look at this site
http://www.ladyada.net/learn/sensors/ir.html
Hi.
Anyone tested with the Olympus SP-565 UZ?
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.
Thanks for the tips
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 Ewald,
was sagt Dir denn die Fehlermeldung? Sie sagt, dass etwas in einem Bereich (loop()) nicht deklariert ist. Kannst Du Dir vorstellen was das sein könnte?
Wenn Du es nicht hin bekommst, gern nochmal melden.
Viele Erfolg und Spaß
Sebastian
Ach nein wie blöd
Fange grad erst an mit Arduino..
Danke !!
Sebastian:
How do I change the range of allowable interval for y Nikon to say 300K to 1200K miliseconds?
Thanks,
Scott
Hello Scott,
sorry, but which interval do you mean?
Sebastian
Hallo Sebastion
ich würde gerne mit dem Code von Don K arbeiten.
Mich interessiert die Sony Klasse. Würde da gerne erweitern.
Gibts die Datei irgendwo mit der korrekten Formatierung?
Gruss
Erich
Hallo Erich,
ich habe die Änderungen noch nicht eingebaut. Den Code von Don K werde ich an Dich weiterleiten. Falls Du dann Erfolg hast, würde ich mich freuen den neuen Code auch zur verfügung gestellt zu bekommen.
Gruß und viel Erfolg
Sebastian
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
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.
Hello David,
thanks for your hint. Until now nobody has reported about that possibility.
Best regards
Sebastian
Moin,
sag mal, was genau für IR-LEDs nimmt man da? Gibt ja doch ein paar.
Gruß
Peter
Hallo Peter,
ich hatte mir mal unterscheidliche Wellenlängen bestellt. Ich habe bei kurzen Distanzen keine Unterschiede festgestellt und bisher hab ich keine LED gesehen bei der es nicht funktioniert hat. Das mag bei großen Distanzen anders sein. Es hängt ja auch von der Kamera ab.
Ich hoffe Dir mit der schwammigen Antwort geholfen zu haben.
Grüße
Sebastian
mhh hab 950er als 5mm da. Probier ich es halt erstmal damit:)
Danke
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.
Hi Nicolai,
tolles & gut dokumentiertes Projekt hast Du!
Kennst Du schon den Photoduino? (http://www.photoduino.com/)
Gruß
Sebastian
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
Hallo Sebastian,
vielen Dank für deine neue Version. Funktioniert perfekt mit der Olympus e3 (Shutter, ZoomIn und ZoomOut).
Hannes
Hallo Hannes,
das freut mich zu hören!
Was hast Du geändert dass das Zoomen inzwischen funktioniert? Am 11. Nov. hattest Du ja noch Probleme.
Gruß
Sebastian
Hallo Sebastion,
ich benutze ZoomOut, ZoomIn im Bulb-Modus; damit kann ich nun eine eigene Belichtungszeiten zur HDR – Foto – Erstellung machen.
Dank deiner neuer Version.
Gruß
Hannes
Hi,
. Vielleicht hilfts ja dem einen oder anderen.
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
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); } }Hallo Viktor,
vielen Dank für den Hinweis!
Ich habe den Fehler in der Bibliothek korrigiert & steht nun in der Version 1.7 zur Verfügung.
Gruß
Sebastian
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
Hallo Helmut,
ich bekomme den Fehler auch bei anderen Bibliotheken. Dazu habe ich folgendes gefunden.
Quelle: http://arduino.cc/blog/2011/10/04/arduino-1-0/
Am schnellsten änderst Du eben die entsprechende Stelle in der Bibliothek oder wartest bis ich das eingebaut habe & dann hier zur Verfügung stelle. Das wird voraussichtlich morgen was.
Gruß
Sebastian
Hallo Helmuth,
in der Version 1.6 ist die Bibliothek nun Arduino 1.0(und abwärts) kompatibel.
Viel Spaß
Sebastian
Hallo Sebastian,
vielen Dank, es funktioniert, die EOS 5D Mark II klappert jetzt vor sich hin.
Gruß
Helmut
Hai Sebastian, your program Multi Camera IR Control for K7 also works fine with a Pentax K10 . You can put it on your list and thanx. I had it working within no time.
Regards Ewoud
Hello Ewoud,
nice to hear that!
Sebastian
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!
Hallo Hannes,
ich besitze keine Olympus & bin daher auf Feedback anderer angewiesen.
Funktioniert denn das Auslösen?
Gruß
Sebastian
Hallo Sebastian,
die Auslösung funktioniert problemlos.
Ich würde aber gerne die Tasten “W” sowie “T” (ZoomIn, ZoomOut) für die Steuerung der Belichtungszeit im Bulb-Modus vervenden.
Der Code von Don K. produziert bei mir nur Fehler und ich habe keine Idee wie ich das Programm korrekt zum Laufen bringe.
Danke
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
}
Hello Don,
I’m very impressed of your work! A big thank you to you!
I hope I will understand your changes. In a few weeks I hopefully will have more time to implement all the work from you and the others. Your code will lead to ver.2 of the library.
Have a nice Day!
Sebastian
Sebastion,
The code does seem destroyed. I don’t know how to upload/attach the files or create a code box.
I am happy to share if I can figure out how. I wouldn’t mind mailing the code to someone
for posting.
The code has been destroyed by html encoding (less than character is now <)
How can we get working code?
Thanks for the hint. I have changed the endcoding, now it looks ok.
The code looks better but I guess things like
for (int j=0;j>= 1;
}
will “confuse any compiler”?
( Inside method: void Sony::shutterDelayed() )
Could Don have a look at it?
The posted code was destroyed by the html formatting. I have just send my original files to Sebastian for posting.
Sorry for the confusion.
don
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
hallo
ich hab lange nach soetwas gesucht. DANKE !!!!
Funktioniert super mit meiner Sony alpha 380.
Weiter so …
Danke, das hört man gern.
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); } }I just can’t get to work with a push button, please Daniel can you help me posting a schemating? I’m new withthese things..thanks a lot.
P.S: I have a Canon D550
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.
Die Antwort ist ganz unten. gepostet @28. Dezember 2010 um 12:05
Man muss die Kamera natürlich drauf vorbereiten das Infrarot Signale kommen. Funktioniert 1a. Vielen Dank!!!!!
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
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
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<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.
Hello ImaRH,
sorry for the late response, I was in holiday.
Thank you for your work! I will implement your code in the library.
Best Regards
Sebastian
Hi! Great library! I have canon 5Dm2 and it work well. But my another old non DSLR camera does not work. It has anower remote WL-DC100 and another protocol to work. Here is description for LIRC project http://lirc.sourceforge.net/remotes/canon/WL-DC100.
Can you add support for this remote. It suitebal for canon S60/S70/S1IS/G1/G2/G3/G5/G6/Pro90/Pro1 cameras.
Big thanks!
Hello RIm,
that is a very impressive list! So the library could offer the support for a lot of new devices…
Thank you!
Sebastian
Hey,
hab die Bibliothek gerade mit meiner Nikon D40 ausprobiert; funktioniert super, vielen Dank!
Alex
Hello, so I admire your work.
is fantastic.
I have a problem I can not load the code in my arduino
Hello,
do you have still the upload problem? Can you upload other code?
Sebastian
Sorry if I answer only now, but I’ve been very busy with work.
Yes I still have problems with upload.
What can I do?
Please give me your email address
Hello, I have the same type of error.
I send you the link where I put a photo of the error.
thanks Joseph
http://www.nikonclub.it/forum/index.php?showtopic=191371&pid=2568348&st=75&#entry2568348
Hello Joseph and Giuseppe,
looks like the Arduino software didn’t find the library. Are you copied the files for the library to the right place?
Best regards
Sebastian
Now it works well, but I have almost a second delay on the shutter of my Nikon D50.
you can do something to eliminate this delay?
thanks joseph
Hello Joseph,
the camera should take a picture instantly. Maybe you use a delay mode at your camera?
Sebastian
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!!
Bitte schön
Hallo Sebastian,
tolle Arbeit, klappt einwandfrei, vielen Dank. Leider muss ich mit meiner EOS350 sehr nah (ca. 50 cm) zur LED ran. Bei meinem nächsten Stadtausflug besorge ich mir den Transistor und versuchs mal damit.
Hello Sebastian,
I recently tried it with my Nikon D3 but it does not work
Maybe there is a bit different sequence for this camera. (I have a standard IR remote control too and this one works well.) Sorry.
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
Ciao Giacomo,
I listed all my sources in this documentation. Mostly people measured there IR transmitter and publicise it in the web. But feel free to contact me for more information.
Regards
Sebastian
Thank you so much, 5 minuts to have the setup with a push button, and working gr8 !!
I got it working with a Nikon D80, my Nikon P7000 just shows the IR signal in the live preview but other than that does nothing…
Cheers,
Crischan
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
Hallo Hans,
das ist ja super, dass Minolta auch funktioniert!
Du kannst einen ganz normalen NPN benutzen, z.Bsp. diesen hier.
Viel Erfolg noch!
Sebastian
This is SO awesome. I was planning to do this a long time ago. Now I just soldered of the IR LED fra an old SONY remote, downloaded your code, and 5 mins later it works! Love it. Arduino+Sebastian <3
thx (._.)
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
Hey Seb, just wanted to say a big thanks! This works perfectly on my Nikon D90, and has saved me so much time! Cheers!
Thank You!
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
Sorry found teh problem…I hadn’t downloaded to the Arduino Library folder..
JohnW
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
Yes, works great with my Canon EOS 350D.
I’ve took the IR LED from an old Philipps VCR Remote and uses a 220 Ohm resistor as indicated above.
great work!
Thanks a lot for the library! Combined it with a PIR motion sensor to create a motion controlled shutter release on my Nikon.
Tried it with the Sony A330 and it didn’t work. Tried a each of the supplied sketches. Any thoughts?
Hello Sean,
I didn’t own a Sony camera. But Walter, a bit lower, say it works.
Sebastian
Hello Sean,
Moritz also say it works.
The camera must be in the romote control state.
Walter
You need to put it in commander mode; (press left on circle; last item). I have no idea where the damn IR receiver is though; and my IR led is scraped so there allot reasons why I haven’t got it working; But if you have, please let us know.
thx for library!
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
Moin Richard,
ein ähnliches Problem hatte ja auch Michal schon am Anfang mit seiner EOS400… Ich hab leider keine Kamera zu testen. Werde mich aber mal umhören ob es da unterschiedliche Timings gibt.
Mit einer EOS350D funktioniert die Bibliothek aber einwandfrei.
Gruß
Sebastian
Hallo,
Erstmal Danke für dein Projekt!
Ich habs gerade mit meiner EOS 550 ausprobiert und klappt ohne Probleme.
Grüße
Daniel
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
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
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
Hello Steve,
thank you for your detailed and helpful comment! I will update the library soon.
Best regards
Sebastian
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
, jetzt sollte im Intervall Bilder aufgenommen werden
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
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:
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
thnx for the library
Tested on Pentax K200D, Pentax Kx and Pentax K-7. Works on these cameras.
Hello Andries,
nice to hear that! Thanks for your feedback
.
Best regards
Sebastian
Hi Andries,
I know your post is quite old, but did you use the Pentax example code that Sebastian gave in the library to test your K-x? I’ve been trying to hook up my K-x, but can’t get it to work. I just started using Arduino and I’m new to coding. Any help would be greatly appriciated!
Thanks,
Kim
I got it. Thanks Sebastian for this wonderful library! And Andries for letting me know it’s compatible with Pentax K-x!
Hello Kim,
nice to hear that you got it work. But’s always good when you share the reason too.
Sebastian
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
Hallo Moritz,
es gab tatsächlich einen Fehler in der Library. In der jetzt aktuellen Version 1.4 ist dieser behoben. Achtung! Ich habe zusätzlich den Namen der Funktionen von shotNow() auf shutterNow() geändert.
Viel Spaß!
Sebastian
Danke für die schnelle Antwort, jetzt funktioniert alles super! gute Arbeit, das Ganze!
geht dies auch mit einer Sony alpha 100 ohne Zubehör, oder brauche ich noch ein Empfänger?
Hallo Toni,
laut dieser Seite, können nur die 700 und 900 ohne weitere Hardware per IR ausgelöst werden. Im Zweifelsfall im Handbuch nachsehen ob die Kamera einen IR Empfänger hat.
Gruß
Sebastian
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 } }Vielen Dank Walter! Werde die Library schnellstmöglich aktualisieren.
Hallo Walter,
nochmal herzlichen Dank! Ich habe die Timings angepasst und die Version 1.3 zum download bereit gestellt.
Kannst Du die Funktionstüchtigkeit bitte nochmal bestätigen.
Danke & Gruß,
Sebastian
arbeitet einwandfrei.
Gruß
Walter
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.
Please let me know if you get it work.