|
@ -41,6 +41,7 @@ |
|
|
#include "motion_control.h" |
|
|
#include "motion_control.h" |
|
|
#include "cardreader.h" |
|
|
#include "cardreader.h" |
|
|
#include "watchdog.h" |
|
|
#include "watchdog.h" |
|
|
|
|
|
#include <util/delay.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -109,6 +110,7 @@ |
|
|
// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk |
|
|
// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk |
|
|
// M206 - set additional homeing offset |
|
|
// M206 - set additional homeing offset |
|
|
// M220 - set speed factor override percentage S:factor in percent |
|
|
// M220 - set speed factor override percentage S:factor in percent |
|
|
|
|
|
// M240 - Trigger a camera to take a photograph |
|
|
// M301 - Set PID parameters P I and D |
|
|
// M301 - Set PID parameters P I and D |
|
|
// M302 - Allow cold extrudes |
|
|
// M302 - Allow cold extrudes |
|
|
// M400 - Finish all moves |
|
|
// M400 - Finish all moves |
|
@ -227,7 +229,15 @@ void enquecommand(const char *cmd) |
|
|
buflen += 1; |
|
|
buflen += 1; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
void setup_photpin() |
|
|
|
|
|
{ |
|
|
|
|
|
#ifdef PHOTOGRAPH_PIN |
|
|
|
|
|
#if (PHOTOGRAPH_PIN > -1) |
|
|
|
|
|
SET_OUTPUT(PHOTOGRAPH_PIN); |
|
|
|
|
|
WRITE(PHOTOGRAPH_PIN, LOW); |
|
|
|
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
void setup() |
|
|
void setup() |
|
|
{ |
|
|
{ |
|
|
MSerial.begin(BAUDRATE); |
|
|
MSerial.begin(BAUDRATE); |
|
@ -255,6 +265,7 @@ void setup() |
|
|
plan_init(); // Initialize planner; |
|
|
plan_init(); // Initialize planner; |
|
|
st_init(); // Initialize stepper; |
|
|
st_init(); // Initialize stepper; |
|
|
wd_init(); |
|
|
wd_init(); |
|
|
|
|
|
setup_photpin(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1064,6 +1075,8 @@ FORCE_INLINE void process_commands() |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef PIDTEMP |
|
|
#ifdef PIDTEMP |
|
|
case 301: // M301 |
|
|
case 301: // M301 |
|
@ -1089,6 +1102,29 @@ FORCE_INLINE void process_commands() |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
#endif //PIDTEMP |
|
|
#endif //PIDTEMP |
|
|
|
|
|
case 240: // M240 Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/ |
|
|
|
|
|
{ |
|
|
|
|
|
#ifdef PHOTOGRAPH_PIN |
|
|
|
|
|
#if (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); |
|
|
|
|
|
} |
|
|
|
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
case 302: // finish all moves |
|
|
case 302: // finish all moves |
|
|
{ |
|
|
{ |
|
|