This is a Library I have created for a Project, the aim being to send the shutter release trigger signal to my Nikon D40x DSLR using an IR led. The code defaults to a 38.4KHz oscilation but can be set to any frequency.

Committer:
hazanjon
Date:
Wed Dec 01 00:36:04 2010 +0000
Revision:
0:083159111741
Beta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hazanjon 0:083159111741 1
hazanjon 0:083159111741 2 #include "Pulse.h"
hazanjon 0:083159111741 3 #include "mbed.h"
hazanjon 0:083159111741 4
hazanjon 0:083159111741 5 Pulse::Pulse(PinName pin) : output_pin(pin) {
hazanjon 0:083159111741 6 output_pin = 0;
hazanjon 0:083159111741 7 switch_state = false;
hazanjon 0:083159111741 8 oscilation = 38400; //Set default oscilation to 38.4KHz
hazanjon 0:083159111741 9 }
hazanjon 0:083159111741 10
hazanjon 0:083159111741 11 void Pulse::send_pulse(int* sequence){
hazanjon 0:083159111741 12 int num_switches = (sizeof(sequence)/sizeof(int));
hazanjon 0:083159111741 13 int tick = 1000000/oscilation;
hazanjon 0:083159111741 14 for(int i = 0; i < num_switches; i++){
hazanjon 0:083159111741 15 if(i % 2 == 0){
hazanjon 0:083159111741 16 change_state();
hazanjon 0:083159111741 17 output_pin = 1;
hazanjon 0:083159111741 18 flipper.attach_us(this, &Pulse::flip_pin, tick);
hazanjon 0:083159111741 19 wait_us(sequence[i]);
hazanjon 0:083159111741 20 flipper.detach();
hazanjon 0:083159111741 21 change_state();
hazanjon 0:083159111741 22 output_pin = 0;
hazanjon 0:083159111741 23 }else{
hazanjon 0:083159111741 24 wait_us(sequence[i]);
hazanjon 0:083159111741 25 }
hazanjon 0:083159111741 26 }
hazanjon 0:083159111741 27 }
hazanjon 0:083159111741 28
hazanjon 0:083159111741 29 void Pulse::set_osc(int khz){
hazanjon 0:083159111741 30 if(khz > 0 && khz <= 250000) //Make sure that the new oscilation is positive and also less than 250KHz
hazanjon 0:083159111741 31 oscilation = khz;
hazanjon 0:083159111741 32 }
hazanjon 0:083159111741 33
hazanjon 0:083159111741 34 void Pulse::set_pin(PinName pin){
hazanjon 0:083159111741 35 output_pin = pin;
hazanjon 0:083159111741 36 }
hazanjon 0:083159111741 37
hazanjon 0:083159111741 38 void Pulse::flip_pin(){
hazanjon 0:083159111741 39 if(switch_state) //Stop the output from switching unless it is meant to be transmitting
hazanjon 0:083159111741 40 output_pin = !output_pin;
hazanjon 0:083159111741 41 else
hazanjon 0:083159111741 42 output_pin = 0;
hazanjon 0:083159111741 43 }
hazanjon 0:083159111741 44
hazanjon 0:083159111741 45 void Pulse::change_state(){
hazanjon 0:083159111741 46 switch_state = !switch_state;
hazanjon 0:083159111741 47 }
hazanjon 0:083159111741 48
hazanjon 0:083159111741 49
hazanjon 0:083159111741 50