Compare commits
119 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 03a0226ae3 | |||
| 9c94691688 | |||
| c52bac8bab | |||
| 98a79c9ab8 | |||
| 3f42b06bc2 | |||
| 1ab0d240b9 | |||
| 5a4a107711 | |||
| afa6a0c993 | |||
| 7429a39278 | |||
| 156ed96649 | |||
| b018fb59d7 | |||
| 4d9190598b | |||
| 5dfec58d7b | |||
| 6d84ca7671 | |||
| afd0b532ad | |||
| 1cb2de37de | |||
| fd94570a0d | |||
| b120adf8df | |||
| 1cfe6d7478 | |||
| a9b30acbe6 | |||
| b9e4ce3715 | |||
| 78410b210b | |||
| de0b872a24 | |||
| ae24f4f930 | |||
| f093ce35a0 | |||
| 7ee1ab4fd3 | |||
| bb352f9836 | |||
| 5c120222a4 | |||
| b3af5a1ac0 | |||
| 124cff0dbe | |||
| 9076a9314f | |||
| 40ce9d0299 | |||
| 20f1688376 | |||
| 59e8707a4f | |||
| 5735c8af5b | |||
| c97bf04166 | |||
| 156bd28160 | |||
| 1f991f07be | |||
| 675be8db7c | |||
| fcb19823db | |||
| e8779e7fe2 | |||
| ac5ff1d802 | |||
| 08e20dbbc6 | |||
| 1682036533 | |||
| 42180e25a3 | |||
| c6e4fbe162 | |||
| 65adea6240 | |||
| 888da29b61 | |||
| 50ff4cf157 | |||
| 12b9bbaa50 | |||
| b50afa9897 | |||
| a556a8c506 | |||
| ee7b6a5e68 | |||
| da9f3868d5 | |||
| 04183da302 | |||
| 0b9f99f940 | |||
| 5aff43e65e | |||
| 32b6a3ad12 | |||
| 94857b59c9 | |||
| 3c5f0ce858 | |||
| 0d7c559139 | |||
| 542baea2e1 | |||
| 33ddd4e929 | |||
| 96c1721eeb | |||
| 80c51ea572 | |||
| f71e65aa9c | |||
| 1025066ab1 | |||
| f4a7531ccb | |||
| 3e53754ccf | |||
| 99cbeb3806 | |||
| 751de314a4 | |||
| 689ae467f2 | |||
| b06fc3b539 | |||
| 3ca3268241 | |||
| 382aa96870 | |||
| 522ea178a4 | |||
| 2756a1d411 | |||
| 94b8eac6d0 | |||
| b4ddee8beb | |||
| f0494b4021 | |||
| ba8d03d241 | |||
| 37927f9274 | |||
| 81b9914704 | |||
| d86efae37c | |||
| 3550494db1 | |||
| 95d19cfcbf | |||
| e5e5c1513d | |||
| 083bfa3fe9 | |||
| 8f5d99a2ab | |||
| f748b1a1ce | |||
| e931bc7e72 | |||
| b95a1b94cb | |||
| 3bdca8730e | |||
| cb02b6ec60 | |||
| d70a4646f4 | |||
| 11bbcfd69e | |||
| d429d5a4ae | |||
| d66afdc244 | |||
| 242cda28f6 | |||
| 0dc4a5d928 | |||
| c6d99c772b | |||
| 612ca52676 | |||
| d1be569466 | |||
| 8898eb20a6 | |||
| 95e0ab52d6 | |||
| e9214cf1fb | |||
| d46ba9e969 | |||
| b2d32227aa | |||
| c1e14d6db7 | |||
| 7ef484be7e | |||
| c941fe470b | |||
| 410b25d4e9 | |||
| 8c22e7710c | |||
| b4d2c19723 | |||
| 2a18869b50 | |||
| 6137b671fe | |||
| 0858670828 | |||
| 0ab3f7e985 | |||
| 022eb85937 |
+3
-3
@@ -118,7 +118,7 @@ script:
|
||||
# Add a Sled Z Probe, use UBL Cartesian moves, use Japanese language
|
||||
#
|
||||
- opt_set LANGUAGE kana_utf8
|
||||
- opt_enable Z_PROBE_SLED SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
|
||||
- opt_enable Z_PROBE_SLED SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE BEZIER_JERK_CONTROL
|
||||
- opt_disable SEGMENT_LEVELED_MOVES
|
||||
- opt_enable_adv BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING
|
||||
- build_marlin
|
||||
@@ -143,7 +143,7 @@ script:
|
||||
# PROBE_MANUALLY feature, with LCD support,
|
||||
# ULTIMAKERCONTROLLER, FILAMENT_LCD_DISPLAY, FILAMENT_WIDTH_SENSOR,
|
||||
# PRINTCOUNTER, NOZZLE_PARK_FEATURE, NOZZLE_CLEAN_FEATURE, PCA9632,
|
||||
# Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
|
||||
# Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
|
||||
# ADVANCED_PAUSE_FEATURE, ADVANCED_PAUSE_CONTINUOUS_PURGE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU, M114_DETAIL
|
||||
# EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
|
||||
# INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
|
||||
@@ -153,7 +153,7 @@ script:
|
||||
- opt_enable PROBE_MANUALLY AUTO_BED_LEVELING_BILINEAR G26_MESH_EDITING LCD_BED_LEVELING ULTIMAKERCONTROLLER
|
||||
- opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
|
||||
- opt_enable ULTIMAKERCONTROLLER SDSUPPORT
|
||||
- opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632 USE_XMAX_PLUG
|
||||
- opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632
|
||||
- opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
|
||||
- opt_enable_adv ADVANCED_PAUSE_FEATURE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
|
||||
- opt_set_adv PWM_MOTOR_CURRENT {1300,1300,1250}
|
||||
|
||||
+244
-92
@@ -1,5 +1,54 @@
|
||||
#define UBL
|
||||
//#define FILAMENT_RUNOUT_SENSOR
|
||||
|
||||
// CUSTOMIZE FOR YOUR MACHINE BELOW
|
||||
// CUSTOMIZE FOR YOUR MACHINE BELOW
|
||||
// CUSTOMIZE FOR YOUR MACHINE BELOW
|
||||
// CUSTOMIZE FOR YOUR MACHINE BELOW
|
||||
// CUSTOMIZE FOR YOUR MACHINE BELOW
|
||||
|
||||
/**
|
||||
* Enable if you replace the stepper drivers with TMC 2208. Be sure to remove MS3 jumper
|
||||
* underneath the stepper driver! Plug and Play will result in Stealth Chop 2 Mode enabled
|
||||
* Stealthchop with 2208 on E will disabe inear Advance! Please enable stealthchop if
|
||||
* you require Linear Advance with a TMC2208 on the extruder!
|
||||
* If you have used a UART connection to program the driver to SpreadCycle mode, pease seect that as well
|
||||
*/
|
||||
//#define X_2208
|
||||
//#define X_SpreadCycle
|
||||
//#define Y_2208
|
||||
//#define Y_SpreadCycle // Highly recommended as large prints with high mass can cause layer shifts with stealthchop at high speed
|
||||
//#define Y_4988 // Some machines shipped with 4988 drivers across the board. Set this if you arent sure what you have and all the drivers look identical
|
||||
//#define Z_2208 // NOT Recommended! Dual stepper current draw is above the recommended limit for this driver
|
||||
//#define Z_SpreadCycle
|
||||
#define Z_4988 // Some machines shipped with 4988 drivers across the board. Set this if you arent sure what you have and all the drivers look identical
|
||||
//#define E_2208 // Not Recommended! Stealthchop mode faults with linear advance
|
||||
//#define E_SpreadCycle
|
||||
|
||||
|
||||
/**
|
||||
* Enable if you install a KEENOVO AC BED with Solid State Relay
|
||||
*/
|
||||
//#define BED_AC
|
||||
|
||||
//#define HotendAllMetal
|
||||
/**
|
||||
* Enable if you install a filament runout sensor from www.formbotusa.com
|
||||
*/
|
||||
//#define RunoutSensor
|
||||
//#define ledgeFilSensor //Modify filament sensor contact type for TM3D V2 sensors
|
||||
|
||||
/**
|
||||
* Enable if you wish to change the auto level strategy to Unified Bed Leveling. Under CUSTOM COMMANDS, run Step 1 and 2 before setting Z Offset
|
||||
*/
|
||||
//#define UBL
|
||||
|
||||
//ONLY MAKE CHANGES ABOVE FOR RELIABLE FUNCTION
|
||||
//ONLY MAKE CHANGES ABOVE FOR RELIABLE FUNCTION
|
||||
//ONLY MAKE CHANGES ABOVE FOR RELIABLE FUNCTION
|
||||
//ONLY MAKE CHANGES ABOVE FOR RELIABLE FUNCTION
|
||||
//ONLY MAKE CHANGES ABOVE FOR RELIABLE FUNCTION
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
@@ -84,7 +133,7 @@
|
||||
// User-specified version info of this build to display in [Pronterface, etc] terminal window during
|
||||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_CONFIG_H_AUTHOR "Tinymachines 3D" // Who made the changes.
|
||||
#define STRING_CONFIG_H_AUTHOR "Tinymachines3D" // Who made the changes.
|
||||
#define SHOW_BOOTSCREEN
|
||||
#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
|
||||
#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2
|
||||
@@ -101,10 +150,10 @@
|
||||
*/
|
||||
|
||||
// Enable to show the bitmap in Marlin/_Bootscreen.h on startup.
|
||||
//#define SHOW_CUSTOM_BOOTSCREEN
|
||||
#define SHOW_CUSTOM_BOOTSCREEN
|
||||
|
||||
// Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen.
|
||||
//#define CUSTOM_STATUS_SCREEN_IMAGE
|
||||
#define CUSTOM_STATUS_SCREEN_IMAGE
|
||||
|
||||
// @section machine
|
||||
|
||||
@@ -134,12 +183,13 @@
|
||||
// The following define selects which electronics board you have.
|
||||
// Please choose the name from boards.h that matches your setup
|
||||
#ifndef MOTHERBOARD
|
||||
#define MOTHERBOARD BOARD_RAMPS_14_EFB
|
||||
#define MOTHERBOARD BOARD_RUMBA
|
||||
#endif
|
||||
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
#define CUSTOM_MACHINE_NAME "TM3D Mamorubot"
|
||||
#define CUSTOM_MACHINE_NAME "TM3D RaPtOr"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
|
||||
@@ -312,12 +362,16 @@
|
||||
*
|
||||
* :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '501':"100K Zonestar (Tronxy X3A)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-4':"Thermocouple + AD8495", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" }
|
||||
*/
|
||||
#define TEMP_SENSOR_0 5
|
||||
#define TEMP_SENSOR_0 1
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#define TEMP_SENSOR_3 0
|
||||
#define TEMP_SENSOR_4 0
|
||||
#if(ENABLED(BED_AC))
|
||||
#define TEMP_SENSOR_BED 11
|
||||
#else
|
||||
#define TEMP_SENSOR_BED 1
|
||||
#endif
|
||||
#define TEMP_SENSOR_CHAMBER 0
|
||||
|
||||
// Dummy thermistor constant temperature readings, for use with 998 and 999
|
||||
@@ -352,12 +406,16 @@
|
||||
// When temperature exceeds max temp, your heater will be switched off.
|
||||
// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
|
||||
// You should use MINTEMP for thermistor short/failure protection.
|
||||
#define HEATER_0_MAXTEMP 275
|
||||
#define HEATER_0_MAXTEMP 290
|
||||
#define HEATER_1_MAXTEMP 275
|
||||
#define HEATER_2_MAXTEMP 275
|
||||
#define HEATER_3_MAXTEMP 275
|
||||
#define HEATER_4_MAXTEMP 275
|
||||
#define BED_MAXTEMP 130
|
||||
#if(ENABLED(BED_AC))
|
||||
#define BED_MAXTEMP 150
|
||||
#else
|
||||
#define BED_MAXTEMP 100
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//============================= PID Settings ================================
|
||||
@@ -382,19 +440,24 @@
|
||||
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
|
||||
|
||||
// Ultimaker
|
||||
#define DEFAULT_Kp 17.52
|
||||
#define DEFAULT_Ki 0.6
|
||||
#define DEFAULT_Kd 127.62
|
||||
|
||||
#if(ENABLED(HotendAllMetal))
|
||||
#define DEFAULT_Kp 21.9
|
||||
#define DEFAULT_Ki 1.5
|
||||
#define DEFAULT_Kd 79.88
|
||||
#else
|
||||
#define DEFAULT_Kp 22.2
|
||||
#define DEFAULT_Ki 1.08
|
||||
#define DEFAULT_Kd 114
|
||||
#endif
|
||||
// MakerGear
|
||||
//#define DEFAULT_Kp 7.0
|
||||
//#define DEFAULT_Ki 0.1
|
||||
//#define DEFAULT_Kd 12
|
||||
//#define DEFAULT_Kp 7.0
|
||||
//#define DEFAULT_Ki 0.1
|
||||
//#define DEFAULT_Kd 12
|
||||
|
||||
// Mendel Parts V9 on 12V
|
||||
//#define DEFAULT_Kp 63.0
|
||||
//#define DEFAULT_Ki 2.25
|
||||
//#define DEFAULT_Kd 440
|
||||
//#define DEFAULT_Kp 63.0
|
||||
//#define DEFAULT_Ki 2.25
|
||||
//#define DEFAULT_Kd 440
|
||||
|
||||
#endif // PIDTEMP
|
||||
|
||||
@@ -433,9 +496,9 @@
|
||||
|
||||
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
||||
#define DEFAULT_bedKp 398.58
|
||||
#define DEFAULT_bedKi 73.71
|
||||
#define DEFAULT_bedKd 538.78
|
||||
#define DEFAULT_bedKp 100.0
|
||||
#define DEFAULT_bedKi 15.0
|
||||
#define DEFAULT_bedKd 200.0
|
||||
|
||||
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from pidautotune
|
||||
@@ -493,7 +556,7 @@
|
||||
|
||||
// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics
|
||||
// either in the usual order or reversed
|
||||
#define COREXY
|
||||
//#define COREXY
|
||||
//#define COREXZ
|
||||
//#define COREYZ
|
||||
//#define COREYX
|
||||
@@ -533,10 +596,10 @@
|
||||
#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
|
||||
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
|
||||
|
||||
/**
|
||||
* Stepper Drivers
|
||||
@@ -552,17 +615,41 @@
|
||||
* TMC5130, TMC5130_STANDALONE
|
||||
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
|
||||
*/
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
//#define X2_DRIVER_TYPE A4988
|
||||
#if ENABLED(X_2208)
|
||||
#define X_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#define X2_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#else
|
||||
#define X_DRIVER_TYPE A4988
|
||||
#define X2_DRIVER_TYPE A4988
|
||||
#endif
|
||||
#if ENABLED(Y_2208)
|
||||
#define Y_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#elif ENABLED(Y_4988)
|
||||
#define Y_DRIVER_TYPE A4988
|
||||
#else
|
||||
#define Y_DRIVER_TYPE DRV8825
|
||||
#endif
|
||||
#if ENABLED(Z_2208)
|
||||
#define Z_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#elif ENABLED(Z_4988)
|
||||
#define Z_DRIVER_TYPE A4988
|
||||
#else
|
||||
#define Z_DRIVER_TYPE DRV8825
|
||||
#endif
|
||||
//#define Y2_DRIVER_TYPE A4988
|
||||
//#define Z2_DRIVER_TYPE A4988
|
||||
#define E0_DRIVER_TYPE A4988
|
||||
//#define E1_DRIVER_TYPE A4988
|
||||
//#define Z3_DRIVER_TYPE A4988
|
||||
#if ENABLED(E_2208)
|
||||
#define E0_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#define E1_DRIVER_TYPE TMC2208_STANDALONE
|
||||
#else
|
||||
#define E0_DRIVER_TYPE DRV8825
|
||||
#define E1_DRIVER_TYPE DRV8825
|
||||
#endif
|
||||
//#define E2_DRIVER_TYPE A4988
|
||||
//#define E3_DRIVER_TYPE A4988
|
||||
//#define E4_DRIVER_TYPE A4988
|
||||
//#define E5_DRIVER_TYPE A4988
|
||||
|
||||
// Enable this feature if all enabled endstop pins are interrupt-capable.
|
||||
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
|
||||
@@ -610,14 +697,26 @@
|
||||
* Override with M92
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {160, 160, 800, 215.4 }
|
||||
#if(ENABLED(Y_2208) || ENABLED(Y_4988))
|
||||
#define Y_STEPSMM 80
|
||||
#else
|
||||
#define Y_STEPSMM 160
|
||||
#endif
|
||||
|
||||
#if(ENABLED(Z_2208) || ENABLED(Z_4988))
|
||||
#define Z_STEPSMM 800
|
||||
#else
|
||||
#define Z_STEPSMM 1600
|
||||
#endif
|
||||
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80,Y_STEPSMM , Z_STEPSMM, 96 }
|
||||
|
||||
/**
|
||||
* Default Max Feed Rate (mm/s)
|
||||
* Override with M203
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 25 }
|
||||
#define DEFAULT_MAX_FEEDRATE { 250, 150, 5, 25 }
|
||||
|
||||
/**
|
||||
* Default Max Acceleration (change/s) change = mm/s
|
||||
@@ -625,7 +724,26 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
|
||||
*/
|
||||
#define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 2000 }
|
||||
#if(ENABLED(X_2208))
|
||||
#if(ENABLED(X_SpreadCycle))
|
||||
#define x_accel 1750
|
||||
#else
|
||||
#define x_accel 1000
|
||||
#endif
|
||||
#else
|
||||
#define x_accel 1500
|
||||
#endif
|
||||
|
||||
#if(ENABLED(Y_2208))
|
||||
#if(ENABLED(Y_SpreadCycle))
|
||||
#define y_accel 500
|
||||
#else
|
||||
#define y_accel 300
|
||||
#endif
|
||||
#else
|
||||
#define y_accel 500
|
||||
#endif
|
||||
#define DEFAULT_MAX_ACCELERATION { x_accel, y_accel, 400, 4000 }
|
||||
|
||||
/**
|
||||
* Default Acceleration (change/s) change = mm/s
|
||||
@@ -635,9 +753,9 @@
|
||||
* M204 R Retract Acceleration
|
||||
* M204 T Travel Acceleration
|
||||
*/
|
||||
#define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves
|
||||
#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts
|
||||
#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
|
||||
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
|
||||
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
|
||||
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
|
||||
|
||||
/**
|
||||
* Default Jerk (mm/s)
|
||||
@@ -647,9 +765,18 @@
|
||||
* When changing speed and direction, if the difference is less than the
|
||||
* value set here, it may happen instantaneously.
|
||||
*/
|
||||
#define DEFAULT_XJERK 10.0
|
||||
#define DEFAULT_YJERK 10.0
|
||||
#define DEFAULT_ZJERK 0.3
|
||||
#if(ENABLED(X_SpreadCycle) || !ENABLED(X_2208))
|
||||
#define DEFAULT_XJERK 20.0
|
||||
#else
|
||||
#define DEFAULT_XJERK 10.0
|
||||
#endif
|
||||
|
||||
#if(ENABLED(Y_SpreadCycle) || !ENABLED(Y_2208))
|
||||
#define DEFAULT_YJERK 10.0
|
||||
#else
|
||||
#define DEFAULT_YJERK 5.0
|
||||
#endif
|
||||
#define DEFAULT_ZJERK 0.4
|
||||
#define DEFAULT_EJERK 5.0
|
||||
|
||||
/**
|
||||
@@ -749,7 +876,7 @@
|
||||
//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
|
||||
|
||||
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
|
||||
#define SOLENOID_PROBE PIN_11
|
||||
//#define SOLENOID_PROBE
|
||||
|
||||
// A sled-mounted probe like those designed by Charles Bell.
|
||||
//#define Z_PROBE_SLED
|
||||
@@ -778,15 +905,13 @@
|
||||
* O-- FRONT --+
|
||||
* (0,0)
|
||||
*/
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 37 // X offset: -left +right [of the nozzle]
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
|
||||
|
||||
// Certain types of probes need to stay away from edges
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER -22 // X offset: -left +right [of the nozzle]
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.5 // Z offset: -below +above [the nozzle]
|
||||
#define MIN_PROBE_EDGE 10
|
||||
|
||||
// X and Y axis travel speed (mm/m) between probes
|
||||
#define XY_PROBE_SPEED 3000
|
||||
#define XY_PROBE_SPEED 8000
|
||||
|
||||
// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2)
|
||||
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
|
||||
@@ -813,7 +938,7 @@
|
||||
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
|
||||
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
|
||||
*/
|
||||
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
|
||||
#define Z_CLEARANCE_DEPLOY_PROBE 5 // Z Clearance for Deploy/Stow
|
||||
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
|
||||
#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
|
||||
//#define Z_AFTER_PROBING 5 // Z position after probing is done
|
||||
@@ -850,15 +975,32 @@
|
||||
// @section machine
|
||||
|
||||
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
|
||||
#define INVERT_X_DIR true
|
||||
#define INVERT_Y_DIR true
|
||||
#define INVERT_Z_DIR false
|
||||
#if(ENABLED(X_2208))
|
||||
#define INVERT_X_DIR true
|
||||
#else
|
||||
#define INVERT_X_DIR false
|
||||
#endif
|
||||
#if(ENABLED(Y_2208))
|
||||
#define INVERT_Y_DIR true
|
||||
#else
|
||||
#define INVERT_Y_DIR false
|
||||
#endif
|
||||
#if(ENABLED(Z_2208))
|
||||
#define INVERT_Z_DIR false
|
||||
#else
|
||||
#define INVERT_Z_DIR true
|
||||
#endif
|
||||
|
||||
// @section extruder
|
||||
|
||||
// For direct drive extruder v9 set to true, for geared extruder set to false.
|
||||
#define INVERT_E0_DIR false
|
||||
#define INVERT_E1_DIR false
|
||||
#if(ENABLED(E_2208))
|
||||
#define INVERT_E0_DIR false
|
||||
#define INVERT_E1_DIR false
|
||||
#else
|
||||
#define INVERT_E0_DIR true
|
||||
#define INVERT_E1_DIR true
|
||||
#endif
|
||||
#define INVERT_E2_DIR false
|
||||
#define INVERT_E3_DIR false
|
||||
#define INVERT_E4_DIR false
|
||||
@@ -869,7 +1011,7 @@
|
||||
|
||||
//#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off.
|
||||
|
||||
//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
|
||||
#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
|
||||
// Be sure you have this distance over your Z_MAX_POS in case.
|
||||
|
||||
// Direction of endstops when homing; 1=MAX, -1=MIN
|
||||
@@ -929,10 +1071,17 @@
|
||||
* For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
|
||||
* By default the firmware assumes HIGH=FILAMENT PRESENT.
|
||||
*/
|
||||
|
||||
#if(ENABLED(RunoutSensor))
|
||||
#define FILAMENT_RUNOUT_SENSOR
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
|
||||
#define FIL_RUNOUT_INVERTING true // set to true to invert the logic of the sensor.
|
||||
#define FIL_RUNOUT_PIN 57
|
||||
#if ENABLED(ledgeFilSensor)
|
||||
#define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
|
||||
#else
|
||||
#define FIL_RUNOUT_INVERTING true // set to true to invert the logic of the sensor.
|
||||
#endif
|
||||
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
|
||||
#define FILAMENT_RUNOUT_SCRIPT "M600"
|
||||
#endif
|
||||
@@ -977,11 +1126,12 @@
|
||||
*/
|
||||
//#define AUTO_BED_LEVELING_3POINT
|
||||
//#define AUTO_BED_LEVELING_LINEAR
|
||||
#if(!ENABLED(UBL))
|
||||
#define AUTO_BED_LEVELING_BILINEAR
|
||||
#if(ENABLED(UBL))
|
||||
#define AUTO_BED_LEVELING_UBL
|
||||
#else
|
||||
#define AUTO_BED_LEVELING_UBL
|
||||
#define AUTO_BED_LEVELING_BILINEAR
|
||||
#endif
|
||||
|
||||
//#define MESH_BED_LEVELING
|
||||
|
||||
/**
|
||||
@@ -1006,7 +1156,7 @@
|
||||
// For Cartesian machines, instead of dividing moves on mesh boundaries,
|
||||
// split up moves into short segments like a Delta. This follows the
|
||||
// contours of the bed more closely than edge-to-edge straight moves.
|
||||
//#define SEGMENT_LEVELED_MOVES
|
||||
#define SEGMENT_LEVELED_MOVES
|
||||
#define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
|
||||
|
||||
/**
|
||||
@@ -1025,14 +1175,17 @@
|
||||
#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
|
||||
// Set the number of grid points per dimension.
|
||||
#define GRID_MAX_POINTS_X 9
|
||||
#define GRID_MAX_POINTS_X 6
|
||||
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
|
||||
|
||||
// Set the boundaries for probing (where the probe can reach).
|
||||
#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE + X_PROBE_OFFSET_FROM_EXTRUDER + 5
|
||||
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - X_PROBE_OFFSET_FROM_EXTRUDER - 5)
|
||||
#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE + Y_PROBE_OFFSET_FROM_EXTRUDER + 5
|
||||
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - Y_PROBE_OFFSET_FROM_EXTRUDER - 5)
|
||||
#define LEFT_PROBE_BED_POSITION 30
|
||||
#define RIGHT_PROBE_BED_POSITION 365
|
||||
#define FRONT_PROBE_BED_POSITION 30
|
||||
#define BACK_PROBE_BED_POSITION 365
|
||||
|
||||
// The Z probe minimum outer margin (to validate G29 parameters).
|
||||
#define MIN_PROBE_EDGE 10
|
||||
|
||||
// Probe along the Y axis, advancing X after each column
|
||||
//#define PROBE_Y_FIRST
|
||||
@@ -1061,16 +1214,16 @@
|
||||
//========================= Unified Bed Leveling ============================
|
||||
//===========================================================================
|
||||
|
||||
// #define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
|
||||
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
|
||||
|
||||
#define MESH_INSET 5 // Set Mesh bounds as an inset region of the bed
|
||||
#define MESH_INSET 35 // Set Mesh bounds as an inset region of the bed
|
||||
#define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
|
||||
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
|
||||
|
||||
#define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
|
||||
#define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
|
||||
|
||||
#define UBL_Z_RAISE_WHEN_OFF_MESH 0 // When the nozzle is off the mesh, this value is used
|
||||
#define UBL_Z_RAISE_WHEN_OFF_MESH 0.0 // When the nozzle is off the mesh, this value is used
|
||||
// as the Z-Height correction value.
|
||||
|
||||
#elif ENABLED(MESH_BED_LEVELING)
|
||||
@@ -1092,12 +1245,12 @@
|
||||
* Override if the automatically selected points are inadequate.
|
||||
*/
|
||||
#if ENABLED(AUTO_BED_LEVELING_3POINT) || ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#define PROBE_PT_1_X 40
|
||||
#define PROBE_PT_1_Y 360
|
||||
#define PROBE_PT_2_X 40
|
||||
#define PROBE_PT_2_Y 40
|
||||
#define PROBE_PT_3_X 360
|
||||
#define PROBE_PT_3_Y 40
|
||||
#define PROBE_PT_1_X 50
|
||||
#define PROBE_PT_1_Y 350
|
||||
#define PROBE_PT_2_X 50
|
||||
#define PROBE_PT_2_Y 50
|
||||
#define PROBE_PT_3_X 350
|
||||
#define PROBE_PT_3_Y 50
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -1115,7 +1268,7 @@
|
||||
//#define LEVEL_BED_CORNERS
|
||||
|
||||
#if ENABLED(LEVEL_BED_CORNERS)
|
||||
#define LEVEL_CORNERS_INSET 30 // (mm) An inset for corner leveling
|
||||
#define LEVEL_CORNERS_INSET 20 // (mm) An inset for corner leveling
|
||||
//#define LEVEL_CENTER_TOO // Move to the center after the last corner
|
||||
#endif
|
||||
|
||||
@@ -1123,7 +1276,7 @@
|
||||
* Commands to execute at the end of G29 probing.
|
||||
* Useful to retract or move the Z probe out of the way.
|
||||
*/
|
||||
#define Z_PROBE_END_SCRIPT "M280 P0 S90"
|
||||
//#define Z_PROBE_END_SCRIPT "M280 P0 S90"
|
||||
|
||||
|
||||
// @section homing
|
||||
@@ -1145,17 +1298,16 @@
|
||||
// - If stepper drivers time out, it will need X and Y homing again before Z homing.
|
||||
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
|
||||
// - Prevent Z homing when the Z probe is outside bed area.
|
||||
//
|
||||
#define Z_SAFE_HOMING
|
||||
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
#define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28).
|
||||
#define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28).
|
||||
#define Z_SAFE_HOMING_X_POINT 50 // X point for Z homing when homing all axis (G28).
|
||||
#define Z_SAFE_HOMING_Y_POINT 50 // Y point for Z homing when homing all axis (G28).
|
||||
#endif
|
||||
|
||||
// Homing speeds (mm/m)
|
||||
#define HOMING_FEEDRATE_XY (80*60)
|
||||
#define HOMING_FEEDRATE_Z (20*60)
|
||||
#define HOMING_FEEDRATE_XY (50*60)
|
||||
#define HOMING_FEEDRATE_Z (4*60)
|
||||
|
||||
// @section calibrate
|
||||
|
||||
@@ -1260,12 +1412,12 @@
|
||||
// @section temperature
|
||||
|
||||
// Preheat Constants
|
||||
#define PREHEAT_1_TEMP_HOTEND 180
|
||||
#define PREHEAT_1_TEMP_BED 70
|
||||
#define PREHEAT_1_TEMP_HOTEND 200
|
||||
#define PREHEAT_1_TEMP_BED 60
|
||||
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
|
||||
|
||||
#define PREHEAT_2_TEMP_HOTEND 240
|
||||
#define PREHEAT_2_TEMP_BED 110
|
||||
#define PREHEAT_2_TEMP_HOTEND 220
|
||||
#define PREHEAT_2_TEMP_BED 100
|
||||
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
|
||||
|
||||
/**
|
||||
@@ -1283,8 +1435,8 @@
|
||||
|
||||
#if ENABLED(NOZZLE_PARK_FEATURE)
|
||||
// Specify a park position as { X, Y, Z }
|
||||
#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
|
||||
#define NOZZLE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define NOZZLE_PARK_POINT { 10, 10, 20}
|
||||
#define NOZZLE_PARK_XY_FEEDRATE 70 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define NOZZLE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#endif
|
||||
|
||||
@@ -1439,7 +1591,7 @@
|
||||
* Enable one of the following items for a slower SPI transfer speed.
|
||||
* This may be required to resolve "volume init" errors.
|
||||
*/
|
||||
#define SPI_SPEED SPI_HALF_SPEED
|
||||
//#define SPI_SPEED SPI_HALF_SPEED
|
||||
//#define SPI_SPEED SPI_QUARTER_SPEED
|
||||
//#define SPI_SPEED SPI_EIGHTH_SPEED
|
||||
|
||||
@@ -1488,7 +1640,7 @@
|
||||
//
|
||||
// Set this option if CLOCKWISE causes values to DECREASE
|
||||
//
|
||||
#define REVERSE_ENCODER_DIRECTION
|
||||
//#define REVERSE_ENCODER_DIRECTION
|
||||
|
||||
//
|
||||
// This option reverses the encoder direction for navigating LCD menus.
|
||||
@@ -1534,7 +1686,7 @@
|
||||
//
|
||||
// Note: Usually sold with a white PCB.
|
||||
//
|
||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
|
||||
//
|
||||
// ULTIMAKER Controller.
|
||||
@@ -1661,7 +1813,7 @@
|
||||
// RepRapDiscount FULL GRAPHIC Smart Controller
|
||||
// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
|
||||
//
|
||||
//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
|
||||
//
|
||||
// ReprapWorld Graphical LCD
|
||||
|
||||
+28
-27
@@ -75,8 +75,8 @@
|
||||
* THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
|
||||
*/
|
||||
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
||||
#define THERMAL_PROTECTION_PERIOD 120 // Seconds
|
||||
#define THERMAL_PROTECTION_HYSTERESIS 5 // Degrees Celsius
|
||||
#define THERMAL_PROTECTION_PERIOD 180 // Seconds
|
||||
#define THERMAL_PROTECTION_HYSTERESIS 2 // Degrees Celsius
|
||||
|
||||
/**
|
||||
* Whenever an M104, M109, or M303 increases the target temperature, the
|
||||
@@ -90,21 +90,21 @@
|
||||
* and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set
|
||||
* below 2.
|
||||
*/
|
||||
#define WATCH_TEMP_PERIOD 120 // Seconds
|
||||
#define WATCH_TEMP_INCREASE 5 // Degrees Celsius
|
||||
#define WATCH_TEMP_PERIOD 180 // Seconds
|
||||
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Thermal Protection parameters for the bed are just as above for hotends.
|
||||
*/
|
||||
#if ENABLED(THERMAL_PROTECTION_BED)
|
||||
#define THERMAL_PROTECTION_BED_PERIOD 40 // Seconds
|
||||
#define THERMAL_PROTECTION_BED_PERIOD 300 // Seconds
|
||||
#define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
|
||||
|
||||
/**
|
||||
* As described above, except for the bed (M140/M190/M303).
|
||||
*/
|
||||
#define WATCH_BED_TEMP_PERIOD 120 // Seconds
|
||||
#define WATCH_BED_TEMP_PERIOD 60 // Seconds
|
||||
#define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
|
||||
#endif
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
// When first starting the main fan, run it at full speed for the
|
||||
// given number of milliseconds. This gets the fan spinning reliably
|
||||
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
|
||||
//#define FAN_KICKSTART_TIME 100
|
||||
#define FAN_KICKSTART_TIME 100
|
||||
|
||||
/**
|
||||
* PWM Fan Scaling
|
||||
@@ -260,13 +260,13 @@
|
||||
/**
|
||||
* M355 Case Light on-off / brightness
|
||||
*/
|
||||
//#define CASE_LIGHT_ENABLE
|
||||
#define CASE_LIGHT_ENABLE
|
||||
#if ENABLED(CASE_LIGHT_ENABLE)
|
||||
//#define CASE_LIGHT_PIN 4 // Override the default pin if needed
|
||||
#define CASE_LIGHT_PIN 5 // Override the default pin if needed
|
||||
#define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW
|
||||
#define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on
|
||||
#define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin)
|
||||
//#define MENU_ITEM_CASE_LIGHT // Add a Case Light option to the LCD main menu
|
||||
#define CASE_LIGHT_DEFAULT_BRIGHTNESS 255 // Set default power-up brightness (0-255, requires PWM pin)
|
||||
#define MENU_ITEM_CASE_LIGHT // Add a Case Light option to the LCD main menu
|
||||
//#define CASE_LIGHT_USE_NEOPIXEL // Use Neopixel LED as case light, requires NEOPIXEL_LED.
|
||||
#if ENABLED(CASE_LIGHT_USE_NEOPIXEL)
|
||||
#define CASE_LIGHT_NEOPIXEL_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White }
|
||||
@@ -386,13 +386,13 @@
|
||||
#define Y_HOME_BUMP_MM 5
|
||||
#define Z_HOME_BUMP_MM 2
|
||||
#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially
|
||||
#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
//#define HOME_Y_BEFORE_X
|
||||
|
||||
// Enable this if X or Y can't home without homing the other axis first.
|
||||
#define CODEPENDENT_XY_HOMING
|
||||
//#define CODEPENDENT_XY_HOMING
|
||||
|
||||
// @section machine
|
||||
|
||||
@@ -486,7 +486,7 @@
|
||||
* M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
|
||||
*/
|
||||
//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps
|
||||
#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
|
||||
//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
|
||||
//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
|
||||
|
||||
// Use an I2C based DIGIPOT (e.g., Azteeg X3 Pro)
|
||||
@@ -539,7 +539,7 @@
|
||||
#define LCD_SET_PROGRESS_MANUALLY
|
||||
|
||||
#if ENABLED(SDSUPPORT) || ENABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||
#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
|
||||
//#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
#define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
|
||||
#define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
|
||||
@@ -678,7 +678,7 @@
|
||||
*/
|
||||
#if ENABLED(DOGLCD)
|
||||
// Show SD percentage next to the progress bar
|
||||
//#define DOGM_SD_PERCENT
|
||||
#define DOGM_SD_PERCENT
|
||||
|
||||
// Enable to save many cycles by drawing a hollow frame on the Info Screen
|
||||
#define XYZ_HOLLOW_FRAME
|
||||
@@ -748,12 +748,12 @@
|
||||
#if ENABLED(BABYSTEPPING)
|
||||
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
|
||||
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
|
||||
#define BABYSTEP_MULTIPLICATOR 20 // Babysteps are very small. Increase for faster motion.
|
||||
#define BABYSTEP_MULTIPLICATOR 25 // Babysteps are very small. Increase for faster motion.
|
||||
#define BABYSTEP_ZPROBE_OFFSET // Enable to combine M851 and Babystepping
|
||||
#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
|
||||
#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
|
||||
// Note: Extra time may be added to mitigate controller latency.
|
||||
//#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
|
||||
#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
|
||||
#endif
|
||||
|
||||
// @section extruder
|
||||
@@ -774,7 +774,9 @@
|
||||
* See http://marlinfw.org/docs/features/lin_advance.html for full instructions.
|
||||
* Mention @Sebastianv650 on GitHub to alert the author of any issues.
|
||||
*/
|
||||
#if(ENABLED(E_2208) && !ENABLED(E_SpreadCycle))
|
||||
#define LIN_ADVANCE
|
||||
#endif
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
#define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed
|
||||
//#define LA_DEBUG // If enabled, this will generate debug information output over USB.
|
||||
@@ -804,7 +806,7 @@
|
||||
#endif
|
||||
|
||||
// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
|
||||
//#define BEZIER_CURVE_SUPPORT
|
||||
#define BEZIER_CURVE_SUPPORT
|
||||
|
||||
// G38.2 and G38.3 Probe Target
|
||||
// Set MULTIPLE_PROBING if you want G38 to double touch
|
||||
@@ -966,7 +968,7 @@
|
||||
* 'M106 P<fan> T2' : Use the set secondary speed
|
||||
* 'M106 P<fan> T1' : Restore the previous fan speed
|
||||
*/
|
||||
#define EXTRA_FAN_SPEED
|
||||
//#define EXTRA_FAN_SPEED
|
||||
|
||||
/**
|
||||
* Advanced Pause
|
||||
@@ -1010,11 +1012,11 @@
|
||||
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
|
||||
|
||||
#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
|
||||
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
|
||||
#define FILAMENT_CHANGE_ALERT_BEEPS 2 // Number of alert beeps to play when a response is needed.
|
||||
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
|
||||
|
||||
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
|
||||
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
|
||||
#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
|
||||
|
||||
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
|
||||
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
|
||||
@@ -1484,23 +1486,22 @@
|
||||
/**
|
||||
* User-defined menu items that execute custom GCode
|
||||
*/
|
||||
#if(ENABLED(UBL))
|
||||
#if(ENABLED(UBL))
|
||||
#define CUSTOM_USER_MENUS
|
||||
#endif
|
||||
|
||||
#if ENABLED(CUSTOM_USER_MENUS)
|
||||
//#define USER_SCRIPT_DONE "M117 User Script Done"
|
||||
//#define USER_SCRIPT_DONE "M117 User Script Done"
|
||||
#define USER_SCRIPT_AUDIBLE_FEEDBACK
|
||||
#define USER_SCRIPT_RETURN // Return to status screen after a script
|
||||
|
||||
#define USER_DESC_1 "UBL Commission Step 1"
|
||||
#define USER_GCODE_1 "M502 \n M500 \n M501 \n M190 S60 \n M104 S225 \n G28 \n G29 P1 \n G29 S1 \n M117 Run Step 2 \n"
|
||||
#define USER_GCODE_1 "M502 \n M500 \n M501 \n M190 S75 \n G28 \n G29 P1 \n G29 S1 \n M117 Run Step 2 \n"
|
||||
|
||||
#define USER_DESC_2 "UBL Commission Step 2"
|
||||
#define USER_GCODE_2 "G29 S1 \n G29 S0 \n G29 F 10.0 \n G29 A \n M500 \n G28 \n G29 L1 \n M109 S225 \n G1 X150 Y 150 \n G1 Z0 \n M117 Set Z Offset \n"
|
||||
|
||||
#define USER_DESC_3 "Prep for Z Adjust"
|
||||
#define USER_GCODE_3 "M190 60 \n M104 235 \n G28 \n G29 L1 \n G1 X150 Y 150 \n G1 Z0 \n"
|
||||
#define USER_GCODE_3 "M190 75 \n M104 235 \n G28 \n G29 L1 \n G1 X150 Y 150 \n G1 Z0 \n"
|
||||
|
||||
#define USER_DESC_4 "Fill Mesh Points"
|
||||
#define USER_GCODE_4 "G29 P3 \n G29 P3 \n G29 P3 \n G29 T \n"
|
||||
|
||||
+4
-4
@@ -35,7 +35,7 @@
|
||||
/**
|
||||
* Marlin release version identifier
|
||||
*/
|
||||
#define SHORT_BUILD_VERSION "TM3D-1.1.9_M3"
|
||||
#define SHORT_BUILD_VERSION "1.1.9-R4"
|
||||
|
||||
/**
|
||||
* Verbose version identifier which should contain a reference to the location
|
||||
@@ -48,7 +48,7 @@
|
||||
* here we define this default string as the date where the latest release
|
||||
* version was tagged.
|
||||
*/
|
||||
#define STRING_DISTRIBUTION_DATE "2018-11-07"
|
||||
#define STRING_DISTRIBUTION_DATE "2019-01-10"
|
||||
|
||||
/**
|
||||
* Required minimum Configuration.h and Configuration_adv.h file versions.
|
||||
@@ -70,7 +70,7 @@
|
||||
/**
|
||||
* Defines a generic printer name to be output to the LCD after booting Marlin.
|
||||
*/
|
||||
#define MACHINE_NAME "3D Printer"
|
||||
#define MACHINE_NAME "TM3D Raptor"
|
||||
|
||||
/**
|
||||
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
|
||||
@@ -78,7 +78,7 @@
|
||||
* has a distinct Github fork— the Source Code URL should just be the main
|
||||
* Marlin repository.
|
||||
*/
|
||||
#define SOURCE_CODE_URL "tinymachines3d.com"
|
||||
#define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin"
|
||||
|
||||
/**
|
||||
* Default generic printer UUID.
|
||||
|
||||
+239
-94
@@ -28,27 +28,39 @@
|
||||
#error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#if HOTENDS > 3 || E_STEPPERS > 3
|
||||
#error "RUMBA supports up to 3 hotends / E-steppers. Comment out this line to continue."
|
||||
#if E_STEPPERS > 3 || HOTENDS > 3
|
||||
#error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going."
|
||||
#endif
|
||||
|
||||
#define DEFAULT_MACHINE_NAME "Rumba"
|
||||
#define BOARD_NAME "Rumba"
|
||||
//#endif
|
||||
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Servos
|
||||
//
|
||||
#define SERVO0_PIN 5
|
||||
#ifdef IS_RAMPS_13
|
||||
#define SERVO0_PIN 7 // RAMPS_13 // Will conflict with BTN_EN2 on LCD_I2C_VIKI
|
||||
#else
|
||||
#define SERVO0_PIN 11
|
||||
#endif
|
||||
#define SERVO1_PIN 6
|
||||
#define SERVO2_PIN 5
|
||||
#define SERVO3_PIN -1
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_MIN_PIN 37
|
||||
#define X_MAX_PIN 36
|
||||
#define Y_MIN_PIN 35
|
||||
#define Y_MAX_PIN 34
|
||||
#define Z_MIN_PIN 33
|
||||
#define Z_MAX_PIN 32
|
||||
#define X_MIN_PIN 3
|
||||
#ifndef X_MAX_PIN
|
||||
#define X_MAX_PIN 2
|
||||
#endif
|
||||
#define Y_MIN_PIN 14
|
||||
#define Y_MAX_PIN 15
|
||||
#define Z_MIN_PIN 18
|
||||
#define Z_MAX_PIN 19
|
||||
|
||||
//
|
||||
// Z Probe (when not Z_MIN_PIN)
|
||||
@@ -57,122 +69,255 @@
|
||||
#define Z_MIN_PROBE_PIN 32
|
||||
#endif
|
||||
|
||||
#define SLED_PIN -1
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 17
|
||||
#define X_DIR_PIN 16
|
||||
#define X_ENABLE_PIN 48
|
||||
#define X_STEP_PIN 54
|
||||
#define X_DIR_PIN 55
|
||||
#define X_ENABLE_PIN 38
|
||||
#define X_CS_PIN 53
|
||||
|
||||
#define Y_STEP_PIN 60
|
||||
#define Y_DIR_PIN 61
|
||||
#define Y_ENABLE_PIN 56
|
||||
#define Y_CS_PIN 49
|
||||
|
||||
#define Y_STEP_PIN 54
|
||||
#define Y_DIR_PIN 47
|
||||
#define Y_ENABLE_PIN 55
|
||||
|
||||
#define Z_STEP_PIN 57
|
||||
#define Z_DIR_PIN 56
|
||||
#define Z_STEP_PIN 46
|
||||
#define Z_DIR_PIN 48
|
||||
#define Z_ENABLE_PIN 62
|
||||
#define Z_CS_PIN 40
|
||||
|
||||
#define E0_STEP_PIN 23
|
||||
#define E0_DIR_PIN 22
|
||||
#define E0_STEP_PIN 26
|
||||
#define E0_DIR_PIN 28
|
||||
#define E0_ENABLE_PIN 24
|
||||
#define E0_CS_PIN 42
|
||||
|
||||
#define E1_STEP_PIN 26
|
||||
#define E1_DIR_PIN 25
|
||||
#define E1_ENABLE_PIN 27
|
||||
#define E1_STEP_PIN 36
|
||||
#define E1_DIR_PIN 34
|
||||
#define E1_ENABLE_PIN 30
|
||||
#define E1_CS_PIN 44
|
||||
|
||||
#define E2_STEP_PIN 29
|
||||
#define E2_DIR_PIN 28
|
||||
#define E2_ENABLE_PIN 39
|
||||
#define E2_STEP_PIN 42
|
||||
#define E2_DIR_PIN 43
|
||||
#define E2_ENABLE_PIN 44
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#if TEMP_SENSOR_0 == -1
|
||||
#define TEMP_0_PIN 6 // Analog Input (connector *K1* on RUMBA thermocouple ADD ON is used)
|
||||
#define TEMP_0_PIN 13 // Analog Input
|
||||
#define TEMP_1_PIN 15 // Analog Input
|
||||
#define TEMP_BED_PIN 14 // Analog Input
|
||||
|
||||
// SPI for Max6675 or Max31855 Thermocouple
|
||||
#if DISABLED(SDSUPPORT)
|
||||
#define MAX6675_SS 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
|
||||
#else
|
||||
#define TEMP_0_PIN 15 // Analog Input (default connector for thermistor *T0* on rumba board is used)
|
||||
#define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_1 == -1
|
||||
#define TEMP_1_PIN 5 // Analog Input (connector *K2* on RUMBA thermocouple ADD ON is used)
|
||||
#else
|
||||
#define TEMP_1_PIN 14 // Analog Input (default connector for thermistor *T1* on rumba board is used)
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#define TEMP_2_PIN 7 // Analog Input (connector *K3* on RUMBA thermocouple ADD ON is used <-- this can't be used when TEMP_SENSOR_BED is defined as thermocouple)
|
||||
#else
|
||||
#define TEMP_2_PIN 13 // Analog Input (default connector for thermistor *T2* on rumba board is used)
|
||||
#endif
|
||||
|
||||
// optional for extruder 4 or chamber:
|
||||
//#define TEMP_X_PIN 12 // Analog Input (default connector for thermistor *T3* on rumba board is used)
|
||||
//#define TEMP_CHAMBER_PIN 12 // Analog Input (default connector for thermistor *T3* on rumba board is used)
|
||||
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#define TEMP_BED_PIN 7 // Analog Input (connector *K3* on RUMBA thermocouple ADD ON is used <-- this can't be used when TEMP_SENSOR_2 is defined as thermocouple)
|
||||
#else
|
||||
#define TEMP_BED_PIN 11 // Analog Input (default connector for thermistor *THB* on rumba board is used)
|
||||
//
|
||||
// Augmentation for auto-assigning RAMPS plugs
|
||||
//
|
||||
#if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
|
||||
#if HOTENDS > 1
|
||||
#if TEMP_SENSOR_BED
|
||||
#define IS_RAMPS_EEB
|
||||
#else
|
||||
#define IS_RAMPS_EEF
|
||||
#endif
|
||||
#elif TEMP_SENSOR_BED
|
||||
#define IS_RAMPS_EFB
|
||||
#else
|
||||
#define IS_RAMPS_EFF
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 2
|
||||
#define HEATER_1_PIN 3
|
||||
#define HEATER_2_PIN 6
|
||||
#define HEATER_3_PIN 8
|
||||
#define HEATER_BED_PIN 9
|
||||
#define HEATER_0_PIN 10
|
||||
#define HEATER_1_PIN 58
|
||||
//#define HEATER_2_PIN 6
|
||||
//#define HEATER_3_PIN 8
|
||||
#define HEATER_BED_PIN 8
|
||||
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN 7
|
||||
#endif
|
||||
#define FAN1_PIN 8
|
||||
#define LED4_PIN 5
|
||||
#define LASER_PIN -1
|
||||
|
||||
#define FAN_PIN 9
|
||||
#define FAN1_PIN -1
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 53
|
||||
#define LED_PIN 13
|
||||
#define PS_ON_PIN 45
|
||||
#define KILL_PIN 46
|
||||
#define CASE_LIGHT_PIN 45
|
||||
|
||||
//
|
||||
// M3/M4/M5 - Spindle/Laser Control
|
||||
//
|
||||
#ifndef SPINDLE_LASER_PWM_PIN
|
||||
#define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM. Pin 4 interrupts OC0* and OC1* always in use?
|
||||
#endif
|
||||
#ifndef SPINDLE_LASER_ENABLE_PIN
|
||||
#define SPINDLE_LASER_ENABLE_PIN 14 // Pin should have a pullup!
|
||||
#endif
|
||||
#ifndef SPINDLE_DIR_PIN
|
||||
#define SPINDLE_DIR_PIN 15
|
||||
#endif
|
||||
// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector
|
||||
#define FILWIDTH_PIN 5 // Analog Input
|
||||
|
||||
// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector
|
||||
//#define FIL_RUNOUT_PIN 4
|
||||
|
||||
#define PS_ON_PIN 12
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#define SD_DETECT_PIN 49
|
||||
#define BEEPER_PIN 44
|
||||
#define LCD_PINS_D7 40
|
||||
#define BTN_EN1 11
|
||||
#define BTN_EN2 12
|
||||
#define BTN_ENC 43
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
|
||||
#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
#define LCD_PINS_RS 49 // CS chip select /SS chip slave select
|
||||
#define LCD_PINS_ENABLE 51 // SID (MOSI)
|
||||
#define LCD_PINS_D4 52 // SCK (CLK) clock
|
||||
#elif ENABLED(NEWPANEL) && ENABLED(PANEL_ONE)
|
||||
#define LCD_PINS_RS 40
|
||||
#define LCD_PINS_ENABLE 42
|
||||
#define LCD_PINS_D4 65
|
||||
#define LCD_PINS_D5 66
|
||||
#define LCD_PINS_D6 44
|
||||
#define LCD_PINS_D7 64
|
||||
#else
|
||||
#define LCD_PINS_RS 16
|
||||
#define LCD_PINS_ENABLE 17
|
||||
#define LCD_PINS_D4 23
|
||||
#define LCD_PINS_D5 25
|
||||
#define LCD_PINS_D6 27
|
||||
#define LCD_PINS_D7 29
|
||||
#if DISABLED(NEWPANEL)
|
||||
#define BEEPER_PIN 33
|
||||
// Buttons are attached to a shift register
|
||||
// Not wired yet
|
||||
//#define SHIFT_CLK 38
|
||||
//#define SHIFT_LD 42
|
||||
//#define SHIFT_OUT 40
|
||||
//#define SHIFT_EN 17
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(NEWPANEL)
|
||||
|
||||
#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
|
||||
#define BEEPER_PIN 37
|
||||
|
||||
#define BTN_EN1 31
|
||||
#define BTN_EN2 33
|
||||
#define BTN_ENC 35
|
||||
|
||||
#define SD_DETECT_PIN 49
|
||||
#define KILL_PIN 41
|
||||
|
||||
#if ENABLED(BQ_LCD_SMART_CONTROLLER)
|
||||
#define LCD_BACKLIGHT_PIN 39
|
||||
#endif
|
||||
|
||||
#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
#define BTN_EN1 64
|
||||
#define BTN_EN2 59
|
||||
#define BTN_ENC 63
|
||||
#define SD_DETECT_PIN 42
|
||||
#elif ENABLED(LCD_I2C_PANELOLU2)
|
||||
#define BTN_EN1 47 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 43
|
||||
#define BTN_ENC 32
|
||||
#define LCD_SDSS 53
|
||||
#define SD_DETECT_PIN -1
|
||||
#define KILL_PIN 41
|
||||
#elif ENABLED(LCD_I2C_VIKI)
|
||||
#define BTN_EN1 22 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 7 // http://files.panucatt.com/datasheets/viki_wiring_diagram.pdf
|
||||
// tells about 40/42.
|
||||
// 22/7 are unused on RAMPS_14. 22 is unused and 7 the SERVO0_PIN on RAMPS_13.
|
||||
#define BTN_ENC -1
|
||||
#define LCD_SDSS 53
|
||||
#define SD_DETECT_PIN 49
|
||||
#elif ENABLED(VIKI2) || ENABLED(miniVIKI)
|
||||
#define BEEPER_PIN 33
|
||||
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 44
|
||||
#define DOGLCD_CS 45
|
||||
#define LCD_SCREEN_ROT_180
|
||||
|
||||
#define BTN_EN1 22
|
||||
#define BTN_EN2 7
|
||||
#define BTN_ENC 39
|
||||
|
||||
#define SDSS 53
|
||||
#define SD_DETECT_PIN -1 // Pin 49 for display sd interface, 72 for easy adapter board
|
||||
|
||||
#define KILL_PIN 31
|
||||
|
||||
#define STAT_LED_RED_PIN 32
|
||||
#define STAT_LED_BLUE_PIN 35
|
||||
|
||||
#elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define BTN_EN1 35 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 37
|
||||
#define BTN_ENC 31
|
||||
#define SD_DETECT_PIN 49
|
||||
#define LCD_SDSS 53
|
||||
#define KILL_PIN 41
|
||||
#define BEEPER_PIN 23
|
||||
#define DOGLCD_CS 29
|
||||
#define DOGLCD_A0 27
|
||||
#define LCD_BACKLIGHT_PIN 33
|
||||
#elif ENABLED(MINIPANEL)
|
||||
#define BEEPER_PIN 42
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 44
|
||||
#define DOGLCD_CS 66
|
||||
#define LCD_BACKLIGHT_PIN 65 // backlight LED on A11/D65
|
||||
#define SDSS 53
|
||||
|
||||
#define KILL_PIN 64
|
||||
// GLCD features
|
||||
//#define LCD_CONTRAST 190
|
||||
// Uncomment screen orientation
|
||||
//#define LCD_SCREEN_ROT_90
|
||||
//#define LCD_SCREEN_ROT_180
|
||||
//#define LCD_SCREEN_ROT_270
|
||||
// The encoder and click button
|
||||
#define BTN_EN1 40
|
||||
#define BTN_EN2 63
|
||||
#define BTN_ENC 59
|
||||
// not connected to a pin
|
||||
#define SD_DETECT_PIN 49
|
||||
|
||||
#else
|
||||
|
||||
// Beeper on AUX-4
|
||||
#define BEEPER_PIN 33
|
||||
|
||||
// buttons are directly attached using AUX-2
|
||||
#if ENABLED(REPRAPWORLD_KEYPAD)
|
||||
#define BTN_EN1 64 // encoder
|
||||
#define BTN_EN2 59 // encoder
|
||||
#define BTN_ENC 63 // enter button
|
||||
#define SHIFT_OUT 40 // shift register
|
||||
#define SHIFT_CLK 44 // shift register
|
||||
#define SHIFT_LD 42 // shift register
|
||||
#elif ENABLED(PANEL_ONE)
|
||||
#define BTN_EN1 59 // AUX2 PIN 3
|
||||
#define BTN_EN2 63 // AUX2 PIN 4
|
||||
#define BTN_ENC 49 // AUX3 PIN 7
|
||||
#else
|
||||
#define BTN_EN1 37
|
||||
#define BTN_EN2 35
|
||||
#define BTN_ENC 31 // the click
|
||||
#endif
|
||||
|
||||
#if ENABLED(G3D_PANEL)
|
||||
#define SD_DETECT_PIN 49
|
||||
#define KILL_PIN 41
|
||||
#else
|
||||
//#define SD_DETECT_PIN -1 // Ramps doesn't use this
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // NEWPANEL
|
||||
|
||||
#endif // ULTRA_LCD
|
||||
|
||||
#if ENABLED(MKS_12864OLED) || ENABLED(MKS_12864OLED_SSD1306)
|
||||
#define LCD_PINS_DC 38 // Set as output on init
|
||||
#define LCD_PINS_RS 41 // Pull low for 1s to init
|
||||
// DOGM SPI LCD Support
|
||||
#define DOGLCD_CS 19
|
||||
#define DOGLCD_MOSI 42
|
||||
#define DOGLCD_SCK 18
|
||||
#define DOGLCD_A0 LCD_PINS_DC
|
||||
#else
|
||||
#define LCD_PINS_RS 19
|
||||
#define LCD_PINS_ENABLE 42
|
||||
#define LCD_PINS_D4 18
|
||||
#define LCD_PINS_D5 38
|
||||
#define LCD_PINS_D6 41
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,935 @@
|
||||
#######################################
|
||||
#
|
||||
# Marlin 3D Printer Firmware
|
||||
# Copyright (C) 2018 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
#
|
||||
# Based on Sprinter and grbl.
|
||||
# Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
#
|
||||
# Description: script to automate PlatformIO builds
|
||||
# CLI: python auto_build.py build_option
|
||||
# build_option (required)
|
||||
# build executes -> platformio run -e target_env
|
||||
# clean executes -> platformio run --target clean -e target_env
|
||||
# upload executes -> platformio run --target upload -e target_env
|
||||
# traceback executes -> platformio run --target upload -e target_env
|
||||
# program executes -> platformio run --target program -e target_env
|
||||
# test executes -> platformio test upload -e target_env
|
||||
# remote executes -> platformio remote run --target upload -e target_env
|
||||
# debug executes -> platformio debug -e target_env
|
||||
#
|
||||
# 'traceback' just uses the debug variant of the target environment if one exists
|
||||
#
|
||||
#######################################
|
||||
|
||||
#######################################
|
||||
#
|
||||
# General program flow
|
||||
#
|
||||
# 1. Scans Configuration.h for the motherboard name and Marlin version.
|
||||
# 2. Scans pins.h for the motherboard.
|
||||
# returns the CPU(s) and platformio environment(s) used by the motherboard
|
||||
# 3. If further info is needed then a popup gets it from the user.
|
||||
# 4. The OUTPUT_WINDOW class creates a window to display the output of the PlatformIO program.
|
||||
# 5. A thread is created by the OUTPUT_WINDOW class in order to execute the RUN_PIO function.
|
||||
# 6. The RUN_PIO function uses a subprocess to run the CLI version of PlatformIO.
|
||||
# 7. The "iter(pio_subprocess.stdout.readline, '')" function is used to stream the output of
|
||||
# PlatformIO back to the RUN_PIO function.
|
||||
# 8. Each line returned from PlatformIO is formatted to match the color coding seen in the
|
||||
# PlatformIO GUI.
|
||||
# 9. If there is a color change within a line then the line is broken at each color change
|
||||
# and sent separately.
|
||||
# 10. Each formatted segment (could be a full line or a split line) is put into the queue
|
||||
# IO_queue as it arrives from the platformio subprocess.
|
||||
# 11. The OUTPUT_WINDOW class periodically samples IO_queue. If data is available then it
|
||||
# is written to the window.
|
||||
# 12. The window stays open until the user closes it.
|
||||
# 13. The OUTPUT_WINDOW class continues to execute as long as the window is open. This allows
|
||||
# copying, saving, scrolling of the window. A right click popup is available.
|
||||
#
|
||||
#######################################
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
num_args = len(sys.argv)
|
||||
if num_args > 1:
|
||||
build_type = str(sys.argv[1])
|
||||
else:
|
||||
print 'Please specify build type'
|
||||
exit()
|
||||
|
||||
print'build_type: ', build_type
|
||||
|
||||
print '\nWorking\n'
|
||||
|
||||
python_ver = sys.version_info[0] # major version - 2 or 3
|
||||
|
||||
if python_ver == 2:
|
||||
print "python version " + str(sys.version_info[0]) + "." + str(sys.version_info[1]) + "." + str(sys.version_info[2])
|
||||
else:
|
||||
print "python version " + str(sys.version_info[0])
|
||||
print "This script only runs under python 2"
|
||||
exit()
|
||||
|
||||
#########
|
||||
# Python 2 error messages:
|
||||
# Can't find a usable init.tcl in the following directories ...
|
||||
# error "invalid command name "tcl_findLibrary""
|
||||
#
|
||||
# Fix for the above errors on my Win10 system:
|
||||
# search all init.tcl files for the line "package require -exact Tcl" that has the highest 8.5.x number
|
||||
# copy it into the first directory listed in the error messages
|
||||
# set the environmental variables TCLLIBPATH and TCL_LIBRARY to the directory where you found the init.tcl file
|
||||
# reboot
|
||||
#########
|
||||
|
||||
#globals
|
||||
target_env = ''
|
||||
board_name = ''
|
||||
|
||||
|
||||
|
||||
##########################################################################################
|
||||
#
|
||||
# popup to get input from user
|
||||
#
|
||||
##########################################################################################
|
||||
|
||||
def get_answer(board_name, cpu_label_txt, cpu_a_txt, cpu_b_txt):
|
||||
|
||||
|
||||
if python_ver == 2:
|
||||
import Tkinter as tk
|
||||
else:
|
||||
import tkinter as tk
|
||||
|
||||
def CPU_exit_3(): # forward declare functions
|
||||
|
||||
CPU_exit_3_()
|
||||
def CPU_exit_4():
|
||||
|
||||
CPU_exit_4_()
|
||||
def kill_session():
|
||||
kill_session_()
|
||||
|
||||
root_get_answer = tk.Tk()
|
||||
|
||||
root_get_answer.chk_state_1 = 1 # declare variables used by TK and enable
|
||||
|
||||
chk_state_1 = 0 # set initial state of check boxes
|
||||
|
||||
|
||||
global get_answer_val
|
||||
get_answer_val = 2 # return get_answer_val, set default to match chk_state_1 default
|
||||
|
||||
|
||||
l1 = tk.Label(text=board_name,
|
||||
fg = "light green",
|
||||
bg = "dark green",
|
||||
font = "Helvetica 12 bold").grid(row=1)
|
||||
|
||||
l2 = tk.Label(text=cpu_label_txt,
|
||||
fg = "light green",
|
||||
bg = "dark green",
|
||||
font = "Helvetica 16 bold italic").grid(row=2)
|
||||
|
||||
b4 = tk.Checkbutton(text=cpu_a_txt,
|
||||
fg = "black",
|
||||
font = "Times 20 bold ",
|
||||
variable=chk_state_1, onvalue=1, offvalue=0,
|
||||
|
||||
command = CPU_exit_3).grid(row=3)
|
||||
|
||||
b5 = tk.Checkbutton(text=cpu_b_txt,
|
||||
fg = "black",
|
||||
font = "Times 20 bold ",
|
||||
variable=chk_state_1, onvalue=0, offvalue=1,
|
||||
|
||||
command = CPU_exit_4).grid(row=4) # use same variable but inverted so they will track
|
||||
b6 = tk.Button(text="CONFIRM",
|
||||
fg = "blue",
|
||||
font = "Times 20 bold ",
|
||||
command = root_get_answer.destroy).grid(row=5, pady=4)
|
||||
|
||||
b7 = tk.Button(text="CANCEL",
|
||||
fg = "red",
|
||||
font = "Times 12 bold ",
|
||||
command = kill_session).grid(row=6, pady=4)
|
||||
|
||||
|
||||
def CPU_exit_3_():
|
||||
global get_answer_val
|
||||
get_answer_val = 1
|
||||
|
||||
def CPU_exit_4_():
|
||||
global get_answer_val
|
||||
get_answer_val = 2
|
||||
|
||||
def kill_session_():
|
||||
raise SystemExit(0) # kill everything
|
||||
|
||||
root_get_answer.mainloop()
|
||||
|
||||
# end - get answer
|
||||
|
||||
|
||||
|
||||
def env_name_check(argument):
|
||||
name_check = {
|
||||
'teensy35' : True,
|
||||
'teensy20' : True,
|
||||
'STM32F4' : True,
|
||||
'STM32F1' : True,
|
||||
'sanguino_atmega644p' : True,
|
||||
'sanguino_atmega1284p' : True,
|
||||
'rambo' : True,
|
||||
'melzi_optiboot' : True,
|
||||
'melzi' : True,
|
||||
'megaatmega2560' : True,
|
||||
'megaatmega1280' : True,
|
||||
'malyanm200' : True,
|
||||
'LPC1768' : True,
|
||||
'DUE_debug' : True,
|
||||
'DUE_USB' : True,
|
||||
'DUE' : True
|
||||
}
|
||||
|
||||
return name_check.get(argument, False)
|
||||
|
||||
|
||||
# gets the last build environment
|
||||
def get_build_last():
|
||||
env_last = ''
|
||||
DIR_PWD = os.listdir('.')
|
||||
if '.pioenvs' in DIR_PWD:
|
||||
date_last = 0.0
|
||||
DIR__pioenvs = os.listdir('.pioenvs')
|
||||
for name in DIR__pioenvs:
|
||||
if env_name_check(name):
|
||||
DIR_temp = os.listdir('.pioenvs/' + name)
|
||||
for names_temp in DIR_temp:
|
||||
if 0 == names_temp.find('firmware.'):
|
||||
date_temp = os.path.getmtime('.pioenvs/' + name + '/' + names_temp)
|
||||
if date_temp > date_last:
|
||||
date_last = date_temp
|
||||
env_last = name
|
||||
return env_last
|
||||
|
||||
|
||||
# gets the board being built from the Configuration.h file
|
||||
# returns: board name, major version of Marlin being used (1 or 2)
|
||||
def get_board_name():
|
||||
board_name = ''
|
||||
# get board name
|
||||
|
||||
with open('Marlin/Configuration.h', 'r') as myfile:
|
||||
Configuration_h = myfile.read()
|
||||
|
||||
Configuration_h = Configuration_h.split('\n')
|
||||
Marlin_ver = 0 # set version to invalid number
|
||||
for lines in Configuration_h:
|
||||
if 0 == lines.find('#define CONFIGURATION_H_VERSION 01'):
|
||||
Marlin_ver = 1
|
||||
if 0 == lines.find('#define CONFIGURATION_H_VERSION 02'):
|
||||
Marlin_ver = 2
|
||||
board = lines.find(' BOARD_') + 1
|
||||
motherboard = lines.find(' MOTHERBOARD ') + 1
|
||||
define = lines.find('#define ')
|
||||
comment = lines.find('//')
|
||||
if (comment == -1 or comment > board) and \
|
||||
board > motherboard and \
|
||||
motherboard > define and \
|
||||
define >= 0 :
|
||||
spaces = lines.find(' ', board) # find the end of the board substring
|
||||
if spaces == -1:
|
||||
board_name = lines[board : ]
|
||||
else:
|
||||
board_name = lines[board : spaces]
|
||||
break
|
||||
|
||||
|
||||
return board_name, Marlin_ver
|
||||
|
||||
|
||||
# extract first environment name it finds after the start position
|
||||
# returns: environment name and position to start the next search from
|
||||
def get_env_from_line(line, start_position):
|
||||
env = ''
|
||||
next_position = -1
|
||||
env_position = line.find('env:', start_position)
|
||||
if 0 < env_position:
|
||||
next_position = line.find(' ', env_position + 4)
|
||||
if 0 < next_position:
|
||||
env = line[env_position + 4 : next_position]
|
||||
else:
|
||||
env = line[env_position + 4 : ] # at the end of the line
|
||||
return env, next_position
|
||||
|
||||
|
||||
|
||||
#scans pins.h for board name and returns the environment(s) it finds
|
||||
def get_starting_env(board_name_full, version):
|
||||
# get environment starting point
|
||||
|
||||
if version == 1:
|
||||
path = 'Marlin/pins.h'
|
||||
if version == 2:
|
||||
path = 'Marlin/src/pins/pins.h'
|
||||
with open(path, 'r') as myfile:
|
||||
pins_h = myfile.read()
|
||||
|
||||
board_name = board_name_full[ 6 : ] # only use the part after "BOARD_" since we're searching the pins.h file
|
||||
pins_h = pins_h.split('\n')
|
||||
environment = ''
|
||||
board_line = ''
|
||||
cpu_A = ''
|
||||
cpu_B = ''
|
||||
i = 0
|
||||
list_start_found = False
|
||||
for lines in pins_h:
|
||||
i = i + 1 # i is always one ahead of the index into pins_h
|
||||
if 0 < lines.find("Unknown MOTHERBOARD value set in Configuration.h"):
|
||||
break # no more
|
||||
if 0 < lines.find('1280'):
|
||||
list_start_found = True
|
||||
if list_start_found == False: # skip lines until find start of CPU list
|
||||
continue
|
||||
board = lines.find(board_name)
|
||||
comment_start = lines.find('// ')
|
||||
cpu_A_loc = comment_start
|
||||
cpu_B_loc = 0
|
||||
if board > 0: # need to look at the next line for environment info
|
||||
cpu_line = pins_h[i]
|
||||
comment_start = cpu_line.find('// ')
|
||||
env_A, next_position = get_env_from_line(cpu_line, comment_start) # get name of environment & start of search for next
|
||||
env_B, next_position = get_env_from_line(cpu_line, next_position) # get next environment, if it exists
|
||||
env_C, next_position = get_env_from_line(cpu_line, next_position) # get next environment, if it exists
|
||||
break
|
||||
return env_A, env_B, env_C
|
||||
|
||||
|
||||
# scans input string for CPUs that the users may need to select from
|
||||
# returns: CPU name
|
||||
def get_CPU_name(environment):
|
||||
CPU_list = ('1280', '2560','644', '1284', 'LPC1768', 'DUE')
|
||||
CPU_name = ''
|
||||
for CPU in CPU_list:
|
||||
if 0 < environment.find(CPU):
|
||||
return CPU
|
||||
|
||||
|
||||
# get environment to be used for the build
|
||||
# returns: environment
|
||||
def get_env(board_name, ver_Marlin):
|
||||
def no_environment():
|
||||
print 'ERROR - no environment for this board'
|
||||
print board_name
|
||||
raise SystemExit(0) # no environment so quit
|
||||
|
||||
def invalid_board():
|
||||
print 'ERROR - invalid board'
|
||||
print board_name
|
||||
raise SystemExit(0) # quit if unable to find board
|
||||
|
||||
|
||||
CPU_question = ( ('1280', '2560', "1280 or 2560 CPU?"), ('644', '1284', "644 or 1284 CPU?") )
|
||||
|
||||
if 0 < board_name.find('MELZI') :
|
||||
get_answer(board_name, "Which flavor of Melzi?", "Melzi (Optiboot bootloader)", "Melzi ")
|
||||
if 1 == get_answer_val:
|
||||
target_env = 'melzi_optiboot'
|
||||
else:
|
||||
target_env = 'melzi'
|
||||
else:
|
||||
env_A, env_B, env_C = get_starting_env(board_name, ver_Marlin)
|
||||
|
||||
if env_A == '':
|
||||
no_environment()
|
||||
if env_B == '':
|
||||
return env_A # only one environment so finished
|
||||
|
||||
CPU_A = get_CPU_name(env_A)
|
||||
CPU_B = get_CPU_name(env_B)
|
||||
|
||||
for item in CPU_question:
|
||||
if CPU_A == item[0]:
|
||||
get_answer(board_name, item[2], item[0], item[1])
|
||||
if 2 == get_answer_val:
|
||||
target_env = env_B
|
||||
else:
|
||||
target_env = env_A
|
||||
return target_env
|
||||
|
||||
if env_A == 'LPC1768':
|
||||
if build_type == 'traceback' or (build_type == 'clean' and get_build_last() == 'LPC1768_debug_and_upload'):
|
||||
target_env = 'LPC1768_debug_and_upload'
|
||||
else:
|
||||
target_env = 'LPC1768'
|
||||
elif env_A == 'DUE':
|
||||
target_env = 'DUE'
|
||||
if build_type == 'traceback' or (build_type == 'clean' and get_build_last() == 'DUE_debug'):
|
||||
target_env = 'DUE_debug'
|
||||
elif env_B == 'DUE_USB':
|
||||
get_answer(board_name, "DUE: need download port", "USB (native USB) port", "Programming port ")
|
||||
if 1 == get_answer_val:
|
||||
target_env = 'DUE_USB'
|
||||
else:
|
||||
target_env = 'DUE'
|
||||
else:
|
||||
invalid_board()
|
||||
|
||||
if build_type == 'traceback' and not(target_env == 'LPC1768_debug_and_upload' or target_env == 'DUE_debug') and Marlin_ver == 2:
|
||||
print "ERROR - this board isn't setup for traceback"
|
||||
print 'board_name: ', board_name
|
||||
print 'target_env: ', target_env
|
||||
raise SystemExit(0)
|
||||
|
||||
return target_env
|
||||
# end - get_env
|
||||
|
||||
# puts screen text into queue so that the parent thread can fetch the data from this thread
|
||||
import Queue
|
||||
IO_queue = Queue.Queue()
|
||||
def write_to_screen_queue(text, format_tag = 'normal'):
|
||||
double_in = [text, format_tag]
|
||||
IO_queue.put(double_in, block = False)
|
||||
|
||||
|
||||
#
|
||||
# send one line to the terminal screen with syntax highlighting
|
||||
#
|
||||
# input: unformatted text, flags from previous run
|
||||
# returns: formatted text ready to go to the terminal, flags from this run
|
||||
#
|
||||
# This routine remembers the status from call to call because previous
|
||||
# lines can affect how the current line is highlighted
|
||||
#
|
||||
|
||||
# 'static' variables - init here and then keep updating them from within print_line
|
||||
warning = False
|
||||
warning_FROM = False
|
||||
error = False
|
||||
standard = True
|
||||
prev_line_COM = False
|
||||
next_line_warning = False
|
||||
warning_continue = False
|
||||
|
||||
def line_print(line_input):
|
||||
|
||||
global warning
|
||||
global warning_FROM
|
||||
global error
|
||||
global standard
|
||||
global prev_line_COM
|
||||
global next_line_warning
|
||||
global warning_continue
|
||||
|
||||
|
||||
|
||||
|
||||
# all '0' elements must precede all '1' elements or they'll be skipped
|
||||
platformio_highlights = [
|
||||
['Environment', 0, 'highlight_blue'],
|
||||
['[SKIP]', 1, 'warning'],
|
||||
['[ERROR]', 1, 'error'],
|
||||
['[SUCCESS]', 1, 'highlight_green']
|
||||
]
|
||||
|
||||
def write_to_screen_with_replace(text, highlights): # search for highlights & split line accordingly
|
||||
did_something = False
|
||||
for highlight in highlights:
|
||||
found = text.find(highlight[0])
|
||||
if did_something == True:
|
||||
break
|
||||
if found >= 0 :
|
||||
did_something = True
|
||||
if 0 == highlight[1]:
|
||||
found_1 = text.find(' ')
|
||||
found_tab = text.find('\t')
|
||||
if found_1 < 0 or found_1 > found_tab:
|
||||
found_1 = found_tab
|
||||
write_to_screen_queue(text[ : found_1 + 1 ])
|
||||
for highlight_2 in highlights:
|
||||
if highlight[0] == highlight_2[0] :
|
||||
continue
|
||||
found = text.find(highlight_2[0])
|
||||
if found >= 0 :
|
||||
found_space = text.find(' ', found_1 + 1)
|
||||
found_tab = text.find('\t', found_1 + 1)
|
||||
if found_space < 0 or found_space > found_tab:
|
||||
found_space = found_tab
|
||||
found_right = text.find(']', found + 1)
|
||||
write_to_screen_queue(text[found_1 + 1 : found_space + 1 ], highlight[2])
|
||||
write_to_screen_queue(text[found_space + 1 : found + 1 ])
|
||||
write_to_screen_queue(text[found + 1 : found_right], highlight_2[2])
|
||||
write_to_screen_queue(text[found_right : ] + '\n')
|
||||
break
|
||||
break
|
||||
if 1 == highlight[1]:
|
||||
found_right = text.find(']', found + 1)
|
||||
write_to_screen_queue(text[ : found + 1 ])
|
||||
write_to_screen_queue(text[found + 1 : found_right ], highlight[2])
|
||||
write_to_screen_queue(text[found_right : ] + '\n')
|
||||
break
|
||||
if did_something == False:
|
||||
write_to_screen_queue(text + '\n')
|
||||
# end - write_to_screen_with_replace
|
||||
|
||||
|
||||
|
||||
# scan the line
|
||||
max_search = len(line_input)
|
||||
if max_search > 3 :
|
||||
max_search = 3
|
||||
beginning = line_input[:max_search]
|
||||
|
||||
# set flags
|
||||
if 0 < line_input.find(': warning: '): # start of warning block
|
||||
warning = True
|
||||
warning_FROM = False
|
||||
error = False
|
||||
standard = False
|
||||
prev_line_COM = False
|
||||
prev_line_COM = False
|
||||
warning_continue = True
|
||||
if beginning == 'War' or \
|
||||
beginning == '#er' or \
|
||||
beginning == 'In ' or \
|
||||
(beginning != 'Com' and prev_line_COM == True and not(beginning == 'Arc' or beginning == 'Lin' or beginning == 'Ind') or \
|
||||
next_line_warning == True):
|
||||
warning = True #warning found
|
||||
warning_FROM = False
|
||||
error = False
|
||||
standard = False
|
||||
prev_line_COM = False
|
||||
elif beginning == 'Com' or \
|
||||
beginning == 'Ver' or \
|
||||
beginning == ' [E' or \
|
||||
beginning == 'Rem' or \
|
||||
beginning == 'Bui' or \
|
||||
beginning == 'Ind' or \
|
||||
beginning == 'PLA':
|
||||
warning = False #standard line found
|
||||
warning_FROM = False
|
||||
error = False
|
||||
standard = True
|
||||
prev_line_COM = False
|
||||
warning_continue = False
|
||||
elif beginning == '***':
|
||||
warning = False # error found
|
||||
warning_FROM = False
|
||||
error = True
|
||||
standard = False
|
||||
prev_line_COM = False
|
||||
|
||||
elif beginning == 'fro' and warning == True : # start of warning /error block
|
||||
warning_FROM = True
|
||||
prev_line_COM = False
|
||||
warning_continue = True
|
||||
elif 0 < line_input.find(': error:') or \
|
||||
0 < line_input.find(': fatal error:'): # start of warning /error block
|
||||
warning = False # error found
|
||||
warning_FROM = False
|
||||
error = True
|
||||
standard = False
|
||||
prev_line_COM = False
|
||||
warning_continue = True
|
||||
elif warning_continue == True:
|
||||
warning = True
|
||||
warning_FROM = False # keep the warning status going until find a standard line
|
||||
error = False
|
||||
standard = False
|
||||
prev_line_COM = False
|
||||
warning_continue = True
|
||||
|
||||
else:
|
||||
warning = False # unknown so assume standard line
|
||||
warning_FROM = False
|
||||
error = False
|
||||
standard = True
|
||||
prev_line_COM = False
|
||||
warning_continue = False
|
||||
|
||||
if beginning == 'Com':
|
||||
prev_line_COM = True
|
||||
|
||||
# print based on flags
|
||||
if standard == True:
|
||||
write_to_screen_with_replace(line_input, platformio_highlights) #print white on black with substitutions
|
||||
if warning == True:
|
||||
write_to_screen_queue(line_input + '\n', 'warning')
|
||||
if error == True:
|
||||
write_to_screen_queue(line_input + '\n', 'error')
|
||||
# end - line_print
|
||||
|
||||
|
||||
|
||||
def run_PIO(dummy):
|
||||
|
||||
##########################################################################
|
||||
# #
|
||||
# run Platformio #
|
||||
# #
|
||||
##########################################################################
|
||||
|
||||
|
||||
# build platformio run -e target_env
|
||||
# clean platformio run --target clean -e target_env
|
||||
# upload platformio run --target upload -e target_env
|
||||
# traceback platformio run --target upload -e target_env
|
||||
# program platformio run --target program -e target_env
|
||||
# test platformio test upload -e target_env
|
||||
# remote platformio remote run --target upload -e target_env
|
||||
# debug platformio debug -e target_env
|
||||
|
||||
|
||||
global build_type
|
||||
global target_env
|
||||
global board_name
|
||||
print 'build_type: ', build_type
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
print 'starting platformio'
|
||||
|
||||
if build_type == 'build':
|
||||
# platformio run -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'run', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'clean':
|
||||
# platformio run --target clean -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'clean', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'upload':
|
||||
# platformio run --target upload -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'traceback':
|
||||
# platformio run --target upload -e target_env - select the debug environment if there is one
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'program':
|
||||
# platformio run --target program -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'program', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'test':
|
||||
#platformio test upload -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'test', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'remote':
|
||||
# platformio remote run --target upload -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'remote', 'run', '--target', 'program', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
elif build_type == 'debug':
|
||||
# platformio debug -e target_env
|
||||
# combine stdout & stderr so all compile messages are included
|
||||
pio_subprocess = subprocess.Popen(['platformio', 'debug', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
|
||||
else:
|
||||
print 'ERROR - unknown build type: ', build_type
|
||||
raise SystemExit(0) # kill everything
|
||||
|
||||
# stream output from subprocess and split it into lines
|
||||
for line in iter(pio_subprocess.stdout.readline, ''):
|
||||
line_print(line.replace('\n', ''))
|
||||
|
||||
|
||||
# append info used to run PlatformIO
|
||||
write_to_screen_queue('\nBoard name: ' + board_name + '\n') # put build info at the bottom of the screen
|
||||
write_to_screen_queue('Build type: ' + build_type + '\n')
|
||||
write_to_screen_queue('Environment used: ' + target_env + '\n')
|
||||
# end - run_PIO
|
||||
|
||||
|
||||
########################################################################
|
||||
|
||||
import time
|
||||
import threading
|
||||
import Tkinter as tk
|
||||
import ttk
|
||||
import Queue
|
||||
import subprocess
|
||||
import sys
|
||||
que = Queue.Queue()
|
||||
#IO_queue = Queue.Queue()
|
||||
|
||||
from Tkinter import Tk, Frame, Text, Scrollbar, Menu
|
||||
from tkMessageBox import askokcancel
|
||||
|
||||
import tkFileDialog
|
||||
from tkMessageBox import askokcancel
|
||||
import tkFileDialog
|
||||
|
||||
|
||||
|
||||
class output_window(Text):
|
||||
|
||||
global continue_updates
|
||||
continue_updates = True
|
||||
|
||||
|
||||
def __init__(self):
|
||||
|
||||
|
||||
self.root = tk.Tk()
|
||||
self.frame = tk.Frame(self.root)
|
||||
self.frame.pack(fill='both', expand=True)
|
||||
|
||||
# text widget
|
||||
#self.text = tk.Text(self.frame, borderwidth=3, relief="sunken")
|
||||
Text.__init__(self, self.frame, borderwidth=3, relief="sunken")
|
||||
self.config(tabs=(400,)) # configure Text widget tab stops
|
||||
self.config(background = 'black', foreground = 'white', font= ("consolas", 12), wrap = 'word', undo = 'True')
|
||||
self.config(height = 24, width = 120)
|
||||
self.pack(side='left', fill='both', expand=True)
|
||||
|
||||
self.tag_config('normal', foreground = 'white')
|
||||
self.tag_config('warning', foreground = 'yellow' )
|
||||
self.tag_config('error', foreground = 'red')
|
||||
self.tag_config('highlight_green', foreground = 'green')
|
||||
self.tag_config('highlight_blue', foreground = 'cyan')
|
||||
|
||||
# self.bind('<Control-Key-a>', self.select_all) # the event happens but the action doesn't
|
||||
|
||||
# scrollbar
|
||||
|
||||
scrb = tk.Scrollbar(self.frame, orient='vertical', command=self.yview)
|
||||
self.config(yscrollcommand=scrb.set)
|
||||
scrb.pack(side='right', fill='y')
|
||||
|
||||
|
||||
# pop-up menu
|
||||
self.popup = tk.Menu(self, tearoff=0)
|
||||
self.popup.add_command(label='Cut', command=self._cut)
|
||||
self.popup.add_command(label='Copy', command=self._copy)
|
||||
self.popup.add_command(label='Paste', command=self._paste)
|
||||
self.popup.add_separator()
|
||||
self.popup.add_command(label='Select All', command=self._select_all)
|
||||
self.popup.add_command(label='Clear All', command=self._clear_all)
|
||||
self.popup.add_separator()
|
||||
self.popup.add_command(label='Save As', command=self._file_save_as)
|
||||
self.bind('<Button-3>', self._show_popup)
|
||||
|
||||
|
||||
# threading & subprocess section
|
||||
|
||||
def start_thread(self, ):
|
||||
global continue_updates
|
||||
# create then start a secondary thread to run an arbitrary function
|
||||
# must have at least one argument
|
||||
self.secondary_thread = threading.Thread(target = lambda q, arg1: q.put(run_PIO(arg1)), args=(que, ''))
|
||||
self.secondary_thread.start()
|
||||
continue_updates = True
|
||||
# check the Queue in 50ms
|
||||
self.root.after(50, self.check_thread)
|
||||
self.root.after(50, self.update)
|
||||
|
||||
|
||||
def check_thread(self): # wait for user to kill the window
|
||||
global continue_updates
|
||||
if continue_updates == True:
|
||||
self.root.after(20, self.check_thread)
|
||||
|
||||
|
||||
def update(self):
|
||||
global continue_updates
|
||||
if continue_updates == True:
|
||||
self.root.after(20, self.update)#method is called every 50ms
|
||||
temp_text = ['0','0']
|
||||
if IO_queue.empty():
|
||||
if not(self.secondary_thread.is_alive()):
|
||||
continue_updates = False # queue is exhausted and thread is dead so no need for further updates
|
||||
self.tag_add('sel', '1.0', 'end')
|
||||
else:
|
||||
try:
|
||||
temp_text = IO_queue.get(block = False)
|
||||
except Queue.Empty:
|
||||
continue_updates = False # queue is exhausted so no need for further updates
|
||||
else:
|
||||
self.insert('end', temp_text[0], temp_text[1])
|
||||
self.see("end") # make the last line visible (scroll text off the top)
|
||||
|
||||
|
||||
# text editing section
|
||||
|
||||
def _file_save_as(self):
|
||||
self.filename = tkFileDialog.asksaveasfilename(defaultextension = '.txt')
|
||||
f = open(self.filename, 'w')
|
||||
f.write(self.get('1.0', 'end'))
|
||||
f.close()
|
||||
|
||||
|
||||
|
||||
def copy(self, event):
|
||||
try:
|
||||
selection = self.get(*self.tag_ranges('sel'))
|
||||
self.clipboard_clear()
|
||||
self.clipboard_append(selection)
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def cut(self, event):
|
||||
|
||||
try:
|
||||
selection = self.get(*self.tag_ranges('sel'))
|
||||
self.clipboard_clear()
|
||||
self.clipboard_append(selection)
|
||||
self.delete(*self.tag_ranges('sel'))
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def _show_popup(self, event):
|
||||
'''right-click popup menu'''
|
||||
|
||||
if self.root.focus_get() != self:
|
||||
self.root.focus_set()
|
||||
|
||||
try:
|
||||
self.popup.tk_popup(event.x_root, event.y_root, 0)
|
||||
finally:
|
||||
self.popup.grab_release()
|
||||
|
||||
def _cut(self):
|
||||
|
||||
try:
|
||||
selection = self.get(*self.tag_ranges('sel'))
|
||||
self.clipboard_clear()
|
||||
self.clipboard_append(selection)
|
||||
self.delete(*self.tag_ranges('sel'))
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def cut(self, event):
|
||||
_cut(self)
|
||||
|
||||
def _copy(self):
|
||||
|
||||
try:
|
||||
selection = self.get(*self.tag_ranges('sel'))
|
||||
self.clipboard_clear()
|
||||
self.clipboard_append(selection)
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def copy(self, event):
|
||||
_copy(self)
|
||||
|
||||
def _paste(self):
|
||||
|
||||
self.insert('insert', self.selection_get(selection='CLIPBOARD'))
|
||||
|
||||
def _select_all(self):
|
||||
self.tag_add('sel', '1.0', 'end')
|
||||
|
||||
|
||||
def select_all(self, event):
|
||||
self.tag_add('sel', '1.0', 'end')
|
||||
|
||||
|
||||
def _clear_all(self):
|
||||
'''erases all text'''
|
||||
|
||||
isok = askokcancel('Clear All', 'Erase all text?', frame=self,
|
||||
default='ok')
|
||||
if isok:
|
||||
self.delete('1.0', 'end')
|
||||
|
||||
def _place_cursor(self): # theme: terminal
|
||||
'''check the position of the cursor against the last known position
|
||||
every 15ms and update the cursorblock tag as needed'''
|
||||
|
||||
current_index = self.index('insert')
|
||||
|
||||
if self.cursor != current_index:
|
||||
self.cursor = current_index
|
||||
self.tag_delete('cursorblock')
|
||||
|
||||
start = self.index('insert')
|
||||
end = self.index('insert+1c')
|
||||
|
||||
if start[0] != end[0]:
|
||||
self.insert(start, ' ')
|
||||
end = self.index('insert')
|
||||
|
||||
self.tag_add('cursorblock', start, end)
|
||||
self.mark_set('insert', self.cursor)
|
||||
|
||||
self.after(15, self._place_cursor)
|
||||
|
||||
def _blink_cursor(self): # theme: terminal
|
||||
'''alternate the background color of the cursorblock tagged text
|
||||
every 600 milliseconds'''
|
||||
|
||||
if self.switch == self.fg:
|
||||
self.switch = self.bg
|
||||
else:
|
||||
self.switch = self.fg
|
||||
|
||||
self.tag_config('cursorblock', background=self.switch)
|
||||
|
||||
self.after(600, self._blink_cursor)
|
||||
# end - output_window
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
|
||||
##########################################################################
|
||||
# #
|
||||
# main program #
|
||||
# #
|
||||
##########################################################################
|
||||
|
||||
global build_type
|
||||
global target_env
|
||||
global board_name
|
||||
|
||||
board_name, Marlin_ver = get_board_name()
|
||||
|
||||
target_env = get_env(board_name, Marlin_ver)
|
||||
|
||||
auto_build = output_window()
|
||||
auto_build.start_thread() # executes the "run_PIO" function
|
||||
|
||||
auto_build.root.mainloop()
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
main()
|
||||
+14
-31
@@ -52,15 +52,6 @@ build_flags = ${common.build_flags}
|
||||
board_f_cpu = 16000000L
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
#
|
||||
# Brainwave Pro (Teensy 2.0)
|
||||
#
|
||||
[env:brainwavepro]
|
||||
platform = teensy
|
||||
framework = arduino
|
||||
board = teensy20pp
|
||||
build_flags = ${common.build_flags} -D MOTHERBOARD=BOARD_BRAINWAVE_PRO
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
#
|
||||
# Melzi and clones (ATmega1284p)
|
||||
@@ -85,28 +76,6 @@ build_flags = ${common.build_flags}
|
||||
upload_speed = 115200
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
#
|
||||
# Printrboard (Teensy 2.0)
|
||||
#
|
||||
[env:printrboard]
|
||||
platform = teensy
|
||||
framework = arduino
|
||||
board = teensy20pp
|
||||
build_flags = ${common.build_flags} -D MOTHERBOARD=BOARD_PRINTRBOARD
|
||||
# Bug in arduino framework does not allow boards running at 20Mhz
|
||||
#board_f_cpu = 20000000L
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
#
|
||||
# Printrboard Rev.F (Teensy 2.0)
|
||||
#
|
||||
[env:printrboard_revf]
|
||||
platform = teensy
|
||||
framework = arduino
|
||||
board = teensy20pp
|
||||
build_flags = ${common.build_flags} -D MOTHERBOARD=BOARD_PRINTRBOARD_REVF
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
#
|
||||
# RAMBo
|
||||
#
|
||||
@@ -138,3 +107,17 @@ board = sanguino_atmega1284p
|
||||
build_flags = ${common.build_flags}
|
||||
lib_deps = ${common.lib_deps}
|
||||
|
||||
|
||||
#
|
||||
# Teensy++ 2.0
|
||||
#
|
||||
# - PrintrBoard
|
||||
# - PrintrBoard Rev.F
|
||||
# - Brainwave Pro
|
||||
#
|
||||
[env:teensy20]
|
||||
platform = teensy
|
||||
framework = arduino
|
||||
board = teensy20pp
|
||||
build_flags = ${common.build_flags}
|
||||
lib_deps = ${common.lib_deps}
|
||||
@@ -0,0 +1,357 @@
|
||||
{
|
||||
"patterns": {
|
||||
"P1": {
|
||||
"expression": "(path):(line)"
|
||||
},
|
||||
"P2": {
|
||||
"expression": "(path)\\s+(line)",
|
||||
"path": "(?:\\/[\\w\\.\\-]+)+"
|
||||
}
|
||||
},
|
||||
"commands": [
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Build",
|
||||
"command": "python buildroot/share/atom/auto_build.py build",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": true,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": "",
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Clean",
|
||||
"command": "python buildroot/share/atom/auto_build.py clean",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Upload",
|
||||
"command": "python buildroot/share/atom/auto_build.py upload",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Upload (traceback)",
|
||||
"command": "python buildroot/share/atom/auto_build.py traceback",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Upload using Programmer",
|
||||
"command": "python buildroot/share/atom/auto_build.py program",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Test",
|
||||
"command": "python buildroot/share/atom/auto_build.py test",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Debug",
|
||||
"command": "python buildroot/share/atom/auto_build.py debug",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
},
|
||||
{
|
||||
"namespace": "process-palette",
|
||||
"action": "PIO Remote",
|
||||
"command": "python buildroot/share/atom/auto_build.py remote",
|
||||
"arguments": [],
|
||||
"cwd": "{projectPath}",
|
||||
"inputDialogs": [],
|
||||
"env": {},
|
||||
"keystroke": null,
|
||||
"stream": true,
|
||||
"outputTarget": "panel",
|
||||
"outputBufferSize": 80000,
|
||||
"maxCompleted": 3,
|
||||
"autoShowOutput": true,
|
||||
"autoHideOutput": false,
|
||||
"scrollLockEnabled": false,
|
||||
"singular": false,
|
||||
"promptToSave": true,
|
||||
"saveOption": "none",
|
||||
"patterns": [
|
||||
"default"
|
||||
],
|
||||
"successOutput": "{stdout}",
|
||||
"errorOutput": "{stdout}\n{stderr}",
|
||||
"fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"startMessage": null,
|
||||
"successMessage": "Executed : {fullCommand}",
|
||||
"errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
|
||||
"fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
|
||||
"menus": [
|
||||
"Auto Build"
|
||||
],
|
||||
"startScript": null,
|
||||
"successScript": null,
|
||||
"errorScript": null,
|
||||
"scriptOnStart": false,
|
||||
"scriptOnSuccess": false,
|
||||
"scriptOnError": false,
|
||||
"notifyOnStart": false,
|
||||
"notifyOnSuccess": true,
|
||||
"notifyOnError": true,
|
||||
"input": null
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user