|
|
@ -314,6 +314,12 @@ bool Stopped=false; |
|
|
|
bool CooldownNoWait = true; |
|
|
|
bool target_direction; |
|
|
|
|
|
|
|
//Insert variables if CHDK is defined
|
|
|
|
#ifdef CHDK |
|
|
|
unsigned long chdkHigh = 0; |
|
|
|
boolean chdkActive = false; |
|
|
|
#endif |
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
//=============================Routines======================================
|
|
|
|
//===========================================================================
|
|
|
@ -2588,23 +2594,33 @@ void process_commands() |
|
|
|
#endif //PIDTEMP
|
|
|
|
case 240: // M240 Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/
|
|
|
|
{ |
|
|
|
#if defined(PHOTOGRAPH_PIN) && PHOTOGRAPH_PIN > -1 |
|
|
|
const uint8_t NUM_PULSES=16; |
|
|
|
const float PULSE_LENGTH=0.01524; |
|
|
|
for(int i=0; i < NUM_PULSES; i++) { |
|
|
|
WRITE(PHOTOGRAPH_PIN, HIGH); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
WRITE(PHOTOGRAPH_PIN, LOW); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
#ifdef CHDK |
|
|
|
|
|
|
|
SET_OUTPUT(CHDK); |
|
|
|
WRITE(CHDK, HIGH); |
|
|
|
chdkHigh = millis(); |
|
|
|
chdkActive = true; |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
#if defined(PHOTOGRAPH_PIN) && PHOTOGRAPH_PIN > -1 |
|
|
|
const uint8_t NUM_PULSES=16; |
|
|
|
const float PULSE_LENGTH=0.01524; |
|
|
|
for(int i=0; i < NUM_PULSES; i++) { |
|
|
|
WRITE(PHOTOGRAPH_PIN, HIGH); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
WRITE(PHOTOGRAPH_PIN, LOW); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
} |
|
|
|
delay(7.33); |
|
|
|
for(int i=0; i < NUM_PULSES; i++) { |
|
|
|
WRITE(PHOTOGRAPH_PIN, HIGH); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
WRITE(PHOTOGRAPH_PIN, LOW); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
WRITE(PHOTOGRAPH_PIN, HIGH); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
WRITE(PHOTOGRAPH_PIN, LOW); |
|
|
|
_delay_ms(PULSE_LENGTH); |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#endif //chdk end if
|
|
|
|
} |
|
|
|
break; |
|
|
|
#ifdef DOGLCD |
|
|
@ -3353,6 +3369,16 @@ void manage_inactivity() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef CHDK //Check if pin should be set to LOW after M240 set it to HIGH
|
|
|
|
if (chdkActive) |
|
|
|
{ |
|
|
|
chdkActive = false; |
|
|
|
if (millis()-chdkHigh < CHDK_DELAY) return; |
|
|
|
WRITE(CHDK, LOW); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(KILL_PIN) && KILL_PIN > -1 |
|
|
|
if( 0 == READ(KILL_PIN) ) |
|
|
|
kill(); |
|
|
|