From 465520c1ea96495928cb7b22f149c4b35b006457 Mon Sep 17 00:00:00 2001 From: Kliment Yanev Date: Thu, 1 Mar 2012 16:14:54 +0100 Subject: [PATCH] Splotbot firmware --- Sprinter/Configuration.h | 2 +- Sprinter/Sprinter.pde | 70 ++++++++++++++++++++++++++++++------- Sprinter/pins.h | 74 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+), 14 deletions(-) diff --git a/Sprinter/Configuration.h b/Sprinter/Configuration.h index df52a08..a769b12 100644 --- a/Sprinter/Configuration.h +++ b/Sprinter/Configuration.h @@ -13,7 +13,7 @@ // Gen 3 Plus = 21 // gen 3 Monolithic Electronics = 22 // Gen3 PLUS for TechZone Gen3 Remix Motherboard = 23 -#define MOTHERBOARD 3 +#define MOTHERBOARD 31 //// Thermistor settings: // 1 is 100k thermistor diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 657efed..b0a8ccd 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -5,7 +5,7 @@ #include "Configuration.h" #include "pins.h" #include "Sprinter.h" - +#define SERVO 1 #ifdef SDSUPPORT #include "SdFat.h" #endif @@ -202,7 +202,11 @@ unsigned long stepper_inactive_time = 0; } #endif - +#ifdef SERVO +#define SERVOCOUNT 13 +#include +static Servo servos[SERVOCOUNT]; +#endif void setup() { Serial.begin(BAUDRATE); @@ -364,6 +368,28 @@ void setup() #endif + +#ifdef SERVO +servos[0].attach(23); +servos[1].attach(25); +servos[2].attach(27); +servos[3].attach(29); +servos[4].attach(31); +servos[5].attach(33); +servos[6].attach(35); +servos[7].attach(37); +servos[8].attach(39); +servos[9].attach(41); +servos[10].attach(43); +servos[11].attach(45); +servos[12].attach(47); +int i; +for(i=0;i<12;++i) + servos[i].write(180); +servos[12].write(90); + +#endif + } @@ -771,6 +797,23 @@ inline void process_commands() } } break; +#ifdef SERVO + case 43: + if (code_seen('S')) + { + int pin_status = code_value(); + if (code_seen('P') && pin_status >= 0 && pin_status <= 180) + { + + int pin_number = code_value(); + if (pin_number > -1 && pin_number current_position[1]) WRITE(Y_DIR_PIN,!INVERT_Y_DIR); else WRITE(Y_DIR_PIN,INVERT_Y_DIR); - if (destination[2] > current_position[2]) WRITE(Z_DIR_PIN,!INVERT_Z_DIR); + /* if (destination[2] > current_position[2]) WRITE(Z_DIR_PIN,!INVERT_Z_DIR); else WRITE(Z_DIR_PIN,INVERT_Z_DIR); if (destination[3] > current_position[3]) WRITE(E_DIR_PIN,!INVERT_E_DIR); else WRITE(E_DIR_PIN,INVERT_E_DIR); + */ movereset: #if (X_MIN_PIN > -1) if(!move_direction[0]) if(READ(X_MIN_PIN) != X_ENDSTOP_INVERT) axis_steps_remaining[0]=0; @@ -1376,17 +1420,17 @@ void do_step(int axis) { WRITE(Y_STEP_PIN, HIGH); break; case 2: - WRITE(Z_STEP_PIN, HIGH); +// WRITE(Z_STEP_PIN, HIGH); break; case 3: - WRITE(E_STEP_PIN, HIGH); +// WRITE(E_STEP_PIN, HIGH); break; } steps_taken[axis]+=1; WRITE(X_STEP_PIN, LOW); WRITE(Y_STEP_PIN, LOW); - WRITE(Z_STEP_PIN, LOW); - WRITE(E_STEP_PIN, LOW); + // WRITE(Z_STEP_PIN, LOW); + // WRITE(E_STEP_PIN, LOW); } #define HEAT_INTERVAL 250 @@ -1552,16 +1596,16 @@ void manage_heater() #else if(current_raw >= target_raw) { - WRITE(HEATER_0_PIN,LOW); - analogWrite(HEATER_0_PIN, 0); + //WRITE(HEATER_0_PIN,LOW); + //analogWrite(HEATER_0_PIN, 0); #if LED_PIN>-1 WRITE(LED_PIN,LOW); #endif } else { - WRITE(HEATER_0_PIN,HIGH); - analogWrite(HEATER_0_PIN, HEATER_CURRENT); + //WRITE(HEATER_0_PIN,HIGH); + //analogWrite(HEATER_0_PIN, HEATER_CURRENT); #if LED_PIN > -1 WRITE(LED_PIN,HIGH); #endif @@ -1695,11 +1739,11 @@ inline void kill() { #if TEMP_0_PIN > -1 target_raw=0; - WRITE(HEATER_0_PIN,LOW); +// WRITE(HEATER_0_PIN,LOW); #endif #if TEMP_1_PIN > -1 target_bed_raw=0; - if(HEATER_1_PIN > -1) WRITE(HEATER_1_PIN,LOW); + //if(HEATER_1_PIN > -1) WRITE(HEATER_1_PIN,LOW); #endif disable_x(); disable_y(); diff --git a/Sprinter/pins.h b/Sprinter/pins.h index fbe6a6e..36d423b 100644 --- a/Sprinter/pins.h +++ b/Sprinter/pins.h @@ -516,6 +516,80 @@ #endif +#endif + +/**************************************************************************************** +* Splotbot pin assignment +* +****************************************************************************************/ + +#if MOTHERBOARD == 31 +#define KNOWN_BOARD 1 + +//////////////////FIX THIS////////////// +#ifndef __AVR_ATmega1280__ + #ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. + #endif +#endif + +// uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1 +// #define RAMPS_V_1_3 +// #define RAMPS_V_1_0 + + +#define X_STEP_PIN 17//20 +#define X_DIR_PIN 18//21 +#define X_ENABLE_PIN 16//19 +#define X_MIN_PIN 2 +#define X_MAX_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable. + +#define Y_STEP_PIN 20//17 +#define Y_DIR_PIN 21//18 +#define Y_ENABLE_PIN 19//16 +#define Y_MIN_PIN 44 +#define Y_MAX_PIN -1 //15 + +#define Z_STEP_PIN -1 +#define Z_DIR_PIN -1 +#define Z_ENABLE_PIN -1 +#define Z_MIN_PIN -1 +#define Z_MAX_PIN -1 //19 + +#define E_STEP_PIN -1 +#define E_DIR_PIN -1 +#define E_ENABLE_PIN -1 + +#define E_1_STEP_PIN -1 +#define E_1_DIR_PIN -1 +#define E_1_ENABLE_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 +#define LED_PIN 13 +#define FAN_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +#define HEATER_0_PIN -1 +#define HEATER_1_PIN -1 +#define TEMP_0_PIN 0 // ANALOG NUMBERING +#define TEMP_1_PIN -1 // ANALOG NUMBERING +#define TEMP_2_PIN -1 // ANALOG NUMBERING + + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN -1 + #define MISO_PIN -1 + #define MOSI_PIN -1 + #define MAX6675_SS -1 +#else + #define MAX6675_SS -1 +#endif + + #endif /**************************************************************************************** * Duemilanove w/ ATMega328P pin assignment