![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Library for interfacing with Nikon DSLR through IR LED
DslrIr/DslrIr.cpp@1:bdc12143ced7, 2019-04-26 (annotated)
- 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?
User | Revision | Line number | New 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 | } |