diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser.bmp new file mode 100644 index 0000000000..ddb464444f Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_100.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_100.bmp new file mode 100644 index 0000000000..ddb464444f Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_100.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_2.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_2.bmp new file mode 100644 index 0000000000..d9fdd982f7 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_2.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_Off.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_Off.bmp new file mode 100644 index 0000000000..d1d57934ee Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Laser_Off.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/OLD_Logo.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/OLD_Logo.bmp deleted file mode 100644 index 513770b894..0000000000 Binary files a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/OLD_Logo.bmp and /dev/null differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Spindle.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Spindle.bmp new file mode 100644 index 0000000000..8fabf2895e Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Spindle.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_X.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_X.bmp new file mode 100644 index 0000000000..04e59328fc Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_X.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Y.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Y.bmp new file mode 100644 index 0000000000..acb0dc26f0 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Y.bmp differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Z.bmp b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Z.bmp new file mode 100644 index 0000000000..5b0b6dc7cf Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/bmp/Zero_Z.bmp differ diff --git a/README.md b/README.md index 020b695551..1a9ef9d5f8 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Firmware for BigTreeTech's dual-mode touchscreen 3D printer controllers - [Firmware](#firmware) - [Troubleshooting](#troubleshooting) - [Version History](#version-history) +- [CNC Targeted Modifications](#CNC-Targeted-Modifications) ## Menus and Themes @@ -108,3 +109,23 @@ To reset the TFT's touch screen calibration, create a blank file named `reset.tx ## Version History See [BIGTREETECH-TouchScreenFirmware/releases](https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/releases) for a complete version history. + +## CNC Targeted Modifications + +1. Possibility to define CNC_MENU in Configuration.h in order to configure the SW for CNC purposes +2. Introduced new language and icons tags for CNC specific menu items (no impact on 3D printer tags) +3. Added some specific bitmaps (from [BlomsD / MPCNC-TFT35-V2.0](https://github.com/BlomsD/MPCNC-TFT35-V2.0)) +4. Introduced a new menu spindle.c in order to add spindle start/stop control +5. Removed Bed and Extruder Heating menu items from Mainpage.c +6. Forced configuration in order to remove persistent Bed/Extruder temperature indication on all the pages +7. Modified the Home menu in order to support G28 XY and G28 Z and Zero axes +8. Possibility to define CNC_LASER in configuration.h in order to introduce menù for laser management (instead of fan) + +See: + +1.[TFT35 Home Menu (Home XY)](https://youtu.be/tTO4IgWAW1k) + +2.[TFT35 Home Menu (Home Z - Zero 0)](https://youtu.be/vSVPUKN2T6w) + +3.[TFT35 Home Spindle (Spindle ON/OFF)](https://youtu.be/DXpbi54GyoA) + diff --git a/TFT/src/User/API/Language/Language.inc b/TFT/src/User/API/Language/Language.inc index d246dbba22..387d3b64d8 100644 --- a/TFT/src/User/API/Language/Language.inc +++ b/TFT/src/User/API/Language/Language.inc @@ -204,4 +204,16 @@ X_WORD (SWAP_RECOVER_FEEDRATE) X_WORD (RECOVER_LENGTH) X_WORD (SWAP_RECOVER_LENGTH) X_WORD (START_PRINT) +X_WORD (ZERO_X) +X_WORD (ZERO_Y) +X_WORD (ZERO_Z) +X_WORD (XY) +X_WORD (SPINDLE) +X_WORD (CUT) +X_WORD (LASER) +X_WORD (LASER_2) +X_WORD (LASER_100) +X_WORD (LASER_OFF) +X_WORD (CNC_MODE) +X_WORD (LASER_MODE) diff --git a/TFT/src/User/API/Language/language_am.h b/TFT/src/User/API/Language/language_am.h index c52cb47c4a..6a093a7a1e 100644 --- a/TFT/src/User/API/Language/language_am.h +++ b/TFT/src/User/API/Language/language_am.h @@ -200,4 +200,16 @@ #define AM_SWAP_RECOVER_LENGTH "Extra recover swap length" #define AM_START_PRINT "Start Printing:\n %s?" + #define AM_ZERO_X "Zero X" + #define AM_ZERO_Y "Zero Y" + #define AM_ZERO_Z "Zero Z" + #define AM_XY "XY" + #define AM_SPINDLE "Spindle" + #define AM_CUT "Cut" + #define AM_LASER "Laser" + #define AM_LASER_2 "Laser 2%" + #define AM_LASER_100 "Laser 100%" + #define AM_LASER_OFF "Laser Off" + #define AM_CNC_MODE "CNC Mode" + #define AM_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_cn.h b/TFT/src/User/API/Language/language_cn.h index b27d13a979..8938ccebee 100644 --- a/TFT/src/User/API/Language/language_cn.h +++ b/TFT/src/User/API/Language/language_cn.h @@ -200,4 +200,16 @@ #define CN_SWAP_RECOVER_LENGTH "Extra recover swap length" #define CN_START_PRINT "Start Printing:\n %s?" + #define CN_ZERO_X "Zero X" + #define CN_ZERO_Y "Zero Y" + #define CN_ZERO_Z "Zero Z" + #define CN_XY "XY" + #define CN_SPINDLE "Spindle" + #define CN_CUT "Cut" + #define CN_LASER "Laser" + #define CN_LASER_2 "Laser 2%" + #define CN_LASER_100 "Laser 100%" + #define CN_LASER_OFF "Laser Off" + #define CN_CNC_MODE "CNC Mode" + #define CN_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_cz.h b/TFT/src/User/API/Language/language_cz.h index b70c172c98..13944f3398 100644 --- a/TFT/src/User/API/Language/language_cz.h +++ b/TFT/src/User/API/Language/language_cz.h @@ -200,4 +200,16 @@ #define CZ_SWAP_RECOVER_LENGTH "Extra recover swap length" #define CZ_START_PRINT "Start Printing:\n %s?" + #define CZ_ZERO_X "Zero X" + #define CZ_ZERO_Y "Zero Y" + #define CZ_ZERO_Z "Zero Z" + #define CZ_XY "XY" + #define CZ_SPINDLE "Spindle" + #define CZ_CUT "Cut" + #define CZ_LASER "Laser" + #define CZ_LASER_2 "Laser 2%" + #define CZ_LASER_100 "Laser 100%" + #define CZ_LASER_OFF "Laser Off" + #define CZ_CNC_MODE "CNC Mode" + #define CZ_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_de.h b/TFT/src/User/API/Language/language_de.h index 3591cd6a0c..f4b47aba14 100644 --- a/TFT/src/User/API/Language/language_de.h +++ b/TFT/src/User/API/Language/language_de.h @@ -200,4 +200,16 @@ #define DE_SWAP_RECOVER_LENGTH "Extra recover swap length" #define DE_START_PRINT "Start Printing:\n %s?" + #define DE_ZERO_X "Zero X" + #define DE_ZERO_Y "Zero Y" + #define DE_ZERO_Z "Zero Z" + #define DE_XY "XY" + #define DE_SPINDLE "Spindle" + #define DE_CUT "Cut" + #define DE_LASER "Laser" + #define DE_LASER_2 "Laser 2%" + #define DE_LASER_100 "Laser 100%" + #define DE_LASER_OFF "Laser Off" + #define DE_CNC_MODE "CNC Mode" + #define DE_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_du.h b/TFT/src/User/API/Language/language_du.h index 0cb20815ea..645842bb33 100644 --- a/TFT/src/User/API/Language/language_du.h +++ b/TFT/src/User/API/Language/language_du.h @@ -200,4 +200,16 @@ #define DU_SWAP_RECOVER_LENGTH "Extra recover swap length" #define DU_START_PRINT "Start Printing:\n %s?" + #define DU_ZERO_X "Zero X" + #define DU_ZERO_Y "Zero Y" + #define DU_ZERO_Z "Zero Z" + #define DU_XY "XY" + #define DU_SPINDLE "Spindle" + #define DU_CUT "Cut" + #define DU_LASER "Laser" + #define DU_LASER_2 "Laser 2%" + #define DU_LASER_100 "Laser 100%" + #define DU_LASER_OFF "Laser Off" + #define DU_CNC_MODE "CNC Mode" + #define DU_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_en.h b/TFT/src/User/API/Language/language_en.h index bf969fab88..f752d4eaf9 100644 --- a/TFT/src/User/API/Language/language_en.h +++ b/TFT/src/User/API/Language/language_en.h @@ -200,4 +200,16 @@ #define EN_SWAP_RECOVER_LENGTH "Extra recover swap length" #define EN_START_PRINT "Start Printing:\n %s?" + #define EN_ZERO_X "Zero X" + #define EN_ZERO_Y "Zero Y" + #define EN_ZERO_Z "Zero Z" + #define EN_XY "XY" + #define EN_SPINDLE "Spindle" + #define EN_CUT "Cut" + #define EN_LASER "Laser" + #define EN_LASER_2 "Laser 2%" + #define EN_LASER_100 "Laser 100%" + #define EN_LASER_OFF "Laser Off" + #define EN_CNC_MODE "CNC Mode" + #define EN_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_es.h b/TFT/src/User/API/Language/language_es.h index 97ec125545..c7dbeb5041 100644 --- a/TFT/src/User/API/Language/language_es.h +++ b/TFT/src/User/API/Language/language_es.h @@ -200,4 +200,16 @@ #define ES_SWAP_RECOVER_LENGTH "Extra recover swap length" #define ES_START_PRINT "Start Printing:\n %s?" + #define ES_ZERO_X "Zero X" + #define ES_ZERO_Y "Zero Y" + #define ES_ZERO_Z "Zero Z" + #define ES_XY "XY" + #define ES_SPINDLE "Spindle" + #define ES_CUT "Cut" + #define ES_LASER "Laser" + #define ES_LASER_2 "Laser 2%" + #define ES_LASER_100 "Laser 100%" + #define ES_LASER_OFF "Laser Off" + #define ES_CNC_MODE "CNC Mode" + #define ES_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_fr.h b/TFT/src/User/API/Language/language_fr.h index e6399ba36e..3629278eac 100644 --- a/TFT/src/User/API/Language/language_fr.h +++ b/TFT/src/User/API/Language/language_fr.h @@ -200,4 +200,16 @@ #define FR_SWAP_RECOVER_LENGTH "Extra recover swap length" #define FR_START_PRINT "Start Printing:\n %s?" + #define FR_ZERO_X "Zero X" + #define FR_ZERO_Y "Zero Y" + #define FR_ZERO_Z "Zero Z" + #define FR_XY "XY" + #define FR_SPINDLE "Spindle" + #define FR_CUT "Cut" + #define FR_LASER "Laser" + #define FR_LASER_2 "Laser 2%" + #define FR_LASER_100 "Laser 100%" + #define FR_LASER_OFF "Laser Off" + #define FR_CNC_MODE "CNC Mode" + #define FR_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_gr.h b/TFT/src/User/API/Language/language_gr.h index 4c95729aa1..b75488fa5d 100644 --- a/TFT/src/User/API/Language/language_gr.h +++ b/TFT/src/User/API/Language/language_gr.h @@ -200,4 +200,16 @@ #define GR_SWAP_RECOVER_LENGTH "Extra recover swap length" #define GR_START_PRINT "Start Printing:\n %s?" + #define GR_ZERO_X "Zero X" + #define GR_ZERO_Y "Zero Y" + #define GR_ZERO_Z "Zero Z" + #define GR_XY "XY" + #define GR_SPINDLE "Spindle" + #define GR_CUT "Cut" + #define GR_LASER "Laser" + #define GR_LASER_2 "Laser 2%" + #define GR_LASER_100 "Laser 100%" + #define GR_LASER_OFF "Laser Off" + #define GR_CNC_MODE "CNC Mode" + #define GR_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_hu.h b/TFT/src/User/API/Language/language_hu.h index 26712ca4cd..2ab94851c6 100644 --- a/TFT/src/User/API/Language/language_hu.h +++ b/TFT/src/User/API/Language/language_hu.h @@ -200,4 +200,16 @@ #define HU_SWAP_RECOVER_LENGTH "Cserehossz javítás" #define HU_START_PRINT "Nyomtatás indítása:\n %s?" + #define HU_ZERO_X "Zero X" + #define HU_ZERO_Y "Zero Y" + #define HU_ZERO_Z "Zero Z" + #define HU_XY "XY" + #define HU_SPINDLE "Spindle" + #define HU_CUT "Cut" + #define HU_LASER "Laser" + #define HU_LASER_2 "Laser 2%" + #define HU_LASER_100 "Laser 100%" + #define HU_LASER_OFF "Laser Off" + #define HU_CNC_MODE "CNC Mode" + #define HU_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_it.h b/TFT/src/User/API/Language/language_it.h index c15121fb82..02399cae7e 100644 --- a/TFT/src/User/API/Language/language_it.h +++ b/TFT/src/User/API/Language/language_it.h @@ -200,4 +200,16 @@ #define IT_SWAP_RECOVER_LENGTH "Extra recover swap length" #define IT_START_PRINT "Start Printing:\n %s?" + #define IT_ZERO_X "Zero X" + #define IT_ZERO_Y "Zero Y" + #define IT_ZERO_Z "Zero Z" + #define IT_XY "XY" + #define IT_SPINDLE "Spindle" + #define IT_CUT "Cut" + #define IT_LASER "Laser" + #define IT_LASER_2 "Laser 2%" + #define IT_LASER_100 "Laser 100%" + #define IT_LASER_OFF "Laser Off" + #define IT_CNC_MODE "CNC Mode" + #define IT_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_jp.h b/TFT/src/User/API/Language/language_jp.h index e77ac2db23..9fe345a43a 100644 --- a/TFT/src/User/API/Language/language_jp.h +++ b/TFT/src/User/API/Language/language_jp.h @@ -200,4 +200,16 @@ #define JP_SWAP_RECOVER_LENGTH "Extra recover swap length" #define JP_START_PRINT "Start Printing:\n %s?" + #define JP_ZERO_X "Zero X" + #define JP_ZERO_Y "Zero Y" + #define JP_ZERO_Z "Zero Z" + #define JP_XY "XY" + #define JP_SPINDLE "Spindle" + #define JP_CUT "Cut" + #define JP_LASER "Laser" + #define JP_LASER_2 "Laser 2%" + #define JP_LASER_100 "Laser 100%" + #define JP_LASER_OFF "Laser Off" + #define JP_CNC_MODE "CNC Mode" + #define JP_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_pl.h b/TFT/src/User/API/Language/language_pl.h index 9fa6df3f74..7f0cd4ef65 100644 --- a/TFT/src/User/API/Language/language_pl.h +++ b/TFT/src/User/API/Language/language_pl.h @@ -200,4 +200,16 @@ #define PL_SWAP_RECOVER_LENGTH "Extra recover swap length" #define PL_START_PRINT "Start Printing:\n %s?" + #define PL_ZERO_X "Zero X" + #define PL_ZERO_Y "Zero Y" + #define PL_ZERO_Z "Zero Z" + #define PL_XY "XY" + #define PL_SPINDLE "Spindle" + #define PL_CUT "Cut" + #define PL_LASER "Laser" + #define PL_LASER_2 "Laser 2%" + #define PL_LASER_100 "Laser 100%" + #define PL_LASER_OFF "Laser Off" + #define PL_CNC_MODE "CNC Mode" + #define PL_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_pt.h b/TFT/src/User/API/Language/language_pt.h index 80642ff99b..6d8172160b 100644 --- a/TFT/src/User/API/Language/language_pt.h +++ b/TFT/src/User/API/Language/language_pt.h @@ -200,4 +200,16 @@ #define PT_SWAP_RECOVER_LENGTH "Extra recover swap length" #define PT_START_PRINT "Start Printing:\n %s?" + #define PT_ZERO_X "Zero X" + #define PT_ZERO_Y "Zero Y" + #define PT_ZERO_Z "Zero Z" + #define PT_XY "XY" + #define PT_SPINDLE "Spindle" + #define PT_CUT "Cut" + #define PT_LASER "Laser" + #define PT_LASER_2 "Laser 2%" + #define PT_LASER_100 "Laser 100%" + #define PT_LASER_OFF "Laser Off" + #define PT_CNC_MODE "CNC Mode" + #define PT_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_ru.h b/TFT/src/User/API/Language/language_ru.h index 51bedfbd43..a2101b0445 100644 --- a/TFT/src/User/API/Language/language_ru.h +++ b/TFT/src/User/API/Language/language_ru.h @@ -200,4 +200,16 @@ #define RU_SWAP_RECOVER_LENGTH "Extra recover swap length" #define RU_START_PRINT "Start Printing:\n %s?" + #define RU_ZERO_X "Zero X" + #define RU_ZERO_Y "Zero Y" + #define RU_ZERO_Z "Zero Z" + #define RU_XY "XY" + #define RU_SPINDLE "Spindle" + #define RU_CUT "Cut" + #define RU_LASER "Laser" + #define RU_LASER_2 "Laser 2%" + #define RU_LASER_100 "Laser 100%" + #define RU_LASER_OFF "Laser Off" + #define RU_CNC_MODE "CNC Mode" + #define RU_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_sk.h b/TFT/src/User/API/Language/language_sk.h index 45e38c1fc3..dc9b014dd9 100644 --- a/TFT/src/User/API/Language/language_sk.h +++ b/TFT/src/User/API/Language/language_sk.h @@ -200,4 +200,16 @@ #define SK_SWAP_RECOVER_LENGTH "Extra recover swap length" #define SK_START_PRINT "Start Printing:\n %s?" + #define SK_ZERO_X "Zero X" + #define SK_ZERO_Y "Zero Y" + #define SK_ZERO_Z "Zero Z" + #define SK_XY "XY" + #define SK_SPINDLE "Spindle" + #define SK_CUT "Cut" + #define SK_LASER "Laser" + #define SK_LASER_2 "Laser 2%" + #define SK_LASER_100 "Laser 100%" + #define SK_LASER_OFF "Laser Off" + #define SK_CNC_MODE "CNC Mode" + #define SK_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_sl.h b/TFT/src/User/API/Language/language_sl.h index 17c448ac9f..b63f010517 100644 --- a/TFT/src/User/API/Language/language_sl.h +++ b/TFT/src/User/API/Language/language_sl.h @@ -200,4 +200,16 @@ #define SL_SWAP_RECOVER_LENGTH "Extra recover swap length" #define SL_START_PRINT "Start tiska:\n %s?" + #define SL_ZERO_X "Zero X" + #define SL_ZERO_Y "Zero Y" + #define SL_ZERO_Z "Zero Z" + #define SL_XY "XY" + #define SL_SPINDLE "Spindle" + #define SL_CUT "Cut" + #define SL_LASER "Laser" + #define SL_LASER_2 "Laser 2%" + #define SL_LASER_100 "Laser 100%" + #define SL_LASER_OFF "Laser Off" + #define SL_CNC_MODE "CNC Mode" + #define SL_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Language/language_tr.h b/TFT/src/User/API/Language/language_tr.h index 2184908d52..ba632c28fd 100644 --- a/TFT/src/User/API/Language/language_tr.h +++ b/TFT/src/User/API/Language/language_tr.h @@ -200,4 +200,16 @@ #define TR_SWAP_RECOVER_LENGTH "Extra recover swap length" #define TR_START_PRINT "Start Printing:\n %s?" + #define TR_ZERO_X "Zero X" + #define TR_ZERO_Y "Zero Y" + #define TR_ZERO_Z "Zero Z" + #define TR_XY "XY" + #define TR_SPINDLE "Spindle" + #define TR_CUT "Cut" + #define TR_LASER "Laser" + #define TR_LASER_2 "Laser 2%" + #define TR_LASER_100 "Laser 100%" + #define TR_LASER_OFF "Laser Off" + #define TR_CNC_MODE "CNC Mode" + #define TR_LASER_MODE "Laser Mode" #endif diff --git a/TFT/src/User/API/Printing.c b/TFT/src/User/API/Printing.c index 2ff8a61668..c89b6ff25b 100644 --- a/TFT/src/User/API/Printing.c +++ b/TFT/src/User/API/Printing.c @@ -95,18 +95,22 @@ void printSetUpdateWaiting(bool isWaiting) void printerGotoIdle(void) { - // disable all heater - for (TOOL i = BED; i < HEATER_COUNT; i++) + if (infoSettings.cnc_mode != 1) { - mustStoreCmd("%s S0\n", heatCmd[i]); + // disable all heater + for (TOOL i = BED; i < HEATER_COUNT; i++) + { + mustStoreCmd("%s S0\n", heatCmd[i]); + } } + // disable all fan for (u8 i = 0; i < (infoSettings.fan_count); i++) { mustStoreCmd("%s S0\n", fanCmd[i]); } // disable all stepper - mustStoreCmd("M18\n"); + // mustStoreCmd("M18\n"); } //only return gcode file name except path @@ -295,6 +299,12 @@ void abortPrinting(void) } heatClearIsWaiting(); + if (infoSettings.cnc_mode != 1) + { + // Always turn off the spindle. + mustStoreCmd("M05\n"); + } + endPrinting(); exitPrinting(); } diff --git a/TFT/src/User/API/Settings.c b/TFT/src/User/API/Settings.c index cb2062e123..3861cd8be1 100644 --- a/TFT/src/User/API/Settings.c +++ b/TFT/src/User/API/Settings.c @@ -24,6 +24,10 @@ void infoSettingsReset(void) infoSettings.language = DEFAULT_LANGUAGE; infoSettings.mode = DEFAULT_LCD_MODE; infoSettings.unified_menu = UNIFIED_MENU; + infoSettings.cnc_mode = CNC_MODE; + infoSettings.laser_mode = LASER_MODE; + infoSettings.touchplate_on = ENABLED; + infoSettings.touchplate_height = TOUCHPLATE_OFFSET; infoSettings.bg_color = lcd_colors[BACKGROUND_COLOR]; infoSettings.font_color = lcd_colors[FONT_COLOR]; diff --git a/TFT/src/User/API/Settings.h b/TFT/src/User/API/Settings.h index a9a81342ee..c9f7a9f233 100644 --- a/TFT/src/User/API/Settings.h +++ b/TFT/src/User/API/Settings.h @@ -47,6 +47,10 @@ typedef struct uint8_t language; uint8_t mode; uint8_t unified_menu; + uint8_t cnc_mode; + uint8_t laser_mode; + float touchplate_height; + uint8_t touchplate_on; uint8_t rotate_ui; uint16_t bg_color; diff --git a/TFT/src/User/API/Temperature.c b/TFT/src/User/API/Temperature.c index 40960a62a9..c9fe973bde 100644 --- a/TFT/src/User/API/Temperature.c +++ b/TFT/src/User/API/Temperature.c @@ -200,9 +200,10 @@ void loopCheckHeater(void) do { // Send M105 query temperature continuously if(heat_update_waiting == true) {updateNextHeatCheckTime();break;} - if(OS_GetTimeMs() < nextHeatCheckTime) break; - if(RequestCommandInfoIsRunning()) break; //to avoid colision in Gcode response processing - if(storeCmd("M105\n") == false) break; + if(OS_GetTimeMs() < nextHeatCheckTime) break; + if(RequestCommandInfoIsRunning()) break; //to avoid colision in Gcode response processing + if(infoMenu.menu[infoMenu.cur] == menuTerminal) break; //to avoid M105 during terminal viewing + if(storeCmd("M105\n") == false) break; updateNextHeatCheckTime(); heat_update_waiting = true; }while(0); diff --git a/TFT/src/User/API/config.c b/TFT/src/User/API/config.c index 87fbf00e11..84003b5aab 100644 --- a/TFT/src/User/API/config.c +++ b/TFT/src/User/API/config.c @@ -413,6 +413,14 @@ void parseConfigKey(u16 index) infoSettings.unified_menu = getOnOff(); break; + case C_INDEX_CNCMODE: + infoSettings.cnc_mode = getOnOff(); + break; + + case C_INDEX_LASERMODE: + infoSettings.laser_mode = getOnOff(); + break; + case C_INDEX_UART_BAUDRATE: if (inLimit(config_int(),0,ITEM_BAUDRATE_NUM-1)) infoSettings.baudrate = item_baudrate[config_int()]; @@ -804,6 +812,17 @@ void parseConfigKey(u16 index) } } break; + //---------------------------------------------------------Z min Touch Plate: + case C_INDEX_TOUCHPLATE_ON: + infoSettings.touchplate_on = getOnOff(); + break; + + case C_INDEX_TOUCHPLATE_HEIGHT: + if (inLimit(config_float(), MIN_SIZE_LIMIT, MAX_SIZE_LIMIT)) + { + infoSettings.touchplate_height = config_float(); + } + break; //---------------------------------------------------------Power Supply Settings (if connected to TFT Controller): diff --git a/TFT/src/User/API/config.h b/TFT/src/User/API/config.h index af70cd48d2..d08a9136a6 100644 --- a/TFT/src/User/API/config.h +++ b/TFT/src/User/API/config.h @@ -10,6 +10,8 @@ #define CONFIG_FILE_PATH "0:config.ini" #define CONFIG_UNIFIEDMENU "unified_menu:" +#define CONFIG_CNCMODE "cnc_mode:" +#define CONFIG_LASERMODE "laser_mode:" #define CONFIG_UART_BAUDRATE "baudrate:" #define CONFIG_LANGUAGE "language:" @@ -68,6 +70,9 @@ #define CONFIG_PREHEAT_TEMP_2 "preheat_temp2:" #define CONFIG_PREHEAT_TEMP_3 "preheat_temp3:" #define CONFIG_PREHEAT_TEMP_4 "preheat_temp4:" +//-----------------------------Z min Touch Plate +#define CONFIG_TOUCHPLATE_ON "touchplate_on:" +#define CONFIG_TOUCHPLATE_HEIGHT "touchplate_height:" //-----------------------------Power Supply Settings (if connected to TFT Controller) #define CONFIG_PS_ON "ps_on:" #define CONFIG_PS_LOGIC "ps_on_active_high:" diff --git a/TFT/src/User/API/config.inc b/TFT/src/User/API/config.inc index 409fd0032e..b63448fc8b 100644 --- a/TFT/src/User/API/config.inc +++ b/TFT/src/User/API/config.inc @@ -6,6 +6,8 @@ * Description: https://en.wikipedia.org/wiki/X_Macro */ X_CONFIG(UNIFIEDMENU) +X_CONFIG(CNCMODE) +X_CONFIG(LASERMODE) X_CONFIG(UART_BAUDRATE) X_CONFIG(LANGUAGE) X_CONFIG(TITLE_BG) @@ -62,6 +64,9 @@ X_CONFIG(PREHEAT_TEMP_1) X_CONFIG(PREHEAT_TEMP_2) X_CONFIG(PREHEAT_TEMP_3) X_CONFIG(PREHEAT_TEMP_4) +//-----------------------------Z min Touch Plate +X_CONFIG(TOUCHPLATE_ON) +X_CONFIG(TOUCHPLATE_HEIGHT) //-----------------------------Power Supply Settings (if connected to TFT Controller) X_CONFIG(PS_ON) X_CONFIG(PS_LOGIC) diff --git a/TFT/src/User/API/flashStore.c b/TFT/src/User/API/flashStore.c index c3bc0511d0..e404bf33ec 100644 --- a/TFT/src/User/API/flashStore.c +++ b/TFT/src/User/API/flashStore.c @@ -72,6 +72,11 @@ void readStoredPara(void) infoSettings.language = byteToWord(data + (index += 4), 4); infoSettings.mode = byteToWord(data + (index += 4), 4); infoSettings.unified_menu = byteToWord(data + (index += 4), 4); + infoSettings.cnc_mode = byteToWord(data + (index += 4), 4); + infoSettings.laser_mode = byteToWord(data + (index += 4), 4); + infoSettings.touchplate_on = byteToWord(data + (index += 4), 4); + // This only stores integers, we need to store a floating point value. + infoSettings.touchplate_height = (double)(byteToWord(data + (index += 4), 4)) / 1000.0; infoSettings.bg_color = byteToWord(data + (index += 4), 4); infoSettings.font_color = byteToWord(data + (index += 4), 4); @@ -198,6 +203,11 @@ void storePara(void) wordToByte(infoSettings.language, data + (index += 4)); wordToByte(infoSettings.mode, data + (index += 4)); wordToByte(infoSettings.unified_menu, data + (index += 4)); + wordToByte(infoSettings.cnc_mode, data + (index += 4)); + wordToByte(infoSettings.laser_mode, data + (index += 4)); + wordToByte(infoSettings.touchplate_on, data + (index += 4)); + // This only stores integers, we need to store a floating point value. + wordToByte((int)(infoSettings.touchplate_height*1000), data + (index += 4)); wordToByte(infoSettings.bg_color, data + (index += 4)); wordToByte(infoSettings.font_color, data + (index += 4)); diff --git a/TFT/src/User/API/icon_list.inc b/TFT/src/User/API/icon_list.inc index e93c09b544..6ccb4181c7 100644 --- a/TFT/src/User/API/icon_list.inc +++ b/TFT/src/User/API/icon_list.inc @@ -118,3 +118,11 @@ X_ICON (STATUS_BED) X_ICON (STATUS_FAN) X_ICON (STATUS_SPEED) X_ICON (STATUS_FLOW) +X_ICON (ZERO_X) +X_ICON (ZERO_Y) +X_ICON (ZERO_Z) +X_ICON (SPINDLE) +X_ICON (LASER) +X_ICON (LASER_2) +X_ICON (LASER_100) +X_ICON (LASER_OFF) diff --git a/TFT/src/User/API/interfaceCmd.c b/TFT/src/User/API/interfaceCmd.c index caa85882fa..6a94c8767c 100644 --- a/TFT/src/User/API/interfaceCmd.c +++ b/TFT/src/User/API/interfaceCmd.c @@ -485,7 +485,11 @@ void sendQueueCmd(void) if(!fromTFT) { u8 i = 0; if(cmd_seen('P')) i = cmd_value(); - fanSetSpeed(i, 0); + #ifdef CNC_LASER + laserSetSpeed(i, 0); + #else + fanSetSpeed(i, 0); + #endif } break; } diff --git a/TFT/src/User/API/parseACK.c b/TFT/src/User/API/parseACK.c index 091f2f4a37..8047299e4f 100644 --- a/TFT/src/User/API/parseACK.c +++ b/TFT/src/User/API/parseACK.c @@ -420,7 +420,9 @@ void parseACK(void) { u8 i = ack_value(); if (ack_seen("S")) + { fanSetSpeed(i, ack_value()); + } } // Parse pause message else if(ack_seen("paused for user")) diff --git a/TFT/src/User/Configuration.h b/TFT/src/User/Configuration.h index 57fc50128d..e82f136e6d 100644 --- a/TFT/src/User/Configuration.h +++ b/TFT/src/User/Configuration.h @@ -246,6 +246,15 @@ // Move, Home, Extrude, ABL at one Place and bring G-code Menu on Home Menu #define UNIFIED_MENU true //for unified menu: true | for classic menu: false +// Enable CNC mode mutually exclusive to UNIFIED_MENU +#define CNC_MODE true + +// Enable Laser interface instead of the fan interface (for CNC mode only). +#define LASER_MODE true + +// Change this if you'd like to have a Z offset after homing Z. +#define TOUCHPLATE_OFFSET 0.0 + /** * SD support * Starting from Marlin Bugfix 2.0.x Distribution Date: 2020-04-27 & above, The TFT will auto detect diff --git a/TFT/src/User/Menu/Fan.c b/TFT/src/User/Menu/Fan.c index 88d835c45d..bf31ce0d03 100644 --- a/TFT/src/User/Menu/Fan.c +++ b/TFT/src/User/Menu/Fan.c @@ -46,6 +46,20 @@ void menuFan(void) {ICON_BACK, LABEL_BACK},} }; + MENUITEMS laserItems = { + // title + LABEL_LASER, + // icon label + {{ICON_DEC, LABEL_DEC}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_INC, LABEL_INC}, + {ICON_LASER_2 , LABEL_LASER_2}, + {ICON_LASER_100, LABEL_LASER_100}, + {ICON_LASER_OFF, LABEL_LASER_OFF}, + {ICON_BACK, LABEL_BACK},} + }; + KEY_VALUES key_num = KEY_IDLE; u8 curspeed; @@ -54,7 +68,14 @@ void menuFan(void) else fanItems.items[KEY_ICON_4] = itemFan[1]; - menuDrawPage(&fanItems); + if (infoSettings.laser_mode != 1) + { + menuDrawPage(&fanItems); + } + else + { + menuDrawPage(&laserItems); + } fanSpeedReDraw(false); #if LCD_ENCODER_SUPPORT @@ -103,14 +124,21 @@ void menuFan(void) break; case KEY_ICON_4: - if (infoSettings.fan_count > 1) + if (infoSettings.laser_mode == 1) { - curIndex = (curIndex + 1) % infoSettings.fan_count; - fanSpeedReDraw(false); + fanSetSpeedPercent(curIndex, 2); } else { - fanSetSpeed(curIndex, (infoSettings.fan_max[curIndex] + 1) / 2); + if (infoSettings.fan_count > 1) + { + curIndex = (curIndex + 1) % infoSettings.fan_count; + fanSpeedReDraw(false); + } + else + { + fanSetSpeed(curIndex, (infoSettings.fan_max[curIndex] + 1) / 2); + } } break; diff --git a/TFT/src/User/Menu/FeatureSettings.c b/TFT/src/User/Menu/FeatureSettings.c index 23d34c21c4..ee49ec91d0 100644 --- a/TFT/src/User/Menu/FeatureSettings.c +++ b/TFT/src/User/Menu/FeatureSettings.c @@ -48,6 +48,8 @@ const LABEL itemMoveSpeed[ITEM_SPEED_NUM] = { typedef enum { SKEY_ACK = 0, + SKEY_CNC, + SKEY_LASER, SKEY_INVERT_X, SKEY_INVERT_Y, SKEY_INVERT_Z, @@ -86,6 +88,8 @@ int fe_cur_page = 0; // LISTITEM settingPage[SKEY_COUNT] = { {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_TERMINAL_ACK, LABEL_BACKGROUND }, + {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_CNC_MODE, LABEL_BACKGROUND }, + {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_LASER_MODE, LABEL_BACKGROUND }, {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_INVERT_XAXIS, LABEL_BACKGROUND }, {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_INVERT_YAXIS, LABEL_BACKGROUND }, {ICONCHAR_TOGGLE_ON, LIST_TOGGLE, LABEL_INVERT_ZAXIS, LABEL_BACKGROUND }, @@ -136,6 +140,16 @@ void updateFeatureSettings(uint8_t key_val) settingPage[item_index].icon = toggleitem[infoSettings.terminalACK]; break; + case SKEY_CNC: + infoSettings.cnc_mode = (infoSettings.cnc_mode + 1) % TOGGLE_NUM; + settingPage[item_index].icon = toggleitem[infoSettings.cnc_mode]; + break; + + case SKEY_LASER: + infoSettings.laser_mode = (infoSettings.laser_mode + 1) % TOGGLE_NUM; + settingPage[item_index].icon = toggleitem[infoSettings.laser_mode]; + break; + case SKEY_INVERT_X: infoSettings.invert_axis[X_AXIS] = (infoSettings.invert_axis[X_AXIS] + 1) % TOGGLE_NUM; settingPage[item_index].icon = toggleitem[infoSettings.invert_axis[X_AXIS]]; @@ -262,6 +276,14 @@ void loadFeatureSettings(){ settingPage[item_index].icon = toggleitem[infoSettings.terminalACK]; break; + case SKEY_CNC: + settingPage[item_index].icon = toggleitem[infoSettings.cnc_mode]; + break; + + case SKEY_LASER: + settingPage[item_index].icon = toggleitem[infoSettings.laser_mode]; + break; + case SKEY_INVERT_X: settingPage[item_index].icon = toggleitem[infoSettings.invert_axis[X_AXIS]]; break; diff --git a/TFT/src/User/Menu/Home.c b/TFT/src/User/Menu/Home.c index b55439c236..e67a616cdb 100644 --- a/TFT/src/User/Menu/Home.c +++ b/TFT/src/User/Menu/Home.c @@ -16,22 +16,67 @@ LABEL_HOME, {ICON_BACK, LABEL_BACK},} }; +const MENUITEMS cncHomeItems = { +// title +LABEL_HOME, +// icon label + {{ICON_HOME, LABEL_XY}, + {ICON_Z_HOME, LABEL_Z}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_ZERO_X, LABEL_ZERO_X}, + {ICON_ZERO_Y, LABEL_ZERO_Y}, + {ICON_ZERO_Z, LABEL_ZERO_Z}, + {ICON_BACK, LABEL_BACK},} +}; + void menuHome(void) { KEY_VALUES key_num = KEY_IDLE; - menuDrawPage(&homeItems); + if (infoSettings.cnc_mode == 1) + { + menuDrawPage(&cncHomeItems); + } + else + { + menuDrawPage(&homeItems); + } + while(infoMenu.menu[infoMenu.cur] == menuHome) { key_num = menuKeyGetValue(); - switch(key_num) + if (infoSettings.cnc_mode == 1) + { + switch(key_num) + { + case KEY_ICON_0: storeCmd("G28 XY\n"); break; + case KEY_ICON_1: + storeCmd("G28 Z\n"); + if(infoSettings.touchplate_on == 1) + { + storeCmd("G92 Z%.3f\n", infoSettings.touchplate_height); + } + break; + case KEY_ICON_4: storeCmd("G92 X0\n"); break; + case KEY_ICON_5: storeCmd("G92 Y0\n"); break; + case KEY_ICON_6: storeCmd("G92 Z0\n"); break; + default:break; + case KEY_ICON_7: infoMenu.cur--; break; + } + } + else { - case KEY_ICON_0: storeCmd("G28\n"); break; - case KEY_ICON_1: storeCmd("G28 X\n"); break; - case KEY_ICON_2: storeCmd("G28 Y\n"); break; - case KEY_ICON_3: storeCmd("G28 Z\n"); break; - case KEY_ICON_7: infoMenu.cur--; break; - default:break; + switch(key_num) + { + case KEY_ICON_0: storeCmd("G28\n"); break; + case KEY_ICON_1: storeCmd("G28 X\n"); break; + case KEY_ICON_2: storeCmd("G28 Y\n"); break; + case KEY_ICON_3: storeCmd("G28 Z\n"); break; + default:break; + case KEY_ICON_7: infoMenu.cur--; break; + } } + loopProcess(); } } diff --git a/TFT/src/User/Menu/MainPage.c b/TFT/src/User/Menu/MainPage.c index ed64f7b866..48388b2542 100644 --- a/TFT/src/User/Menu/MainPage.c +++ b/TFT/src/User/Menu/MainPage.c @@ -45,6 +45,53 @@ MENUITEMS unifiedPageItems = { } } +void cncMenu(void){ + //1 title, ITEM_PER_PAGE items(icon+label) + MENUITEMS cncPageItems = { + // title + LABEL_MAINMENU, + // icon label + {{ICON_HOME, LABEL_HOME}, + {ICON_MOVE, LABEL_MOVE}, + {ICON_GCODE, LABEL_TERMINAL}, + {ICON_STOP, LABEL_EMERGENCYSTOP}, + {ICON_LASER, LABEL_LASER}, + {ICON_SPINDLE, LABEL_SPINDLE}, + {ICON_SETTINGS, LABEL_SETTINGS}, + {ICON_SPINDLE, LABEL_CUT}} + }; + + cncPageItems.items[4].icon = (infoSettings.laser_mode == 1) ? ICON_LASER : ICON_FAN; + cncPageItems.items[4].label.index = (infoSettings.laser_mode == 1) ? LABEL_LASER : LABEL_FAN; + + KEY_VALUES key_num = KEY_IDLE; + GUI_SetBkColor(infoSettings.bg_color); + + menuDrawPage(&cncPageItems); + + while(infoMenu.menu[infoMenu.cur] == cncMenu) + { + key_num = menuKeyGetValue(); + switch(key_num) + { + case KEY_ICON_0: infoMenu.menu[++infoMenu.cur] = menuHome; break; + case KEY_ICON_1: infoMenu.menu[++infoMenu.cur] = menuMove; break; + case KEY_ICON_2: infoMenu.menu[++infoMenu.cur] = menuSendGcode; break; + case KEY_ICON_3: storeCmd("M112\n"); break; // Emergency Stop : Used for emergency stopping, a reset is required to return to operational mode. + // it may need to wait for a space to open up in the command queue. + // Enable EMERGENCY_PARSER in Marlin Firmware for an instantaneous M112 command. + case KEY_ICON_4: infoMenu.menu[++infoMenu.cur] = menuFan; break; + case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuSpindle; break; + case KEY_ICON_6: infoMenu.menu[++infoMenu.cur] = menuSettings; break; + case KEY_ICON_7: infoMenu.menu[++infoMenu.cur] = menuPrint; break; + default:break; + // Uh Oh...case KEY_ICON_7: infoMenu.cur--; break; + // This would be nice too...case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuCustom; break; + } + loopProcess(); + } +} + void classicMenu(void) { //1 title, ITEM_PER_PAGE items(icon+label) diff --git a/TFT/src/User/Menu/MainPage.h b/TFT/src/User/Menu/MainPage.h index a7aa82c92e..ccdb5c84a4 100644 --- a/TFT/src/User/Menu/MainPage.h +++ b/TFT/src/User/Menu/MainPage.h @@ -2,6 +2,7 @@ #define _MAINPAGE_H_ void unifiedMenu(void); +void cncMenu(void); void classicMenu(void); #endif diff --git a/TFT/src/User/Menu/Mode.c b/TFT/src/User/Menu/Mode.c index f08cd8763c..d88e651c30 100644 --- a/TFT/src/User/Menu/Mode.c +++ b/TFT/src/User/Menu/Mode.c @@ -36,11 +36,18 @@ void infoMenuSelect(void) GUI_SetColor(infoSettings.font_color); GUI_SetBkColor(infoSettings.bg_color); - if(infoSettings.unified_menu == 1) //if Unified menu is selected + if(infoSettings.cnc_mode == 1) + { + infoMenu.menu[infoMenu.cur] = cncMenu; + } + else if(infoSettings.unified_menu == 1) //if Unified menu is selected + { infoMenu.menu[infoMenu.cur] = menuStatus; //status screen as default screen on boot + } else + { infoMenu.menu[infoMenu.cur] = classicMenu; // classic UI - + } #ifdef SHOW_BTT_BOOTSCREEN if (freshboot) { diff --git a/TFT/src/User/Menu/Print.c b/TFT/src/User/Menu/Print.c index 25fd52b952..b96cebbf1f 100644 --- a/TFT/src/User/Menu/Print.c +++ b/TFT/src/User/Menu/Print.c @@ -338,9 +338,17 @@ void menuPrintFromSource(void) //-load bmp preview in flash if file exists - end char temp_info[75]; sprintf(temp_info, (char *)textSelect(LABEL_START_PRINT), infoFile.file[key_num + start - infoFile.F_num]); - //confirm file selction - showDialog(DIALOG_TYPE_QUESTION, textSelect(LABEL_PRINT), (u8*)temp_info, - textSelect(LABEL_CONFIRM), textSelect(LABEL_CANCEL), startPrint, resetInfoFile, NULL); + //confirm file selection + if (infoSettings.cnc_mode != 1) + { + showDialog(DIALOG_TYPE_QUESTION, textSelect(LABEL_PRINT), (u8*)temp_info, + textSelect(LABEL_CONFIRM), textSelect(LABEL_CANCEL), startPrint, resetInfoFile, NULL); + } + else + { + showDialog(DIALOG_TYPE_QUESTION, textSelect(LABEL_CUT), (u8*)temp_info, + textSelect(LABEL_CONFIRM), textSelect(LABEL_CANCEL), startPrint, resetInfoFile, NULL); + } } } @@ -382,7 +390,7 @@ void menuPrintFromSource(void) MENUITEMS sourceSelItems = { // title -LABEL_PRINT, + LABEL_PRINT, // icon label {{ICON_ONTFT_SD, LABEL_TFTSD}, #ifdef U_DISK_SUPPORT @@ -407,6 +415,8 @@ void menuPrint(void) sourceSelItems.items[ONBOARD_SD_INDEX].icon = (infoMachineSettings.onboard_sd_support == ENABLED) ? ICON_ONBOARD_SD : ICON_BACKGROUND; sourceSelItems.items[ONBOARD_SD_INDEX].label.index = (infoMachineSettings.onboard_sd_support == ENABLED) ? LABEL_ONBOARDSD : LABEL_BACKGROUND; + sourceSelItems.title.index = (infoSettings.cnc_mode == 1) ? LABEL_CUT : LABEL_PRINT; + menuDrawPage(&sourceSelItems); while(infoMenu.menu[infoMenu.cur] == menuPrint) { diff --git a/TFT/src/User/Menu/PrintingMenu.c b/TFT/src/User/Menu/PrintingMenu.c index 416328d462..a34e45e3d7 100644 --- a/TFT/src/User/Menu/PrintingMenu.c +++ b/TFT/src/User/Menu/PrintingMenu.c @@ -300,7 +300,15 @@ void toggleinfo(void) reDrawFan(FAN_ICON_POS); } - c_speedID = (c_speedID + 1) % 2; + if (infoSettings.cnc_mode != 1) + { + c_speedID = (c_speedID + 1) % 2; + } + else + { + c_speedID = 0; + } + nextTime = OS_GetTimeMs() + toggle_time; rapid_serial_loop(); //perform backend printing loop before drawing to avoid printer idling reDrawSpeed(SPD_ICON_POS); @@ -328,8 +336,11 @@ void printingDrawPage(void) printingItems.items[key_pause] = itemIsPause[isPause()]; menuDrawPage(&printingItems); - reValueNozzle(EXT_ICON_POS); - reValueBed(BED_ICON_POS); + if (infoSettings.cnc_mode != 1) + { + reValueNozzle(EXT_ICON_POS); + reValueBed(BED_ICON_POS); + } reDrawFan(FAN_ICON_POS); reDrawTime(TIM_ICON_POS); reDrawProgress(TIM_ICON_POS); @@ -356,7 +367,9 @@ void menuPrinting(void) { // Scroll_DispString(&titleScroll, LEFT); //Scroll display file name will take too many CPU cycles - //check nozzle temp change + if (infoSettings.cnc_mode != 1) + { + //check nozzle temp change if (nowHeat.T[c_Tool].current != heatGetCurrentTemp(c_Tool) || nowHeat.T[c_Tool].target != heatGetTargetTemp(c_Tool)) { nowHeat.T[c_Tool].current = heatGetCurrentTemp(c_Tool); @@ -364,6 +377,7 @@ void menuPrinting(void) rapid_serial_loop(); //perform backend printing loop before drawing to avoid printer idling reValueNozzle(EXT_ICON_POS); } + } //check bed temp change if (nowHeat.T[BED].current != heatGetCurrentTemp(BED) || nowHeat.T[BED].target != heatGetTargetTemp(BED)) diff --git a/TFT/src/User/Menu/SendGcode.c b/TFT/src/User/Menu/SendGcode.c index d2dcb65fb6..b0e44eb4d7 100644 --- a/TFT/src/User/Menu/SendGcode.c +++ b/TFT/src/User/Menu/SendGcode.c @@ -108,6 +108,21 @@ void menuDrawSendGcode(void) TSC_ReDrawIcon = sendGcodeReDrawButton; } +#define TERMINAL_MAX_CHAR (LCD_WIDTH/BYTE_WIDTH * (LCD_HEIGHT - BYTE_HEIGHT) /BYTE_HEIGHT) + +char terminalBuf[TERMINAL_MAX_CHAR]; +void sendGcodeTerminalCache(char *stream, TERMINAL_SRC src) +{ + const char* const terminalSign[] = {"Send: ", "Rcv: "}; + if (infoMenu.menu[infoMenu.cur] != menuSendGcode && infoMenu.menu[infoMenu.cur] != menuTerminal) return; + if (strlen(terminalBuf) + strlen(stream) + strlen(terminalSign[src]) >= TERMINAL_MAX_CHAR) + { + terminalBuf[0] = 0; + } + strlcat(terminalBuf, terminalSign[src], TERMINAL_MAX_CHAR); + strlcat(terminalBuf, stream, TERMINAL_MAX_CHAR); +} + void menuSendGcode(void) { GUI_RECT gcodeRect = {rect_of_Gkey[GKEY_BACK].x1+10, rect_of_Gkey[GKEY_BACK].y0, rect_of_Gkey[GKEY_SEND].x0-10, rect_of_Gkey[GKEY_SEND].y1}; @@ -135,6 +150,7 @@ void menuSendGcode(void) { gcodeBuf[nowIndex++] = '\n'; // End char '\n' for Gcode gcodeBuf[nowIndex] = 0; + terminalBuf[0] = 0; storeCmd(gcodeBuf); gcodeBuf[nowIndex = 0] = 0; } @@ -183,21 +199,6 @@ void menuSendGcode(void) } -#define TERMINAL_MAX_CHAR (LCD_WIDTH/BYTE_WIDTH * (LCD_HEIGHT - BYTE_HEIGHT) /BYTE_HEIGHT) - -char terminalBuf[TERMINAL_MAX_CHAR]; -void sendGcodeTerminalCache(char *stream, TERMINAL_SRC src) -{ - const char* const terminalSign[] = {"Send: ", "Rcv: "}; - if (infoMenu.menu[infoMenu.cur] != menuSendGcode && infoMenu.menu[infoMenu.cur] != menuTerminal) return; - if (strlen(terminalBuf) + strlen(stream) + strlen(terminalSign[src]) >= TERMINAL_MAX_CHAR) - { - terminalBuf[0] = 0; - } - strlcat(terminalBuf, terminalSign[src], TERMINAL_MAX_CHAR); - strlcat(terminalBuf, stream, TERMINAL_MAX_CHAR); -} - #define CURSOR_START_X 0 #define CURSOR_END_X LCD_WIDTH #define CURSOR_START_Y TITLE_END_Y diff --git a/TFT/src/User/Menu/Spindle.c b/TFT/src/User/Menu/Spindle.c new file mode 100644 index 0000000000..07a4211a78 --- /dev/null +++ b/TFT/src/User/Menu/Spindle.c @@ -0,0 +1,39 @@ +#include "Spindle.h" +#include "includes.h" + +//1��title(����), ITEM_PER_PAGE��item(ͼ��+��ǩ) +const MENUITEMS spindleItems = { +// title +LABEL_SPINDLE, +// icon label + {{ICON_EEPROM_SAVE, LABEL_ON}, + {ICON_STOP, LABEL_OFF}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACKGROUND, LABEL_BACKGROUND}, + {ICON_BACK, LABEL_BACK},} +}; + +void menuSpindle(void) +{ + KEY_VALUES key_num = KEY_IDLE; + menuDrawPage(&spindleItems); + while(infoMenu.menu[infoMenu.cur] == menuSpindle) + { + key_num = menuKeyGetValue(); + switch(key_num) + { + case KEY_ICON_0: storeCmd("M03\n"); break; + case KEY_ICON_1: storeCmd("M05\n"); break; + // case KEY_ICON_4: storeCmd("G92 X0\n"); break; + // case KEY_ICON_5: storeCmd("G92 Y0\n"); break; + // case KEY_ICON_6: storeCmd("G92 Z19.75\n"); break; + case KEY_ICON_7: infoMenu.cur--; break; + default:break; + } + loopProcess(); + } +} + diff --git a/TFT/src/User/Menu/Spindle.h b/TFT/src/User/Menu/Spindle.h new file mode 100644 index 0000000000..41a2cebb83 --- /dev/null +++ b/TFT/src/User/Menu/Spindle.h @@ -0,0 +1,6 @@ +#ifndef _SPINDLE_H_ +#define _SPINDLE_H_ + +void menuSpindle(void); + +#endif diff --git a/TFT/src/User/config.ini b/TFT/src/User/config.ini index c16a012899..847f250e6f 100644 --- a/TFT/src/User/config.ini +++ b/TFT/src/User/config.ini @@ -26,7 +26,7 @@ unified_menu:1 #### Baudrate # Options: [2400: 0, 9600: 1, 19200: 2, 38400: 3, 57600: 4, 115200: 5, 250000: 6, 500000: 7, 1000000: 8] -baudrate:5 +baudrate:6 #### Default Touch Mode Language # Select the language to display on the LCD while in Touch Mode. @@ -88,7 +88,6 @@ persistent_info:0 # Options: [enable: 1, disable: 0] files_list_mode:1 - #-------------------------------------------------------------------- # Marlin Mode Settings (Only for TFT35_V3.0/ TFT24_V1.1/ TFT28V3.0) #-------------------------------------------------------------------- @@ -109,7 +108,7 @@ serial_always_on:0 # Or set the color(RGB888 format) hex value directly(start with “0x”). # Such as: 0xFF0000 : Red, 0x00FF00 : Green, 0x0000FF : Blue marlin_bg_color:1 -marlin_fn_color:8 +marlin_fn_color:2 #### Marlin Mode show title # Options: [enable: 1, disable: 0] @@ -139,12 +138,22 @@ ext_count:1 # Options: [1 to 6] fan_count:1 +#### CNC Mode +# Select to change the mode to be mostly CNC related. +# Options: [CNC Mode: 1, Printer Mode: 0] +cnc_mode:1 + +#### Laser Mode +# Select to change the fan settings to a laser. +# Options: [Laser mode: 1, Fan mode: 0] +laser_mode:1 + #### Bed / Extruder Maximum Temperatures # format [max_temp: BED: T0: T1: T2: T3: T4: T5:] max_temp:BED:150 T0:275 T1:275 T2:275 T3:275 T4:275 T5:275 #### Cold Extrusion Minimum Temperature -min_temp:180 +min_temp:170 #### Fan Maximum PWM speed (0 to 255) # format [fan_max: F0: F1: F2: F3: F4: F5:] @@ -156,12 +165,12 @@ fan_max:F0:255 F1:255 F2:255 F3:255 F4:255 F5:255 # minimum size limit format [size_min: X Y Z] # maximum size limit format [size_max: X Y Z] size_min:X0 Y0 Z0 -size_max:X235 Y235 Z250 +size_max:X300 Y300 Z250 #### default Move Speeds (mm/min) # Options: [Slow: S, Normal: N, Fast: F] # format [move_speed: S N F] -move_speed:S1000 N3000 F5000 +move_speed:S1000 N2100 F3000 #### default Extruder Speeds (mm/min) # Options: [Slow: S, Normal: N, Fast: F] @@ -205,10 +214,10 @@ fan_speed_percent:1 # Pause XY position format [pause_pos: X Y] # Pause Z raise format [pause_z_raise: Z] # Pause feed Rate # format [ X Y Z E] -pause_retract:R15 P16 -pause_pos:X10 Y10 -pause_z_raise:20 -pause_feedrate:X6000 Y6000 Z6000 E600 +#pause_retract:R15 P16 +#pause_pos:X10 Y10 +#pause_z_raise:20 +#pause_feedrate:X6000 Y6000 Z6000 E600 ### Manual Level Points Edge distance (mm) # distance in mm, Feedrates in mm/min @@ -236,6 +245,18 @@ preheat_temp3:T230 B90 preheat_name4:TPU preheat_temp4:T220 B50 +#-------------------------------------------------------------------- +# Z min Touch Plate +#-------------------------------------------------------------------- + +#### Default Touch Plate Mode +# Options: [OFF: 0, ON: 1:] +touchplate_on:1 + +#### Z Offset for touch plate height +# Plate thickness in mm (G92 Zx.xx) +touchplate_height:0.5 + #-------------------------------------------------------------------- # Power Supply Settings (if connected to TFT Controller) #-------------------------------------------------------------------- @@ -298,7 +319,7 @@ buzzer:1 #### Knob Led Color (only for TFT35 E3.0) #Options: [LED_OFF: 0, LED_WHITE: 1, LED_RED: 2, LED_ORANGE: 3, LED_YELLOW: 4, LED_GREEN: 5, LED_BLUE: 6, LED_INDIGO: 7, LED_VIOLET: 8] -knob_led_color:0 +knob_led_color:2 #### Default LCD Brightness levels (only for TFT35v3.0 & TFT28v3.0) # Options: [(low) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] @@ -373,11 +394,11 @@ cancel_gcode_enabled:0 #### Start G-code - run this G-code before starting print # maximum length 50 characters -start_gcode:G28 XY R20\n +#start_gcode:G28 XY R20\n #### End G-code - run this G-code after finishing print # maximum length 50 characters -end_gcode:G90\nG1 E-4\nG92 E0\nM18\n +#end_gcode:G90\nG1 E-4\nG92 E0\nM18\n #### Cancel G-code - run this G-code after canceling print # maximum length 50 characters diff --git a/TFT/src/User/includes.h b/TFT/src/User/includes.h index 3aa3e57391..fd66f671d6 100644 --- a/TFT/src/User/includes.h +++ b/TFT/src/User/includes.h @@ -101,6 +101,8 @@ #include "UnifiedHeat.h" #include "StatusScreen.h" +#include "Spindle.h" + #define MAX_MENU_DEPTH 10 // max sub menu depth typedef void (*FP_MENU)(void);