123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 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 <https://www.gnu.org/licenses/>.
- *
- */
- #pragma once
-
- /**
- * DWIN by Creality3D
- */
-
- #include "../dwin_lcd.h"
- #include "rotary_encoder.h"
- #include "../../../libs/BL24CXX.h"
-
- #include "../../../inc/MarlinConfigPre.h"
-
- #if ANY(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN) && PREHEAT_COUNT
- #define HAS_PREHEAT 1
- #if PREHEAT_COUNT < 2
- #error "Creality DWIN requires two material preheat presets."
- #endif
- #endif
-
- enum processID : uint8_t {
- // Process ID
- MainMenu,
- SelectFile,
- Prepare,
- Control,
- Leveling,
- PrintProcess,
- AxisMove,
- TemperatureID,
- Motion,
- Info,
- Tune,
- #if HAS_PREHEAT
- PLAPreheat,
- ABSPreheat,
- #endif
- MaxSpeed,
- MaxSpeed_value,
- MaxAcceleration,
- MaxAcceleration_value,
- MaxJerk,
- MaxJerk_value,
- Step,
- Step_value,
-
- // Last Process ID
- Last_Prepare,
-
- // Back Process ID
- Back_Main,
- Back_Print,
-
- // Date variable ID
- Move_X,
- Move_Y,
- Move_Z,
- #if HAS_HOTEND
- Extruder,
- ETemp,
- #endif
- Homeoffset,
- #if HAS_HEATED_BED
- BedTemp,
- #endif
- #if HAS_FAN
- FanSpeed,
- #endif
- PrintSpeed,
-
- // Window ID
- Print_window,
- Popup_Window
- };
-
- // Picture ID
- #define Start_Process 0
- #define Language_English 1
- #define Language_Chinese 2
-
- // ICON ID
- #define ICON 0x09
- #define ICON_LOGO 0
- #define ICON_Print_0 1
- #define ICON_Print_1 2
- #define ICON_Prepare_0 3
- #define ICON_Prepare_1 4
- #define ICON_Control_0 5
- #define ICON_Control_1 6
- #define ICON_Leveling_0 7
- #define ICON_Leveling_1 8
- #define ICON_HotendTemp 9
- #define ICON_BedTemp 10
- #define ICON_Speed 11
- #define ICON_Zoffset 12
- #define ICON_Back 13
- #define ICON_File 14
- #define ICON_PrintTime 15
- #define ICON_RemainTime 16
- #define ICON_Setup_0 17
- #define ICON_Setup_1 18
- #define ICON_Pause_0 19
- #define ICON_Pause_1 20
- #define ICON_Continue_0 21
- #define ICON_Continue_1 22
- #define ICON_Stop_0 23
- #define ICON_Stop_1 24
- #define ICON_Bar 25
- #define ICON_More 26
-
- #define ICON_Axis 27
- #define ICON_CloseMotor 28
- #define ICON_Homing 29
- #define ICON_SetHome 30
- #define ICON_PLAPreheat 31
- #define ICON_ABSPreheat 32
- #define ICON_Cool 33
- #define ICON_Language 34
-
- #define ICON_MoveX 35
- #define ICON_MoveY 36
- #define ICON_MoveZ 37
- #define ICON_Extruder 38
-
- #define ICON_Temperature 40
- #define ICON_Motion 41
- #define ICON_WriteEEPROM 42
- #define ICON_ReadEEPROM 43
- #define ICON_ResumeEEPROM 44
- #define ICON_Info 45
-
- #define ICON_SetEndTemp 46
- #define ICON_SetBedTemp 47
- #define ICON_FanSpeed 48
- #define ICON_SetPLAPreheat 49
- #define ICON_SetABSPreheat 50
-
- #define ICON_MaxSpeed 51
- #define ICON_MaxAccelerated 52
- #define ICON_MaxJerk 53
- #define ICON_Step 54
- #define ICON_PrintSize 55
- #define ICON_Version 56
- #define ICON_Contact 57
- #define ICON_StockConfiguraton 58
- #define ICON_MaxSpeedX 59
- #define ICON_MaxSpeedY 60
- #define ICON_MaxSpeedZ 61
- #define ICON_MaxSpeedE 62
- #define ICON_MaxAccX 63
- #define ICON_MaxAccY 64
- #define ICON_MaxAccZ 65
- #define ICON_MaxAccE 66
- #define ICON_MaxSpeedJerkX 67
- #define ICON_MaxSpeedJerkY 68
- #define ICON_MaxSpeedJerkZ 69
- #define ICON_MaxSpeedJerkE 70
- #define ICON_StepX 71
- #define ICON_StepY 72
- #define ICON_StepZ 73
- #define ICON_StepE 74
- #define ICON_Setspeed 75
- #define ICON_SetZOffset 76
- #define ICON_Rectangle 77
- #define ICON_BLTouch 78
- #define ICON_TempTooLow 79
- #define ICON_AutoLeveling 80
- #define ICON_TempTooHigh 81
- #define ICON_NoTips_C 82
- #define ICON_NoTips_E 83
- #define ICON_Continue_C 84
- #define ICON_Continue_E 85
- #define ICON_Cancel_C 86
- #define ICON_Cancel_E 87
- #define ICON_Confirm_C 88
- #define ICON_Confirm_E 89
- #define ICON_Info_0 90
- #define ICON_Info_1 91
-
- /**
- * 3-.0:The font size, 0x00-0x09, corresponds to the font size below:
- * 0x00=6*12 0x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28
- * 0x05=16*32 0x06=20*40 0x07=24*48 0x08=28*56 0x09=32*64
- */
- #define font6x12 0x00
- #define font8x16 0x01
- #define font10x20 0x02
- #define font12x24 0x03
- #define font14x28 0x04
- #define font16x32 0x05
- #define font20x40 0x06
- #define font24x48 0x07
- #define font28x56 0x08
- #define font32x64 0x09
-
- // Color
- #define Color_White 0xFFFF
- #define Color_Bg_Window 0x31E8 // Popup background color
- #define Color_Bg_Blue 0x1125 // Dark blue background color
- #define Color_Bg_Black 0x0841 // Black background color
- #define Popup_Text_Color 0xD6BA // Popup font background color
- #define Line_Color 0x3A6A // Split line color
- #define Rectangle_Color 0xEE2F // Blue square cursor color
- #define Percent_Color 0xFE29 // Percentage color
- #define BarFill_Color 0x10E4 // Fill color of progress bar
- #define Select_Color 0x33BB // Selected color
-
- extern uint8_t checkkey;
- extern float zprobe_zoffset;
- extern char print_filename[16];
-
- extern millis_t dwin_heat_time;
-
- typedef struct {
- TERN_(HAS_HOTEND, int16_t E_Temp = 0);
- TERN_(HAS_HEATED_BED, int16_t Bed_Temp = 0);
- TERN_(HAS_PREHEAT, int16_t Fan_speed = 0);
- int16_t print_speed = 100;
- float Max_Feedspeed = 0;
- float Max_Acceleration = 0;
- float Max_Jerk = 0;
- float Max_Step = 0;
- float Move_X_scale = 0;
- float Move_Y_scale = 0;
- float Move_Z_scale = 0;
- #if HAS_HOTEND
- float Move_E_scale = 0;
- #endif
- float offset_value = 0;
- char show_mode = 0; // -1: Temperature control 0: Printing temperature
- } HMI_value_t;
-
- typedef struct {
- bool language_chinese; // 0: EN, 1: CN
- bool pause_flag:1;
- bool pause_action:1;
- bool print_finish:1;
- bool done_confirm_flag:1;
- bool select_flag:1;
- bool home_flag:1;
- bool heat_flag:1; // 0: heating done 1: during heating
- #if ENABLED(PREVENT_COLD_EXTRUSION)
- bool ETempTooLow_flag:1;
- #endif
- #if HAS_LEVELING
- bool leveling_offset_flag:1;
- #endif
- #if HAS_FAN
- AxisEnum feedspeed_axis;
- #endif
- AxisEnum acc_axis, jerk_axis, step_axis;
- } HMI_Flag;
-
- extern HMI_value_t HMI_ValueStruct;
- extern HMI_Flag HMI_flag;
-
- // Show ICO
- void ICON_Print(bool show);
- void ICON_Prepare(bool show);
- void ICON_Control(bool show);
- void ICON_Leveling(bool show);
- void ICON_StartInfo(bool show);
-
- void ICON_Setting(bool show);
- void ICON_Pause(bool show);
- void ICON_Continue(bool show);
- void ICON_Stop(bool show);
-
- #if HAS_HOTEND || HAS_HEATED_BED
- // Popup message window
- void DWIN_Popup_Temperature(const bool toohigh);
- #endif
-
- #if HAS_HOTEND
- void Popup_Window_ETempTooLow();
- #endif
-
- void Popup_Window_Resume();
- void Popup_Window_Home(const bool parking=false);
- void Popup_Window_Leveling();
-
- void Goto_PrintProcess();
- void Goto_MainMenu();
-
- // Variable control
- void HMI_Move_X();
- void HMI_Move_Y();
- void HMI_Move_Z();
- void HMI_Move_E();
-
- void HMI_Zoffset();
-
- TERN_(HAS_HOTEND, void HMI_ETemp());
- TERN_(HAS_HEATED_BED, void HMI_BedTemp());
- TERN_(HAS_FAN, void HMI_FanSpeed());
-
- void HMI_PrintSpeed();
-
- void HMI_MaxFeedspeedXYZE();
- void HMI_MaxAccelerationXYZE();
- void HMI_MaxJerkXYZE();
- void HMI_StepXYZE();
-
- void update_variable();
- void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value);
-
- // SD Card
- void HMI_SDCardInit();
- void HMI_SDCardUpdate();
-
- // Main Process
- void Icon_print(bool value);
- void Icon_control(bool value);
- void Icon_temperature(bool value);
- void Icon_leveling(bool value);
-
- // Other
- void Draw_Status_Area(const bool with_update); // Status Area
- void HMI_StartFrame(const bool with_update); // Prepare the menu view
- void HMI_MainMenu(); // Main process screen
- void HMI_SelectFile(); // File page
- void HMI_Printing(); // Print page
- void HMI_Prepare(); // Prepare page
- void HMI_Control(); // Control page
- void HMI_Leveling(); // Level the page
- void HMI_AxisMove(); // Axis movement menu
- void HMI_Temperature(); // Temperature menu
- void HMI_Motion(); // Sports menu
- void HMI_Info(); // Information menu
- void HMI_Tune(); // Adjust the menu
-
- #if HAS_PREHEAT
- void HMI_PLAPreheatSetting(); // PLA warm-up setting
- void HMI_ABSPreheatSetting(); // ABS warm-up setting
- #endif
-
- void HMI_MaxSpeed(); // Maximum speed submenu
- void HMI_MaxAcceleration(); // Maximum acceleration submenu
- void HMI_MaxJerk(); // Maximum jerk speed submenu
- void HMI_Step(); // Transmission ratio
-
- void HMI_Init();
- void DWIN_Update();
- void EachMomentUpdate();
- void DWIN_HandleScreen();
-
- void DWIN_CompletedHoming();
- void DWIN_CompletedLeveling();
|