Library for interfacing with Nikon DSLR through IR LED

Dependencies:   mbed

Committer:
danbudanov
Date:
Fri Apr 26 00:25:02 2019 +0000
Revision:
1:bdc12143ced7
Parent:
0:e977f7ad0d48
updated headings

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danbudanov 1:bdc12143ced7 1 /**
danbudanov 1:bdc12143ced7 2 * MBED code functionality, including idea of modulating PWM signal, taken from
danbudanov 1:bdc12143ced7 3 * https://os.mbed.com/users/viswesr/code/DSLR_Camera_IR_Remote/
danbudanov 1:bdc12143ced7 4 * As the given values did not work on the Nikon D3300, they were modified,
danbudanov 1:bdc12143ced7 5 * parameterized, and put into library form.
danbudanov 1:bdc12143ced7 6 *
danbudanov 1:bdc12143ced7 7 * Inspiration, default values, and an Arduino validation signal were taken from
danbudanov 1:bdc12143ced7 8 * https://bayesianadventures.wordpress.com/2013/08/09/nikon-ml-l3-ir-remote-hack/
danbudanov 1:bdc12143ced7 9 *
danbudanov 1:bdc12143ced7 10 * Library instructions were taken from https://os.mbed.com/cookbook/Writing-a-Library
danbudanov 1:bdc12143ced7 11 */
danbudanov 1:bdc12143ced7 12
danbudanov 0:e977f7ad0d48 13 #include "DslrIr.h"
danbudanov 0:e977f7ad0d48 14
danbudanov 0:e977f7ad0d48 15 DslrIr::DslrIr(PinName pin) : _pin(pin)
danbudanov 0:e977f7ad0d48 16 {
danbudanov 0:e977f7ad0d48 17 _pin.period_us(PWM_PERIOD); // set PWM period for Carrier Frequency of 38.4 KHz
danbudanov 0:e977f7ad0d48 18 _pin = 0;
danbudanov 0:e977f7ad0d48 19 }
danbudanov 0:e977f7ad0d48 20
danbudanov 0:e977f7ad0d48 21
danbudanov 0:e977f7ad0d48 22
danbudanov 0:e977f7ad0d48 23
danbudanov 0:e977f7ad0d48 24 void DslrIr::trigger()
danbudanov 0:e977f7ad0d48 25 {
danbudanov 0:e977f7ad0d48 26 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 27 wait_us(SEQ_ON_1_PERIOD);
danbudanov 0:e977f7ad0d48 28 _pin = 0;
danbudanov 0:e977f7ad0d48 29 wait_us(SEQ_OFF_1_PERIOD);
danbudanov 0:e977f7ad0d48 30 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 31 wait_us(SEQ_ON_2_PERIOD);
danbudanov 0:e977f7ad0d48 32 _pin = 0;
danbudanov 0:e977f7ad0d48 33 wait_us(SEQ_OFF_2_PERIOD);
danbudanov 0:e977f7ad0d48 34 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 35 wait_us(SEQ_ON_3_PERIOD);
danbudanov 0:e977f7ad0d48 36 _pin = 0;
danbudanov 0:e977f7ad0d48 37 wait_us(SEQ_OFF_3_PERIOD);
danbudanov 0:e977f7ad0d48 38 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 39 wait_us(SEQ_ON_4_PERIOD);
danbudanov 0:e977f7ad0d48 40 _pin = 0;
danbudanov 0:e977f7ad0d48 41 wait_us(SEQ_OFF_4_PERIOD); // Repeat after 63.2 us
danbudanov 0:e977f7ad0d48 42 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 43 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 44 wait_us(SEQ_ON_1_PERIOD);
danbudanov 0:e977f7ad0d48 45 _pin = 0;
danbudanov 0:e977f7ad0d48 46 wait_us(SEQ_OFF_1_PERIOD);
danbudanov 0:e977f7ad0d48 47 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 48 wait_us(SEQ_ON_2_PERIOD);
danbudanov 0:e977f7ad0d48 49 _pin = 0;
danbudanov 0:e977f7ad0d48 50 wait_us(SEQ_OFF_2_PERIOD);
danbudanov 0:e977f7ad0d48 51 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 52 wait_us(SEQ_ON_3_PERIOD);
danbudanov 0:e977f7ad0d48 53 _pin = 0;
danbudanov 0:e977f7ad0d48 54 wait_us(SEQ_OFF_3_PERIOD);
danbudanov 0:e977f7ad0d48 55 _pin = ACTIVE_DUTY_CYCLE;
danbudanov 0:e977f7ad0d48 56 wait_us(SEQ_ON_4_PERIOD);
danbudanov 0:e977f7ad0d48 57 _pin = 0;
danbudanov 0:e977f7ad0d48 58 }