From ef66ecf5f1bb6c6c6819ee5c90efcb0d09419e71 Mon Sep 17 00:00:00 2001 From: blddk Date: Tue, 2 Aug 2011 23:50:10 +0300 Subject: Added M42 to control non used pins example: M42 P23 S255 --- Sprinter/Sprinter.pde | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index dde302c..5d40499 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -43,6 +43,7 @@ // M27 - Report SD print status // M28 - Start SD write (M28 filename.g) // M29 - Stop SD write +// M42 - Set output on free pins, on a non pwm pin (over pin 13 on an arduino mega) use S255 to turn it on and S0 to turn it off. Use P to decide the pin (M42 P23 S255) would turn pin 23 on // M81 - Turn off Power Supply // M82 - Set E codes absolute (default) // M83 - Set E codes relative while in Absolute Coordinates (G90) mode @@ -721,6 +722,31 @@ inline void process_commands() //savetosd = false; break; #endif + case 42: //M42 -Change pin status via gcode + if (code_seen('S')) + { + int pin_status = code_value(); + if (code_seen('P') && pin_status >= 0 && pin_status <= 255) + { + int pin_number = code_value(); + for(int i = 0; i < sizeof(sensitive_pins); i++) + { + if (sensitive_pins[i] == pin_number) + { + pin_number = -1; + break; + } + } + + if (pin_number > -1) + { + pinMode(pin_number, OUTPUT); + digitalWrite(pin_number, pin_status); + analogWrite(pin_number, pin_status); + } + } + } + break; case 104: // M104 if (code_seen('S')) target_raw = temp2analogh(code_value()); #ifdef WATCHPERIOD -- cgit v1.2.1 From f131f08bb65891ffbdfe9857f30e6b251d65b3bb Mon Sep 17 00:00:00 2001 From: blddk Date: Wed, 3 Aug 2011 01:47:56 +0300 Subject: Added MINTEMP to work on the heated bed too, so it will also turn off when thermistor fails. --- Sprinter/Sprinter.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 5d40499..8639218 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -1498,7 +1498,7 @@ void manage_heater() #endif - if(current_bed_raw >= target_bed_raw) + if(current_bed_raw >= target_bed_raw || current_bed_raw < minttemp) { WRITE(HEATER_1_PIN,LOW); } -- cgit v1.2.1 From 02dfbc071d295e50f2bd752508226672850b7fe2 Mon Sep 17 00:00:00 2001 From: blddk Date: Wed, 3 Aug 2011 12:44:28 +0300 Subject: Fixed so commenting out MINTEMP won't break compile, however, commenting out MINTEMP will then again allow the bed to be turned on, but not off, when there are no thermistor, or thermistor is broken. --- Sprinter/Sprinter.pde | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 8639218..026daba 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -1498,7 +1498,11 @@ void manage_heater() #endif + #ifdef MINTEMP if(current_bed_raw >= target_bed_raw || current_bed_raw < minttemp) + #else + if(current_bed_raw >= target_bed_raw) + #endif { WRITE(HEATER_1_PIN,LOW); } -- cgit v1.2.1