From 1bd2c80ed9e6cc940ab89c9bfafbd19c41ba575a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 28 Sep 2020 18:44:55 -0500 Subject: [PATCH] Examples Extras --- config/examples/3DFabXYZ/Migbot/Readme.md | 4 + .../examples/ADIMLab/Gantry v1/_Bootscreen.h | 88 ++++++ .../examples/ADIMLab/Gantry v2/_Bootscreen.h | 88 ++++++ .../Alfawise/U20-bltouch/_Statusscreen.h | 79 ++++++ config/examples/Alfawise/U20/_Statusscreen.h | 79 ++++++ config/examples/AliExpress/CL-260/README.txt | 15 + config/examples/Anet/A6/_Statusscreen.h | 58 ++++ config/examples/Anet/A8/_Statusscreen.h | 58 ++++ config/examples/Anet/A8plus/_Statusscreen.h | 68 +++++ config/examples/Anet/E16/_Bootscreen.h | 73 +++++ config/examples/Anet/E16/_Statusscreen.h | 85 ++++++ .../examples/AnimationExample/_Bootscreen.h | 195 +++++++++++++ config/examples/AnyCubic/Mega Zero/README.md | 7 + .../examples/AnyCubic/Mega Zero/_Bootscreen.h | 58 ++++ .../AnyCubic/Mega Zero/_Statusscreen.h | 54 ++++ .../examples/Artillery/Genius/_Bootscreen.h | 95 +++++++ .../Artillery/Sidewinder X1/_Bootscreen.h | 95 +++++++ .../README.md | 1 + config/examples/BIQU/B1-BLTouch/README.md | 3 + config/examples/BQ/Hephestos_2/README.md | 29 ++ config/examples/BQ/Hephestos_2/_Bootscreen.h | 103 +++++++ config/examples/Cartesio/_Bootscreen.h | 103 +++++++ .../examples/Creality/CR-10 V2/_Bootscreen.h | 58 ++++ .../Creality/CR-10 V2/_Statusscreen.h | 70 +++++ config/examples/Creality/CR-10/_Bootscreen.h | 58 ++++ .../examples/Creality/CR-10/_Statusscreen.h | 68 +++++ config/examples/Creality/CR-10S/_Bootscreen.h | 58 ++++ .../examples/Creality/CR-10S/_Statusscreen.h | 76 ++++++ .../examples/Creality/CR-10_5S/_Bootscreen.h | 58 ++++ .../CR-10mini/CrealityV1/_Bootscreen.h | 58 ++++ .../CR-10mini/CrealityV1/_Statusscreen.h | 76 ++++++ .../Creality/CR-10mini/MEEB-3DP/_Bootscreen.h | 104 +++++++ .../CR-10mini/MEEB-3DP/_Statusscreen.h | 73 +++++ .../Creality/CR-20 Pro/_Statusscreen.h | 72 +++++ config/examples/Creality/Ender-2/README.md | 33 +++ .../examples/Creality/Ender-2/_Bootscreen.h | 99 +++++++ .../examples/Creality/Ender-2/_Statusscreen.h | 68 +++++ .../Creality/Ender-3 Pro V1.5/README.md | 11 + .../Creality/Ender-3 Pro/_Bootscreen.h | 99 +++++++ .../Creality/Ender-3 Pro/_Statusscreen.h | 73 +++++ .../Creality/Ender-3 V2/DWIN_SET/0_start.jpg | Bin 0 -> 14172 bytes .../Ender-3 V2/DWIN_SET/1_English.jpg | Bin 0 -> 32403 bytes .../Ender-3 V2/DWIN_SET/2_Chinese.jpg | Bin 0 -> 32048 bytes .../Creality/Ender-3 V2/DWIN_SET/9.ICO | Bin 0 -> 217989 bytes .../Creality/Ender-3 V2/DWIN_SET/T5UIC1.CFG | Bin 0 -> 16 bytes .../DWIN_SET/T5UIC1_V20_4页面_191022.BIN | Bin 0 -> 17937 bytes config/examples/Creality/Ender-3 V2/README.md | 17 ++ .../Creality/Ender-3 V2/_Bootscreen.h | 99 +++++++ .../Creality/Ender-3 V2/_Statusscreen.h | 64 +++++ .../BigTreeTech SKR Mini E3 1.0/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 64 +++++ .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 64 +++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 64 +++++ .../Creality/Ender-3/CrealityV1/_Bootscreen.h | 99 +++++++ .../Ender-3/CrealityV1/_Statusscreen.h | 64 +++++ .../FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h | 99 +++++++ .../BLTouch/_Statusscreen.h | 64 +++++ .../FYSETC Cheetah 1.2/base/_Bootscreen.h | 99 +++++++ .../FYSETC Cheetah 1.2/base/_Statusscreen.h | 64 +++++ .../FYSETC Cheetah/BLTouch/_Bootscreen.h | 99 +++++++ .../FYSETC Cheetah/BLTouch/_Statusscreen.h | 64 +++++ .../Ender-3/FYSETC Cheetah/base/_Bootscreen.h | 99 +++++++ .../FYSETC Cheetah/base/_Statusscreen.h | 64 +++++ .../Creality/Ender-3/MEEB-3DP/_Bootscreen.h | 104 +++++++ .../Creality/Ender-3/MEEB-3DP/_Statusscreen.h | 73 +++++ .../Creality/Ender-5 Pro/_Bootscreen.h | 96 +++++++ .../Creality/Ender-5 Pro/_Statusscreen.h | 70 +++++ .../README.md | 10 + .../_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../BigTreeTech SKR Mini E3 2.0/readme.md | 23 ++ .../Creality/Ender-5/Creality/_Bootscreen.h | 96 +++++++ .../Creality/Ender-5/Creality/_Statusscreen.h | 61 +++++ config/examples/Creality/Ender-5/README.md | 13 + config/examples/Einstart-S/readme.md | 152 +++++++++++ config/examples/Felix/DUAL/README.md | 60 ++++ config/examples/Felix/Single/README.md | 60 ++++ .../FlashForge/CreatorPro/CuraSettings.txt | 157 +++++++++++ config/examples/FlyingBear/P905H/README.md | 14 + config/examples/Formbot/Raptor/_Bootscreen.h | 96 +++++++ .../examples/Formbot/Raptor/_Statusscreen.h | 77 ++++++ .../examples/Formbot/T_Rex_2+/_Bootscreen.h | 104 +++++++ .../examples/Formbot/T_Rex_2+/_Statusscreen.h | 76 ++++++ config/examples/Formbot/T_Rex_3/_Bootscreen.h | 104 +++++++ .../examples/Formbot/T_Rex_3/_Statusscreen.h | 76 ++++++ .../Geeetech/Prusa i3 Pro B/bltouch/README.md | 54 ++++ .../Geeetech/Prusa i3 Pro B/noprobe/README.md | 54 ++++ .../Intamsys/FunmatHT_4988/_Bootscreen.h | 105 +++++++ .../Intamsys/FunmatHT_4988/_Statusscreen.h | 75 +++++ config/examples/JGAurora/A5/README.md | 39 +++ config/examples/MakerParts/_Bootscreen.h | 83 ++++++ config/examples/Malyan/M150/README.md | 55 ++++ config/examples/Malyan/M150/_Bootscreen.h | 73 +++++ config/examples/Malyan/M200/README.md | 33 +++ config/examples/Micromake/C1/basic/README.md | 15 + .../examples/Micromake/C1/enhanced/README.md | 15 + config/examples/Mks/Robin_Lite3/ReadMe.txt | 5 + config/examples/Mks/Robin_Pro/ReadMe.txt | 4 + config/examples/Mks/Sbase/README.txt | 38 +++ config/examples/Modix/Big60/_Bootscreen.h | 93 +++++++ config/examples/Modix/Big60/_Statusscreen.h | 62 +++++ .../Prusa/MK3S-BigTreeTech-BTT002/README.md | 70 +++++ config/examples/Sovol/SV-01/_Bootscreen.h | 58 ++++ config/examples/Sovol/SV-01/_Statusscreen.h | 52 ++++ .../examples/Tevo/Michelangelo/_Bootscreen.h | 85 ++++++ config/examples/Tevo/Nereus/_Bootscreen.h | 92 +++++++ .../examples/Tevo/Tarantula Pro/_Bootscreen.h | 82 ++++++ .../Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h | 87 ++++++ .../Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h | 87 ++++++ config/examples/Tronxy/X5SA/HOWTO-INSTALL.md | 256 ++++++++++++++++++ config/examples/Tronxy/X5SA/chitu-board.jpg | Bin 0 -> 228480 bytes config/examples/VORONDesign/_Bootscreen.h | 84 ++++++ config/examples/Velleman/K8200/README.md | 20 ++ .../Velleman/K8400/Dual-head/README.md | 15 + .../Velleman/K8400/Single-head/README.md | 15 + config/examples/WASP/PowerWASP/README.md | 72 +++++ .../Duplicator i3 2.1/Chippy_Bootscreen.h | 74 +++++ .../Wanhao/Duplicator i3 2.1/README.md | 21 ++ .../Wanhao/Duplicator i3 2.1/_Bootscreen.h | 72 +++++ .../Cocoon Create Model Maker/_Bootscreen.h | 56 ++++ .../Monoprice MP i3 Mini/_Bootscreen.h | 76 ++++++ .../Wanhao/Duplicator i3 Mini/_Bootscreen.h | 78 ++++++ .../examples/delta/Anycubic/Kossel/README.md | 50 ++++ .../Anycubic/Kossel/images/Version1Probe.jpg | Bin 0 -> 94933 bytes .../Anycubic/Kossel/images/Version2Probe.jpg | Bin 0 -> 51853 bytes .../delta/Anycubic/Predator/README.md | 37 +++ .../delta/Dreammaker/Overlord/_Bootscreen.h | 35 +++ .../Dreammaker/Overlord_Pro/_Bootscreen.h | 35 +++ .../RRD Full Graphic Smart Controller.md | 34 +++ config/examples/delta/Malyan M300/README.md | 29 ++ config/examples/delta/kossel_pro/README.md | 5 + config/examples/delta/kossel_xl/README.md | 21 ++ .../examples/gCreate/gMax1.5+/_Bootscreen.h | 103 +++++++ 137 files changed, 8574 insertions(+) create mode 100644 config/examples/3DFabXYZ/Migbot/Readme.md create mode 100644 config/examples/ADIMLab/Gantry v1/_Bootscreen.h create mode 100644 config/examples/ADIMLab/Gantry v2/_Bootscreen.h create mode 100644 config/examples/Alfawise/U20-bltouch/_Statusscreen.h create mode 100644 config/examples/Alfawise/U20/_Statusscreen.h create mode 100644 config/examples/AliExpress/CL-260/README.txt create mode 100644 config/examples/Anet/A6/_Statusscreen.h create mode 100644 config/examples/Anet/A8/_Statusscreen.h create mode 100644 config/examples/Anet/A8plus/_Statusscreen.h create mode 100644 config/examples/Anet/E16/_Bootscreen.h create mode 100644 config/examples/Anet/E16/_Statusscreen.h create mode 100644 config/examples/AnimationExample/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/README.md create mode 100644 config/examples/AnyCubic/Mega Zero/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/_Statusscreen.h create mode 100644 config/examples/Artillery/Genius/_Bootscreen.h create mode 100644 config/examples/Artillery/Sidewinder X1/_Bootscreen.h create mode 100644 config/examples/Artillery/Sidewinder X1_0.9_degree_BMG_E3D_V6/README.md create mode 100644 config/examples/BIQU/B1-BLTouch/README.md create mode 100644 config/examples/BQ/Hephestos_2/README.md create mode 100644 config/examples/BQ/Hephestos_2/_Bootscreen.h create mode 100644 config/examples/Cartesio/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 V2/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 V2/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10_5S/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10mini/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10mini/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10mini/MEEB-3DP/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10mini/MEEB-3DP/_Statusscreen.h create mode 100644 config/examples/Creality/CR-20 Pro/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-2/README.md create mode 100644 config/examples/Creality/Ender-2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro V1.5/README.md create mode 100644 config/examples/Creality/Ender-3 Pro/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/2_Chinese.jpg create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/9.ICO create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/T5UIC1.CFG create mode 100644 config/examples/Creality/Ender-3 V2/DWIN_SET/T5UIC1_V20_4页面_191022.BIN create mode 100644 config/examples/Creality/Ender-3 V2/README.md create mode 100644 config/examples/Creality/Ender-3 V2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 V2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md create mode 100644 config/examples/Creality/Ender-5/Creality/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/Creality/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/README.md create mode 100644 config/examples/Einstart-S/readme.md create mode 100644 config/examples/Felix/DUAL/README.md create mode 100644 config/examples/Felix/Single/README.md create mode 100644 config/examples/FlashForge/CreatorPro/CuraSettings.txt create mode 100644 config/examples/FlyingBear/P905H/README.md create mode 100644 config/examples/Formbot/Raptor/_Bootscreen.h create mode 100644 config/examples/Formbot/Raptor/_Statusscreen.h create mode 100644 config/examples/Formbot/T_Rex_2+/_Bootscreen.h create mode 100644 config/examples/Formbot/T_Rex_2+/_Statusscreen.h create mode 100644 config/examples/Formbot/T_Rex_3/_Bootscreen.h create mode 100644 config/examples/Formbot/T_Rex_3/_Statusscreen.h create mode 100644 config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md create mode 100644 config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md create mode 100644 config/examples/Intamsys/FunmatHT_4988/_Bootscreen.h create mode 100644 config/examples/Intamsys/FunmatHT_4988/_Statusscreen.h create mode 100644 config/examples/JGAurora/A5/README.md create mode 100644 config/examples/MakerParts/_Bootscreen.h create mode 100644 config/examples/Malyan/M150/README.md create mode 100644 config/examples/Malyan/M150/_Bootscreen.h create mode 100644 config/examples/Malyan/M200/README.md create mode 100644 config/examples/Micromake/C1/basic/README.md create mode 100644 config/examples/Micromake/C1/enhanced/README.md create mode 100644 config/examples/Mks/Robin_Lite3/ReadMe.txt create mode 100644 config/examples/Mks/Robin_Pro/ReadMe.txt create mode 100644 config/examples/Mks/Sbase/README.txt create mode 100644 config/examples/Modix/Big60/_Bootscreen.h create mode 100644 config/examples/Modix/Big60/_Statusscreen.h create mode 100644 config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md create mode 100644 config/examples/Sovol/SV-01/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/_Statusscreen.h create mode 100644 config/examples/Tevo/Michelangelo/_Bootscreen.h create mode 100644 config/examples/Tevo/Nereus/_Bootscreen.h create mode 100644 config/examples/Tevo/Tarantula Pro/_Bootscreen.h create mode 100644 config/examples/Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h create mode 100644 config/examples/Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h create mode 100644 config/examples/Tronxy/X5SA/HOWTO-INSTALL.md create mode 100644 config/examples/Tronxy/X5SA/chitu-board.jpg create mode 100644 config/examples/VORONDesign/_Bootscreen.h create mode 100644 config/examples/Velleman/K8200/README.md create mode 100644 config/examples/Velleman/K8400/Dual-head/README.md create mode 100644 config/examples/Velleman/K8400/Single-head/README.md create mode 100644 config/examples/WASP/PowerWASP/README.md create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/Chippy_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/README.md create mode 100644 config/examples/Wanhao/Duplicator i3 2.1/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini/_Bootscreen.h create mode 100644 config/examples/Wanhao/Duplicator i3 Mini/_Bootscreen.h create mode 100644 config/examples/delta/Anycubic/Kossel/README.md create mode 100644 config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg create mode 100644 config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg create mode 100644 config/examples/delta/Anycubic/Predator/README.md create mode 100644 config/examples/delta/Dreammaker/Overlord/_Bootscreen.h create mode 100644 config/examples/delta/Dreammaker/Overlord_Pro/_Bootscreen.h create mode 100644 config/examples/delta/MKS/SBASE/RRD Full Graphic Smart Controller.md create mode 100644 config/examples/delta/Malyan M300/README.md create mode 100644 config/examples/delta/kossel_pro/README.md create mode 100644 config/examples/delta/kossel_xl/README.md create mode 100644 config/examples/gCreate/gMax1.5+/_Bootscreen.h diff --git a/config/examples/3DFabXYZ/Migbot/Readme.md b/config/examples/3DFabXYZ/Migbot/Readme.md new file mode 100644 index 0000000000..708b3fe632 --- /dev/null +++ b/config/examples/3DFabXYZ/Migbot/Readme.md @@ -0,0 +1,4 @@ +Personalized config files for the "Electron" "Tevo 3D" i3 6th gen + +- https://www.3dprintersbay.com/electron3d-reprap-prusa-i3-kit +- https://reprap.org/wiki/Migbot_Prusa_i3 diff --git a/config/examples/ADIMLab/Gantry v1/_Bootscreen.h b/config/examples/ADIMLab/Gantry v1/_Bootscreen.h new file mode 100644 index 0000000000..b51bc14eb2 --- /dev/null +++ b/config/examples/ADIMLab/Gantry v1/_Bootscreen.h @@ -0,0 +1,88 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "ADIMLab/Gantry v1" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 88 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000, + B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000, + B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000, + B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000, + B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000, + B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000, + B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000 +}; diff --git a/config/examples/ADIMLab/Gantry v2/_Bootscreen.h b/config/examples/ADIMLab/Gantry v2/_Bootscreen.h new file mode 100644 index 0000000000..0ca5d40ddf --- /dev/null +++ b/config/examples/ADIMLab/Gantry v2/_Bootscreen.h @@ -0,0 +1,88 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "ADIMLab/Gantry v2" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 88 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B01111111,B11111111,B00000000,B10000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B00000100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111111,B11111110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11110000,B00001000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111111,B11100000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11100011,B10000000,B00111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010011,B11111111,B11100001,B10000000,B01111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B10001111,B11100011,B10000000,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011110,B00001111,B11111111,B10000001,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000110,B00011111,B11111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11110000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001111,B11111100,B00000011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11000000,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111110,B00011111,B11111111,B11111110,B00111111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01111100,B11111111,B11111111,B11111100,B00001111,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111001,B11111111,B11111111,B11110000,B00001111,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11100111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000, + B00000000,B00000001,B11101111,B11111110,B00001111,B11111111,B11111111,B11101111,B10000000,B00000000,B00000000, + B00000000,B00000001,B11001111,B11110000,B00000001,B11111111,B11111111,B11110011,B11111000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B11111111,B11111111,B11111000,B01100000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11100000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11101111,B11000000,B00000000,B00011111,B11111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01100111,B11100100,B00000000,B00001111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00110011,B11111100,B00000000,B00000111,B11111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011001,B11111100,B00000000,B00000011,B11100000,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00001100,B01111000,B00000000,B00000001,B11100000,B00111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B01110000,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111100,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000001,B11111111,B10000111,B10011111,B00000111,B10011110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11111111,B11000011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00000111,B10000001,B11000011,B11100011,B10011111,B00000111,B10001110,B00000000,B00000000,B00111000,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B00111100,B00111011,B00000000, + B00001111,B11000001,B11000000,B11100011,B10011111,B10001111,B10001110,B00000000,B11111110,B00111111,B10000000, + B00011101,B11000001,B11000000,B01110011,B10011111,B10011111,B10001110,B00000000,B11111111,B00111111,B10000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11011011,B10001110,B00000000,B01101111,B00111011,B11000000, + B00011100,B11100001,B11000000,B01110011,B10011101,B11111011,B10001110,B00000000,B00111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11111011,B10001110,B00000000,B11111111,B00111011,B11000000, + B00111111,B11110001,B11000000,B11100011,B10011100,B11110011,B10001110,B00000000,B11101111,B00111011,B11000000, + B01111000,B01110001,B11000001,B11100011,B10011100,B11110011,B10001110,B00000001,B11101111,B00111011,B11000000, + B01110000,B01111001,B11111111,B11000011,B10011100,B01100011,B10001111,B11111111,B11101111,B00111111,B10000000, + B01110000,B00111001,B11111111,B10000011,B10011100,B01100011,B10001111,B11111110,B11110111,B00111111,B10000000, + B11110000,B01111101,B11111111,B00000111,B10011110,B00000011,B11011111,B11111100,B01100111,B00100111,B00000000 +}; diff --git a/config/examples/Alfawise/U20-bltouch/_Statusscreen.h b/config/examples/Alfawise/U20-bltouch/_Statusscreen.h new file mode 100644 index 0000000000..85c0bd54a0 --- /dev/null +++ b/config/examples/Alfawise/U20-bltouch/_Statusscreen.h @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#pragma once + +#define CONFIG_EXAMPLES_DIR "Alfawise/U20-bltouch" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 38 + +static unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111100, + B10000000,B00000000,B00010000,B00000111,B11111100, + B10000000,B00000000,B00010000,B00000000,B11111100, + B10000000,B00000000,B00110000,B00000000,B01111100, + B10000000,B00000000,B00110000,B00000000,B00111100, + B10000000,B00000000,B01110000,B00000000,B00011100, + B11111111,B10000000,B01110000,B00000000,B00001100, + B11111111,B10000000,B11110000,B11100000,B00001100, + B11111111,B00000000,B11110000,B11111000,B00001100, + B11111111,B00000001,B11110000,B11111100,B00000100, + B11111110,B00000001,B11110000,B11010010,B00000100, + B11111110,B00000011,B11110000,B10101110,B00000100, + B11111100,B00000000,B11110000,B10101111,B00000100, + B11111100,B00000000,B00110000,B10000011,B00000100, + B11111000,B00000000,B00110000,B11111111,B00000100, + B11111000,B00000000,B00010000,B11111111,B00000100, + B11111111,B11100000,B00010000,B10111111,B00000100, + B11111111,B11110000,B00010000,B10101111,B00000100, + B11111111,B11110000,B00010000,B10101110,B00000100, + B11111111,B11110000,B00010000,B10000010,B00000100, + B10000011,B11110000,B00010000,B11111100,B00000100, + B10000001,B11110000,B00010000,B11111000,B00001100, + B10000001,B11100000,B00010000,B11100000,B00001100, + B10000000,B00000000,B00010000,B00000000,B00001100, + B10000000,B00000000,B00110000,B00000000,B00011100, + B11000000,B00000000,B00110000,B00000000,B00111100, + B11000000,B00000000,B01110000,B00000000,B01111100, + B11100000,B00000000,B11110000,B00000000,B11111100, + B11111000,B00000011,B11110000,B00000111,B11111100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_LOGO_X 0 +#define STATUS_HEATERS_X 50 +#define STATUS_BED_X 74 diff --git a/config/examples/Alfawise/U20/_Statusscreen.h b/config/examples/Alfawise/U20/_Statusscreen.h new file mode 100644 index 0000000000..4f062ad204 --- /dev/null +++ b/config/examples/Alfawise/U20/_Statusscreen.h @@ -0,0 +1,79 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#pragma once + +#define CONFIG_EXAMPLES_DIR "Alfawise/U20" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 38 + +static unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111100, + B10000000,B00000000,B00010000,B00000111,B11111100, + B10000000,B00000000,B00010000,B00000000,B11111100, + B10000000,B00000000,B00110000,B00000000,B01111100, + B10000000,B00000000,B00110000,B00000000,B00111100, + B10000000,B00000000,B01110000,B00000000,B00011100, + B11111111,B10000000,B01110000,B00000000,B00001100, + B11111111,B10000000,B11110000,B11100000,B00001100, + B11111111,B00000000,B11110000,B11111000,B00001100, + B11111111,B00000001,B11110000,B11111100,B00000100, + B11111110,B00000001,B11110000,B11010010,B00000100, + B11111110,B00000011,B11110000,B10101110,B00000100, + B11111100,B00000000,B11110000,B10101111,B00000100, + B11111100,B00000000,B00110000,B10000011,B00000100, + B11111000,B00000000,B00110000,B11111111,B00000100, + B11111000,B00000000,B00010000,B11111111,B00000100, + B11111111,B11100000,B00010000,B10111111,B00000100, + B11111111,B11110000,B00010000,B10101111,B00000100, + B11111111,B11110000,B00010000,B10101110,B00000100, + B11111111,B11110000,B00010000,B10000010,B00000100, + B10000011,B11110000,B00010000,B11111100,B00000100, + B10000001,B11110000,B00010000,B11111000,B00001100, + B10000001,B11100000,B00010000,B11100000,B00001100, + B10000000,B00000000,B00010000,B00000000,B00001100, + B10000000,B00000000,B00110000,B00000000,B00011100, + B11000000,B00000000,B00110000,B00000000,B00111100, + B11000000,B00000000,B01110000,B00000000,B01111100, + B11100000,B00000000,B11110000,B00000000,B11111100, + B11111000,B00000011,B11110000,B00000111,B11111100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_LOGO_X 0 +#define STATUS_HEATERS_X 50 +#define STATUS_BED_X 74 diff --git a/config/examples/AliExpress/CL-260/README.txt b/config/examples/AliExpress/CL-260/README.txt new file mode 100644 index 0000000000..b8d6856a65 --- /dev/null +++ b/config/examples/AliExpress/CL-260/README.txt @@ -0,0 +1,15 @@ +This is an example configuration for the CL-260 Ultimaker 2 clone. +Change Z_MAX_POS to 300 for the CL-260MAX. + +(The printer is available on AliExpress; be aware that this is not a beginner's +printer -- it needs tweaking and some parts replaced before being decent.) + +The printer comes with a quite old Marlin, the sources are available here: +http://www.thingiverse.com/thing:1635830/ and I recommend replacing them. + +The setting "works" for my printer and the extruder using my calibration value. +You might want to tweak some settings, e.g enable EEPROM, increase default Z speed, adjust homing speeds,... + +Have fun! +-- +tobi diff --git a/config/examples/Anet/A6/_Statusscreen.h b/config/examples/Anet/A6/_Statusscreen.h new file mode 100644 index 0000000000..6e08995a30 --- /dev/null +++ b/config/examples/Anet/A6/_Statusscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Anet/A6" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 10 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010000, + B10001010,B11000111,B00111110,B00000100,B01010000, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/A8/_Statusscreen.h b/config/examples/Anet/A8/_Statusscreen.h new file mode 100644 index 0000000000..a69a3809fb --- /dev/null +++ b/config/examples/Anet/A8/_Statusscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Anet/A8" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 10 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010001, + B10001010,B11000111,B00111110,B00000100,B01010001, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/A8plus/_Statusscreen.h b/config/examples/Anet/A8plus/_Statusscreen.h new file mode 100644 index 0000000000..2f1543d233 --- /dev/null +++ b/config/examples/Anet/A8plus/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Anet/A8plus" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110000,B00000000,B00001000,B00000011,B10001110, + B10001000,B00000000,B00001000,B00000100,B01010001, + B10001010,B11000111,B00111110,B00000100,B01010001, + B11111011,B00101000,B10001000,B00000111,B11001110, + B10001010,B00101111,B00001000,B00000100,B01010001, + B10001010,B00101000,B00001000,B00000100,B01010001, + B10001010,B00100111,B00000110,B00000100,B01001110, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00001110,B01000000,B00000000,B00000000, + B00000000,B00010001,B01000000,B00000000,B00000000, + B00000000,B00010001,B01010001,B00111000,B00000000, + B00000000,B00011110,B01010001,B01000000,B00000000, + B00000000,B00010000,B01010001,B00111000,B00000000, + B00000000,B00010000,B01010001,B00000100,B00000000, + B00000000,B00010000,B01001110,B00111000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_X 48 +#define STATUS_BED_X 74 diff --git a/config/examples/Anet/E16/_Bootscreen.h b/config/examples/Anet/E16/_Bootscreen.h new file mode 100644 index 0000000000..102fb8e777 --- /dev/null +++ b/config/examples/Anet/E16/_Bootscreen.h @@ -0,0 +1,73 @@ +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file '3dpc_tech_bootscreen.bmp' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B11111111,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11000000,B00000000,B11111111, + B11111110,B00000000,B11111111,B11111110,B00000111,B11111111,B11111111,B00000001,B11111111,B11111111,B11100000,B00000011,B11111111,B11111000,B00000000,B01111111, + B11111110,B00000001,B11111111,B11111111,B00000111,B11111111,B11111111,B11000001,B11111111,B11111111,B11111000,B00000111,B11111111,B11111100,B00000000,B01111111, + B11111100,B00000011,B11111111,B11111111,B11000111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100,B00011111,B11111111,B11111110,B00000000,B01111111, + B11111100,B00000111,B11111111,B11111111,B11100111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111110,B00011111,B11111111,B11111111,B00000000,B00111111, + B11111000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110,B00111111,B11111111,B11111111,B00000000,B00111111, + B11111000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B10000000,B00011111, + B11111000,B00001111,B11111111,B11111111,B11110111,B11111111,B00111111,B11111001,B11111111,B11111111,B11111111,B01111111,B11111011,B11111111,B10000000,B00011111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00111111,B11111101,B11111111,B11001111,B11111111,B01111111,B11110001,B11111111,B10000000,B00011111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00001111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00001111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00001111,B11111000,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00000000,B00000000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000111, + B11000000,B00000000,B00000001,B11111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B11000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B10000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B00000111,B11111111,B00011111,B11111101,B11111111,B11000111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B00000111,B11111111,B00011111,B11111101,B11111111,B11001111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00001111,B11111111,B10000111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000111,B11111111,B11000111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000000,B11111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111110,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00000000,B00000000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111110,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00001111,B11111000,B01111111,B11100111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111100,B01111111,B11110000,B00000000,B00000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11111111,B11111000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11111111,B11100000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000011, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11000000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00011111,B11111100,B01111111,B11110111,B11111111,B00011111,B11111101,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111111,B11111111,B11110111,B11111111,B00111111,B11111001,B11111111,B11000000,B00000000,B01111111,B11110001,B11111111,B10000000,B00000111, + B11100000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11000000,B00000000,B01111111,B11111111,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11111001,B11111111,B11000000,B00000000,B00111111,B11111111,B11111111,B10000000,B00001111, + B11110000,B00001111,B11111111,B11111111,B11100111,B11111111,B11111111,B11110001,B11111111,B11000000,B00000000,B00111111,B11111111,B11111111,B00000000,B00001111, + B11110000,B00000111,B11111111,B11111111,B11000111,B11111111,B11111111,B11100001,B11111111,B11000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111, + B11111000,B00000011,B11111111,B11111111,B10000111,B11111111,B11111111,B11000001,B11111111,B11000000,B00000000,B00001111,B11111111,B11111100,B00000000,B00011111, + B11111000,B00000001,B11111111,B11111111,B00000111,B11111111,B11111111,B10000001,B11111111,B11000000,B00000000,B00000111,B11111111,B11111000,B00000000,B00011111, + B11111000,B00000000,B01111111,B11111100,B00000111,B11111111,B11111100,B00000001,B11111111,B11000000,B00000000,B00000001,B11111111,B11100000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00000000,B01111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B11000000,B00000000,B11111111, + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B11000000,B00000000,B11111111, + B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B01111100,B01111100,B11111100,B00000001,B11111111, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B11001100,B11100000,B11101100,B00000001,B11111111, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B11000100,B11000000,B11000100,B00000011,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B01100000,B11111100,B11000000,B11000100,B00000011,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B01100100,B11000000,B11000000,B11000100,B00000111,B11111111, + B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100,B11111100,B01111100,B11000100,B00000111,B11111111, + B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B01111100,B00111100,B10000100,B00001111,B11111111, + B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111 +}; diff --git a/config/examples/Anet/E16/_Statusscreen.h b/config/examples/Anet/E16/_Statusscreen.h new file mode 100644 index 0000000000..5d0914aada --- /dev/null +++ b/config/examples/Anet/E16/_Statusscreen.h @@ -0,0 +1,85 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Anet/E16" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 24 + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file '3dpc_tech_statusscreen.bmp' + */ +const unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111, + B11111111,B00000000,B11111111, + B11111100,B00000000,B00111111, + B11110000,B00000000,B00001111, + B11100000,B00000000,B00000111, + B11100000,B00000000,B00000111, + B11000000,B00000000,B00000011, + B10011101,B11001110,B00110001, + B10010101,B10101111,B01101001, + B10010101,B10101101,B01101001, + B10000101,B10101101,B01100001, + B10001101,B10101111,B01100001, + B10010101,B10101100,B01100001, + B10010101,B10101100,B01101001, + B10010101,B10101100,B01101001, + B10011101,B11001100,B00110001, + B10000000,B00000000,B00000001, + B11000000,B00000001,B11111011, + B11100000,B00000000,B00000111, + B11100000,B00000000,B00000111, + B11110000,B00000000,B00001111, + B11111100,B00000000,B00111111, + B11111110,B01101100,B01111111, + B11111111,B11111111,B11111111 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/AnimationExample/_Bootscreen.h b/config/examples/AnimationExample/_Bootscreen.h new file mode 100644 index 0000000000..dec704a1cc --- /dev/null +++ b/config/examples/AnimationExample/_Bootscreen.h @@ -0,0 +1,195 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "AnimationExample" + +/** + * Animated boot screen example + */ + +#define CUSTOM_BOOTSCREEN_ANIMATED +#define CUSTOM_BOOTSCREEN_FRAME_TIME 100 // (ms) + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 120 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B11100111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00110001,B11110011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00110011,B10111001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00110011,B00011001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00110011,B00011001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00110011,B00011001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00111011,B00011001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10011111,B00011001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10001111,B00011001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 +}; + +#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED) + + const unsigned char custom_start_bmp1[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char custom_start_bmp2[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000111, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000011, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char custom_start_bmp3[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000000,B00000000,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000000,B00000000,B00000000,B00000011, + B10001100,B00110000,B11011100,B11100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11010000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011100,B01100000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11001111,B01110000,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000111,B01110000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char custom_start_bmp4[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10000000,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11000000,B00000000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11100000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01100000,B00000000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000000,B00000000,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char custom_start_bmp5[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00000000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00000000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00000000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00000000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00000000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00000000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00000000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00000000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10000000,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char custom_start_bmp6[] PROGMEM = { + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111, + B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111, + B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111, + B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111, + B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B00000111, + B10001100,B00110000,B11001111,B11000111,B11001100,B00110000,B00000011, + B10001100,B00110000,B11011100,B11101100,B11101100,B00110000,B00000001, + B10001100,B00110000,B11011000,B01101100,B01101100,B00110000,B00000001, + B10001100,B00110000,B11010000,B01101100,B00001100,B00110000,B00000001, + B10001100,B00110000,B11011000,B01101100,B00001100,B00110000,B00000001, + B10001100,B00110000,B11011100,B01101100,B00001110,B00111000,B00000001, + B10001100,B00110000,B11001111,B01111100,B00000111,B10011100,B00000001, + B10001100,B00110000,B11000111,B01111100,B00000011,B10001100,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110, + B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000 + }; + + const unsigned char * const custom_bootscreen_animation[] PROGMEM = { + custom_start_bmp1, custom_start_bmp2, custom_start_bmp3, custom_start_bmp4, custom_start_bmp5, custom_start_bmp6, custom_start_bmp + }; + +#endif diff --git a/config/examples/AnyCubic/Mega Zero/README.md b/config/examples/AnyCubic/Mega Zero/README.md new file mode 100644 index 0000000000..fc4737a58d --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/README.md @@ -0,0 +1,7 @@ +# Anycubic Mega Zero Support + +This branch is a reverse-engineered version based on the published firmware v0.0.4 from Anycubic. It is **not** the authoritative source, but has been carefully re-built by looking at their firmware and inferring the base version and configuration they used. + +## Bitmaps + +The bootscreen and custom status screens come from Anycubic's firmware. diff --git a/config/examples/AnyCubic/Mega Zero/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero/_Bootscreen.h new file mode 100644 index 0000000000..1b34b07372 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero" + +//#define CUSTOM_BOOTSCREEN_TIMEOUT 2000 +#define CUSTOM_BOOTSCREEN_INVERTED + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11101111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111100,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B10111111,B00000000,B00000000,B10000000,B10000000,B11101110,B00001110,B00011011,B00000111,B00001110,B00110011,B10000011,B00000011,B10110000, + B00001111,B11111111,B11011111,B10000000,B00000000,B11000000,B11000000,B11100111,B00011100,B01111011,B11000111,B00001110,B00110011,B11000011,B00000111,B10111000, + B00001111,B11111111,B11101111,B11000000,B00000001,B11000000,B11100000,B11100111,B00111100,B11111011,B11000111,B00001110,B00110011,B11100011,B00001111,B00111100, + B00011111,B11111111,B11110111,B11100000,B00000000,B11100000,B01111000,B11100011,B00111000,B11100000,B10000111,B00001110,B00110000,B11100011,B00001100,B00000000, + B00011111,B11111111,B11111011,B11110000,B00000010,B11100000,B00111100,B11100000,B01110001,B11000000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00111111,B11111111,B11110100,B00110000,B00000010,B01110000,B10011110,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B01111111,B11111111,B11101111,B11000000,B00000111,B01110000,B11001111,B11100000,B11100001,B11000000,B00000111,B00001110,B00110011,B11000011,B00011100,B00000000, + B00111111,B11111111,B11101111,B11110000,B00000110,B00111000,B11100111,B11100000,B11000001,B11000000,B00000111,B00001110,B00110000,B00100011,B00011100,B00000000, + B00011111,B11111111,B11011111,B11100000,B00001110,B11111000,B11100011,B11100000,B11000000,B11100000,B00000111,B00001110,B00110000,B11100011,B00011100,B00000000, + B00011111,B11111111,B10111111,B11000000,B00001100,B11111100,B11100000,B11100000,B11000000,B11110001,B11000111,B10011100,B00110011,B11100011,B00001111,B00011100, + B00001111,B11111111,B01111111,B10000000,B00011100,B00001100,B11100000,B01100000,B11000000,B01111011,B11000011,B10011100,B00110011,B11000011,B00000111,B10111100, + B00000111,B11111111,B01111111,B00000000,B00011000,B00001110,B11100000,B00100000,B11000000,B00111011,B10000001,B10010000,B00110011,B10000011,B00000011,B10110000, + B00000111,B11111110,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111101,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11110111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11110111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01101110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/AnyCubic/Mega Zero/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero/_Statusscreen.h new file mode 100644 index 0000000000..901333aa64 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/_Statusscreen.h @@ -0,0 +1,54 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x19 C/C++ data + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "AnyCubic/Mega Zero" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 64 +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 10 +#define STATUS_HEATERS_X 80 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11101110,B00000000,B00000000,B00000000,B00011111,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00100010,B00000000,B00000000,B00000000, + B01101100,B00000000,B00000000,B00000000,B00000010,B00000000,B00000000,B00000000, + B01101100,B00111100,B00111110,B00111000,B00000100,B00011110,B01110111,B00001100, + B01101100,B01000010,B01000100,B01000100,B00000100,B00100001,B00011001,B00010010, + B01010100,B01000010,B01000100,B00001100,B00001000,B00100001,B00010000,B00100001, + B01010100,B01111110,B00111000,B00110100,B00001000,B00111111,B00010000,B00100001, + B01010100,B01000000,B01000000,B01000100,B00010000,B00100000,B00010000,B00100001, + B01010100,B01000010,B00111100,B01001100,B00010001,B00100001,B00010000,B00010010, + B11010110,B00111100,B01000010,B00110110,B00111111,B00011110,B01111100,B00001100, + B00000000,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Genius/_Bootscreen.h b/config/examples/Artillery/Genius/_Bootscreen.h new file mode 100644 index 0000000000..e5ea3a21a3 --- /dev/null +++ b/config/examples/Artillery/Genius/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Artillery/Genius" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Sidewinder X1/_Bootscreen.h b/config/examples/Artillery/Sidewinder X1/_Bootscreen.h new file mode 100644 index 0000000000..d835970f59 --- /dev/null +++ b/config/examples/Artillery/Sidewinder X1/_Bootscreen.h @@ -0,0 +1,95 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Artillery/Sidewinder X1" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'EVNOVO-Artillery-Logo.jpg' + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 54 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00001111,B11100000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00011111,B00000011,B11100000,B00000000,B01111100, + B11111000,B00000000,B00111111,B00000011,B11110000,B00000000,B01111100, + B11111000,B00000000,B11111111,B00000011,B11111100,B00000000,B01111100, + B11111000,B00000001,B11111111,B00000011,B11111110,B00000000,B01111100, + B11111000,B00000011,B11111110,B00000001,B11111111,B00000000,B01111100, + B11111000,B00000011,B11111100,B00000000,B11111111,B00000000,B01111100, + B11111000,B00000011,B11110000,B00000000,B00111111,B00000000,B01111100, + B11111000,B00000011,B11000000,B00000000,B00001111,B00000000,B01111100, + B11111000,B00000011,B00000000,B00000000,B00000011,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111100, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B01111111,B11100000,B00000000,B00000000,B00000000,B00011111,B11111000, + B00011111,B11111000,B00000000,B00000000,B00000000,B01111111,B11100000, + B00000111,B11111100,B00000000,B00000000,B00000000,B11111111,B10000000, + B00000011,B11111111,B00000000,B00000000,B00000011,B11111111,B00000000, + B00000000,B11111111,B11000000,B00000000,B00001111,B11111100,B00000000, + B00000000,B00111111,B11100000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00011111,B11100000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000111,B11100000,B00000000,B00011111,B10000000,B00000000, + B00000000,B00000001,B11100000,B00000000,B00011110,B00000000,B00000000, + B00000000,B00000000,B01100000,B00000000,B00011000,B00000000,B00000000 +}; diff --git a/config/examples/Artillery/Sidewinder X1_0.9_degree_BMG_E3D_V6/README.md b/config/examples/Artillery/Sidewinder X1_0.9_degree_BMG_E3D_V6/README.md new file mode 100644 index 0000000000..ebca175328 --- /dev/null +++ b/config/examples/Artillery/Sidewinder X1_0.9_degree_BMG_E3D_V6/README.md @@ -0,0 +1 @@ +This configuration was built on Marlin bugfix 2.0.x on May 25th 2020 by Robert Vandervoort \ No newline at end of file diff --git a/config/examples/BIQU/B1-BLTouch/README.md b/config/examples/BIQU/B1-BLTouch/README.md new file mode 100644 index 0000000000..faa8a9e00b --- /dev/null +++ b/config/examples/BIQU/B1-BLTouch/README.md @@ -0,0 +1,3 @@ +# BIQU B1 BLTouch Firmware + +This firmware retains the use of homing with a Z limit switch. If you want to home with a BLTouch, enable (uncomment) `USE_PROBE_FOR_Z_HOMING` and `Z_SAFE_HOMING` and remove the adjustable Z limit switch bracket. diff --git a/config/examples/BQ/Hephestos_2/README.md b/config/examples/BQ/Hephestos_2/README.md new file mode 100644 index 0000000000..ab28487e2d --- /dev/null +++ b/config/examples/BQ/Hephestos_2/README.md @@ -0,0 +1,29 @@ +# Example Configuration for BQ [Hephestos 2](http://www.bq.com/uk/hephestos-2) +Based on the original configuration file shipped with the heavily modified Marlin fork by BQ. +The forked firmware and configuration files can be found at the [BQ Github repository](https://github.com/bq/Marlin). + +NOTE: The look and feel of the LCD menu will change dramatically when using the original Marlin firmware. + +## Changelog + * 2018/05/30 - Configuration updated to the latest Marlin version (43a55a9af). + ABL Bilinear 5x5 is active by default. + + * 2017/07/06 - Configuration updated to the latest Marlin version and added support for the + official BQ heated bed upgrade kit. + + * 2016/12/13 - Configuration updated to the latest Marlin version. + + * 2016/07/13 - Configuration updated to the latest Marlin version. + + * 2016/06/21 - Disabled heated bed related options, activated software endstops and SD printing now + disables the heater when finishes printing. + + * 2016/03/21 - Activated 4-point auto leveling by default and updated miscellaneous z-probe values. + + * 2016/03/01 - The first release of Marlin's configuration file for the + BQ Hephestos 2 3D printer. + + +## Support +This configuration should work easily with the stock Hephestos 2, nevertheless if you encounter any +issues you may contact me on [Github](https://github.com/jbrazio), [Twitter](https://twitter.com/jbrazio) or by mail. diff --git a/config/examples/BQ/Hephestos_2/_Bootscreen.h b/config/examples/BQ/Hephestos_2/_Bootscreen.h new file mode 100644 index 0000000000..b8e792130e --- /dev/null +++ b/config/examples/BQ/Hephestos_2/_Bootscreen.h @@ -0,0 +1,103 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "BQ/Hephestos_2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 64 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111000,B00000111,B11111000,B00000111,B11000000,B00000000, + B00000000,B00000001,B11111100,B00000011,B11110000,B00001111,B11100000,B00000000, + B00000000,B00000011,B11111110,B00000000,B11000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111110,B00000000,B00000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11111100,B00000000,B00000000,B00001111,B11100000,B00000000, + B00000000,B00000001,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000, + B00000000,B00000000,B01110000,B00000000,B00000000,B00000011,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B10000000,B00000000,B00000000,B01110000,B00000000,B00000000,B00000000, + B00011111,B11000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000, + B00111111,B11100000,B00000000,B00000000,B01111011,B11000000,B00001111,B00000000, + B00111111,B11000000,B00000000,B00000000,B01111111,B11110000,B00111111,B11000000, + B00011111,B10000000,B00000000,B00000000,B01111111,B11111000,B01111111,B11100000, + B00001111,B00000000,B00000000,B00000000,B01111110,B11111100,B11111001,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B11100000,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00011101,B11100000,B01110000, + B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B11100000,B11110000, + B00000000,B00000000,B00000000,B00000000,B01111100,B01111100,B11111001,B11110000, + B00000000,B00000000,B00000000,B00000000,B00011111,B11111000,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00001111,B11110000,B01111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00011111,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Cartesio/_Bootscreen.h b/config/examples/Cartesio/_Bootscreen.h new file mode 100644 index 0000000000..c745a79370 --- /dev/null +++ b/config/examples/Cartesio/_Bootscreen.h @@ -0,0 +1,103 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Cartesio" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 64 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111111,B11110000,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11111100,B00000000,B00000000, + B00000000,B00000000,B11111111,B11111111,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00001111,B00000111,B10000111,B11111111,B11111111,B11100000,B00000000, + B00000000,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B00000000, + B00000001,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B10000000, + B00000011,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B10000000, + B00000111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11000000, + B00000111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11100000, + B00001111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11100000, + B00001111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11110000, + B00011111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11110000, + B00011111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11110000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11110001,B11111000, + B00111111,B00011111,B10001111,B11000111,B11111111,B11111111,B11100001,B11111000, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B00011111,B10001111,B11000111,B11000000,B00000000,B00000001,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B01111111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11111100, + B00111111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00111111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11111000, + B00011111,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B11110000, + B00011111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11110000, + B00011111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11100000, + B00001111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11100000, + B00001111,B00000000,B00000000,B00000111,B11000111,B11100011,B11110001,B11000000, + B00000111,B00001111,B11111111,B11111111,B11000111,B11100011,B11110001,B11000000, + B00000011,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B10000000, + B00000011,B00011111,B11111111,B11111111,B11000111,B11100011,B11110001,B00000000, + B00000001,B00011111,B11111111,B11111111,B11000111,B11100011,B11110000,B00000000, + B00000000,B00011111,B11111111,B11111111,B11000111,B11100011,B11110000,B00000000, + B00000000,B00001111,B11111111,B11111111,B11000011,B11000001,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111111,B11111100,B00000000,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111111,B11110000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 V2/_Bootscreen.h b/config/examples/Creality/CR-10 V2/_Bootscreen.h new file mode 100644 index 0000000000..5f9692aa35 --- /dev/null +++ b/config/examples/Creality/CR-10 V2/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 V2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10 V2/_Statusscreen.h b/config/examples/Creality/CR-10 V2/_Statusscreen.h new file mode 100644 index 0000000000..f6a875eb9b --- /dev/null +++ b/config/examples/Creality/CR-10 V2/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10 V2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B11111011,B11110000,B00000000,B00000000, + B00000001,B11011001,B10111000,B11100011,B10000000, + B00000011,B10001001,B10111001,B11100111,B11000000, + B00000011,B10000001,B11110000,B11000110,B11000000, + B00000011,B11000001,B10111000,B11000110,B11000000, + B00000001,B11111011,B10111000,B11100111,B11000000, + B00000000,B11111011,B11011111,B11110011,B10000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11001110,B00000000,B00000000, + B00000000,B00000001,B11001000,B11110000,B00000000, + B00000000,B00000001,B11011001,B11110000,B00000000, + B00000000,B00000000,B11110000,B01110000,B00000000, + B00000000,B00000000,B11110000,B01100000,B00000000, + B00000000,B00000000,B01100000,B11111000,B00000000, + B00000000,B00000000,B01100001,B11111000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10/_Bootscreen.h b/config/examples/Creality/CR-10/_Bootscreen.h new file mode 100644 index 0000000000..066dc59cc3 --- /dev/null +++ b/config/examples/Creality/CR-10/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10/_Statusscreen.h b/config/examples/Creality/CR-10/_Statusscreen.h new file mode 100644 index 0000000000..0c58cf4bb2 --- /dev/null +++ b/config/examples/Creality/CR-10/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 22 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111110,B00001111,B11110000, + B11000001,B10000110,B00011000, + B11000001,B10000110,B00001100, + B00000001,B10000110,B00000100, + B00000011,B00000110,B00000100, + B00011111,B00000110,B00000100, + B00000011,B00000110,B00000100, + B00000001,B10000110,B00000100, + B11000001,B10000110,B00001100, + B11000001,B10000110,B00011000, + B00111110,B00001111,B11110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10S/_Bootscreen.h b/config/examples/Creality/CR-10S/_Bootscreen.h new file mode 100644 index 0000000000..ea4f5eb302 --- /dev/null +++ b/config/examples/Creality/CR-10S/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10S" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/_Statusscreen.h b/config/examples/Creality/CR-10S/_Statusscreen.h new file mode 100644 index 0000000000..a64b2cce8b --- /dev/null +++ b/config/examples/Creality/CR-10S/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10S" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000, + B10000000,B10001000,B00000010,B01000101,B00000000, + B10000000,B11110000,B00000010,B01000100,B10000000, + B10000000,B10100011,B11110010,B01000100,B01100000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000, + B01000100,B10001000,B00000010,B01000101,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00011000,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B00000100,B10001001,B00010000,B00000000, + B00000000,B01000100,B10001001,B00010000,B00000000, + B00000000,B00111000,B01110000,B11100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10_5S/_Bootscreen.h b/config/examples/Creality/CR-10_5S/_Bootscreen.h new file mode 100644 index 0000000000..b3ca021f0d --- /dev/null +++ b/config/examples/Creality/CR-10_5S/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10_5S" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10mini/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10mini/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..a1cd211b55 --- /dev/null +++ b/config/examples/Creality/CR-10mini/CrealityV1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10mini/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10mini/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10mini/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..d0669d2427 --- /dev/null +++ b/config/examples/Creality/CR-10mini/CrealityV1/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10mini/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 36 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000111,B11001111,B10000000,B00110001,B11100000, + B00001111,B11001111,B11000000,B01110011,B11110000, + B00001100,B00001100,B01000000,B01110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001100,B00001111,B11001111,B00110011,B00110000, + B00001100,B00001101,B10001111,B00110011,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000, + B00001111,B11001100,B11000000,B00110011,B11110000, + B00000111,B11001100,B11000000,B00110001,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B10000011,B00110000,B00000011,B00000000, + B00000001,B10000011,B00110010,B00000011,B00000000, + B00000001,B11000111,B00000010,B11100000,B00000000, + B00000001,B11000111,B00110011,B11110011,B00000000, + B00000001,B11101111,B00110011,B00110011,B00000000, + B00000001,B10111011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10010011,B00110011,B00110011,B00000000, + B00000001,B10000011,B00110011,B00110011,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-10mini/MEEB-3DP/_Bootscreen.h b/config/examples/Creality/CR-10mini/MEEB-3DP/_Bootscreen.h new file mode 100644 index 0000000000..4d6520f671 --- /dev/null +++ b/config/examples/Creality/CR-10mini/MEEB-3DP/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10mini/MEEB-3DP" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111110,B00001111,B11111111,B10000000,B01111111,B11111111,B11110000,B00111111,B11111111,B11111001,B11111111,B11111111,B11100000, + B00011111,B11111111,B00001111,B11111111,B10000000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B00011111,B11111111,B00001111,B11111111,B10000001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B00111111,B11111111,B00001111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B11000011,B11111111,B11111111,B11110011,B11111111,B11111111,B11111001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B11111111,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11110000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111111,B00011111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B11111111,B10001111,B11111110,B00011111,B11110000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B11111111,B00000111,B11111110,B00011111,B11110000,B00111111,B11111111,B11100000,B00011111,B11111111,B11110001,B11111111,B11111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B11111111,B11100000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111011,B11111111,B11111111,B10000000,B00011111,B01111111,B11111111,B11110000, + B00000000,B00000000,B00000111,B11111111,B11111111,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B01111111,B11111111,B11111000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000011,B11111111,B11111111,B11100000,B00000000,B01111111,B11111111,B11111000, + B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111111,B11111111,B11111111,B11110000,B00011111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111111,B11111111,B11110000,B00000000,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111000,B00011111,B11110000,B00000000,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111111,B00000001,B11111111,B11111111,B11110111,B11111000,B00011111,B11111111,B11111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00011111,B00111111,B11111110,B00000001,B11110111,B11111000,B00011111,B11110000,B00111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111100,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111000,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111110,B11111111,B11111111,B11111111,B11101111,B11111000,B00111111,B11111111,B11111101,B11111111,B00011111,B11110000, + B00000000,B00000000,B00111110,B11111111,B11111100,B00000011,B11101111,B11110000,B00111111,B11100000,B01111101,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11100000, + B00000000,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B11110000,B00111111,B11111111,B11111111,B11111111,B11111111,B11000000, + B00000000,B00000000,B01111100,B00000011,B11111110,B00000011,B11011111,B11110000,B01111111,B11000000,B01111011,B11111111,B11111111,B10000000, + B00000000,B00000000,B00010000,B00000011,B11111110,B00000000,B00011111,B11110000,B01111111,B11000000,B00000011,B11111111,B11111111,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111,B11111111,B11111111,B11000000,B00000011,B11111111,B11111100,B00000000, + B00011111,B11111111,B10111111,B11111111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B11111011,B11111100,B00000000,B00000000, + B00000000,B00001111,B10111111,B11111111,B11111100,B00000111,B11111111,B11111111,B11111111,B00000000,B11111011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B01111111,B11111111,B01111111,B11111111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111111,B11110111,B11111100,B00000000,B00000000, + B00000000,B00111111,B01111111,B11111111,B10000000,B00001111,B10111111,B11111111,B11000000,B00000001,B11110111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10mini/MEEB-3DP/_Statusscreen.h b/config/examples/Creality/CR-10mini/MEEB-3DP/_Statusscreen.h new file mode 100644 index 0000000000..0ef95dc55b --- /dev/null +++ b/config/examples/Creality/CR-10mini/MEEB-3DP/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/CR-10mini/MEEB-3DP" + +#define STATUS_LOGO_X 0 +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11000000,B00110011,B11111011,B11111101,B11111100, + B11100000,B01110111,B11111011,B11111101,B11111110, + B11100000,B01110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11010000,B10110110,B00000011,B00000001,B10000110, + B11011001,B10110111,B11111011,B11111001,B11111110, + B11011001,B10110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11000110,B00110111,B11111011,B11111101,B11111110, + B11000000,B00110011,B11111001,B11111101,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11100001,B11111110,B00001111,B11110000, + B00011111,B11110001,B11111111,B00001111,B11111000, + B00011000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001111,B11111000, + B00000000,B00110001,B10000001,B10001111,B11110000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00011000,B00110001,B10000001,B10001100,B00000000, + B00011111,B11110001,B11111111,B00001100,B00000000, + B00001111,B11100001,B11111110,B00001100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/CR-20 Pro/_Statusscreen.h b/config/examples/Creality/CR-20 Pro/_Statusscreen.h new file mode 100644 index 0000000000..54abd717f0 --- /dev/null +++ b/config/examples/Creality/CR-20 Pro/_Statusscreen.h @@ -0,0 +1,72 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00001111,B01111100,B00111000,B01110000, + B00010001,B00100010,B01000100,B10001000, + B00100000,B00100010,B01000100,B10001000, + B00100000,B00111100,B00000100,B10001000, + B00100000,B00101000,B00001000,B10001000, + B00100000,B00100100,B00010000,B10001000, + B00100000,B00100100,B00100000,B10001000, + B00010001,B00100010,B01000000,B10001000, + B00001110,B01110011,B01111100,B01110000, + B00000000,B00000000,B00000000,B00000000, + B00000111,B11000000,B00000000,B00000000, + B00000010,B00100000,B00000000,B00000000, + B00000010,B00100000,B00000000,B00000000, + B00000010,B00100110,B11000111,B00000000, + B00000011,B11000011,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000010,B00000010,B00001000,B10000000, + B00000111,B00000111,B10000111,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-2/README.md b/config/examples/Creality/Ender-2/README.md new file mode 100644 index 0000000000..b45eb94690 --- /dev/null +++ b/config/examples/Creality/Ender-2/README.md @@ -0,0 +1,33 @@ +# Creality Ender Support + +This branch is a reverse-engineered version based on the unpublished firmware from Creality. It is **not** the authoritative source, but has been carefully re-built by looking at their firmware and inferring the base version and configuration they used. The basis is the firmware version from "Jul 31 2017 10:16:30". It is based on Marlin 1.0.1, because + +* 1.0.0 had very different serial output in `setup()` and overall code structure. +* 1.0.2 changed the `VERSION_STRING` to include a leading space, and `lcd_init` uses `SET_INPUT` instead of `pinMode`. + +Configurations were found by seeing what code was compiled into the firmware, and constants used there. + +For U8Glib, at least version 1.14 and at most 1.17 is used, because + +* 1.12 didn't have the extra speed argument to u8g_InitCom. +* 1.13 didn't have the soft reset instruction for UC1701 initialization. +* 1.18 has a new directory structure. + +## Bitmaps + +The bootscreen and custom status screens come from Creality's firmware. + +## Creality Ender-2 firmware status + +The firmware source code has been published on 2018/07/10. +It is based on Marlin 1.1. The source code and .hex binaries for all printers (including Ender-2) can be obtained from: +https://www.creality3d.cn/download/firmware_c0001 + +And repositories for CR-10S and Ender-3 can be found here: +https://github.com/Creality3DPrinting + +The configuration files have been verified to match the original configuration, but further investigation is needed to ensure there aren't any extra changes in the source code. + +## Ender-2 specific changelog: + +* 2018/10/08 - Updated BED_MAXTEMP to 75 to match the original Creality Ender-2 Firmware (which is now open source) diff --git a/config/examples/Creality/Ender-2/_Bootscreen.h b/config/examples/Creality/Ender-2/_Bootscreen.h new file mode 100644 index 0000000000..eca4057298 --- /dev/null +++ b/config/examples/Creality/Ender-2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-2/_Statusscreen.h b/config/examples/Creality/Ender-2/_Statusscreen.h new file mode 100644 index 0000000000..cd62bdf626 --- /dev/null +++ b/config/examples/Creality/Ender-2/_Statusscreen.h @@ -0,0 +1,68 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 5 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000110,B00000000,B00000000, + B11111110,B00000000,B00000010,B00000000,B00000000, + B01000010,B00000000,B00000010,B00000000,B00000000, + B01001000,B00000000,B00000010,B00000000,B00000000, + B01001000,B11011100,B00111110,B00111100,B11101110, + B01111000,B01100010,B01000010,B01000010,B00110010, + B01001000,B01000010,B01000010,B01000010,B00100000, + B01001000,B01000010,B01000010,B01111110,B00100000, + B01000000,B01000010,B01000010,B01000000,B00100000, + B01000010,B01000010,B01000110,B01000010,B00100000, + B11111110,B11100111,B00111011,B00111100,B11111000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 Pro V1.5/README.md b/config/examples/Creality/Ender-3 Pro V1.5/README.md new file mode 100644 index 0000000000..ec0e54e640 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro V1.5/README.md @@ -0,0 +1,11 @@ +# Ender 3 Pro "V1.5" + +This is a surprise upgrade to the Ender 3 Pro that some customers began to receive around mid-July of 2020. No documentation or support page exists for this variant. It appears to be an Ender 3 Pro with the 32-bit Ender 3 V2 board and the stock Ender 3 Pro display. To see which version you have, examine the control board. The newer board is Creality v4.2.2. + +This configuration is very similar to the Ender 3 V2 config except that the CR-10 stock display is enabled. + +## Flashing Firmware + +The bootloader which handles flashing new firmware on this board remembers the last filename you used. + +Therefore, to flash the compiled firmware binary onto the board you must give the "`firmware.bin`" file on the SD card a unique name, different from the name of the previous firmware file, or you will be greeted with a blank screen on the next boot. diff --git a/config/examples/Creality/Ender-3 Pro/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/_Bootscreen.h new file mode 100644 index 0000000000..c5472c6bb2 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Pro" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 Pro/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/_Statusscreen.h new file mode 100644 index 0000000000..706070e1f7 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 Pro" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg b/config/examples/Creality/Ender-3 V2/DWIN_SET/0_start.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc5e50be0aa4d5c5992440fc3141f28e824cc427 GIT binary patch literal 14172 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 P(mj=tiDqdU!p!_X|2Xq; literal 0 HcmV?d00001 diff --git a/config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg b/config/examples/Creality/Ender-3 V2/DWIN_SET/1_English.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21db88dcbd1b6c6c860fdfd17b7f14c6b3acce75 GIT binary patch literal 32403 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 z

R?W>o`?Pao^j2n>r|^^_%v6`MrnFpByMy~BISxdg*GxMtI=-OtOR&C^@f8bq#E zHNE|FyQrKl*VoV0Pob{Kq$I<@O5RjAy-b|7n6DAY-RIA9HL!2thgbKcf>eU>bMF>r z=L%NmIF{=tsN{~(RvPto6@kEX@o&bn8nJ|KQ`&0KbfDwdQ`Zr@X=l)Tfok^9S zPmAZIimq4wWFY2YXWAdG2ej*D4QC@`mSA`iT^#M|!R*16g07E&tQLADpz=2B_)Um0 zod1W%j&1pg`MCcHOA~Tjyk=h~gD%SgOQH~hVm3c!eY340M0!^a=8v~;VYe73}vq=9YKImlWSyjH4B!!R6zQSmA0FM|5a zMd650=#_Cn^FNtO@FM4sz((YmMB;>aLHjx5KZsA5;I}o0<0;{v4KJ5l|1#+%l;g4> zlkGgH+oDeur)Q&bWz7Z6VBG2q8qVn!1p}jye`d%4+0SeufIR3(M&?2upFjkQsBIH~ zR`iTl@?(fc;yH@pI*t8ny2O3XPR$DCzW=VVr#Q_OTGT08)tP3kx`9TqvAs*r*Uvtr zsKHrY)i6ZCIRCDfv1_-okE;eVDp$ZIrDDXNRQ%tM`+NRd`;|cN%Jacztb_e-m7jtU z{vzx7P~L3<<&+hXxln$#bg2muqN1t z=(tREud6KfQZtS&vOMEKn=M`7S|pq7g9Dlx;6Q_GS`^=Fx!HUN_MNpj`7obz~+D-7!6U25^( z@TYgNjP-Y)isgHtX1udv@I}B#H>*;0n5%EIchJvryKk%lT&bdCLaDON5+c{P2Gs&~ z*J;;izI6|?7d^CmJF4X}B&2WHrfI}%_%w?thxH=&ha&BgEAa)GUB;Eek&x*YQ{>p&Q{Rm4=tBjmn~54G5JqVhp350Nd5 z;5djAoJRixxW*OCya2|`bFC(*YvRs{(#+IY(F7r^MK!PKa;&HOG}hj%w?eGj-QOU? z$e@Q1>VXAAU5CP_vZA2oQ;X>{^G&t+2`eDm4N?kmQ?EQRpes+0%hX( z*Y(T;IgzRP<#&;Fe~c3@yCJ+zX8`pJ40QJ&qWB+(HzuA#Ib509&sVoqU#c?>%>l|S zr7^ZpK%-S}^my%iPdBbBFh$u=)=C_PMp9ljLpw%3x*)X1P@rX7a88o-`}~Z2 zf^ueRdU^~s6KUfO8V+=3eo|>PfKzhwd4!pm2KOe2fjyx4#c(bN6u%<6CyQ^z8rKQB zmHTABvB*%>Q`;tlp`Ws8yRGcS0yH^C#VV`0roX+UkFmus*vZPQv$d4SjxX=Qu`#x> z##XIzuC{yNPsb=s#V-fM{X>N}o{KnxM)c$@1n7!Ei?y8RN1kfsk173mO%5j{9i78@ zXY+BSqpwRDo^MF`h!NGYCk)W6BllTTgfh7|^HudnH|$F{fmBZX zC8{>)a4>6FT|>n(_PaT@$yEcHSxpVgCnqaB!#-J3SFBx1Ks~1dtY{V46FeBUVsNaB zk98CX7Yzg;4r_yHW^Zj|ZC!h%k?C;t?wbdWU6PPExditaX73dv2Pyi^droP*RDq4p*pa8GOhei&Id!!He9!O)}qCvDzax##Xd){b>zF9!G+OY*#bGGP{j67C#@-3 zJ1+ul)jtnY^9(vTj5y>5Hd*FhcyeljVq6udi53YQFn<4P4JBj{itNA{i!+oPiwhA% zhg|IM@sxz6fU69SOzrI+jvWHED*O<7+PvIUILEH!G9pRJgF(hs!(LluV4;_2|c@kV@~8fR1ez^mpqu6!4CpVW5zwjZSJtTV7HwB`hRV zUr$a;Mp7&~AvZQKGAT(;SY1k6Urk3PIzA^%L`+0CJ})jPCo)V~P*he^OG_y&I6f*k zKQ1Q*8XXdCWNct;f#2N7?1aCdcca%u_C|A+aA_!8^R2IbOvB zXd4DVG=OkAPT(3PSNuNwWLhSkAP{d3<_RQz!SJq#Qkv$V;d)#MCm)>&9&zCRIq^RI z8}FKl{>%IN>)%OEy;QWim$-m`y0J)IVbn@WzHdudpi^S1rduqVFT)&JU`!sWzskBY zUfH;%OpwAM3?!}AIt;v2ypEub`KYV|X6zKrfc_fpm~Z%snRw3h3UUVJwCsZjWPa}G zX@e!9;JWGcz~rAJdxw>Q0CyGEyV74IHE3d|*IZr)AgTUL! zc--=$Rl6^|KHqsd-G3*tojKdJgUExikV;Xkz{5j?tb@~s*5^zy*~;|CX_*4EUNWk9RrSmYwMC2I&cyO(EW~%Pi_&ErdAUZ ziUi$>2RgvY#$13_CjVTfC;lv(?I2WHg5^X=FrP6@?Sc}TUd05XME7N&bbal68 zUZ@@;d{1)PJ-x<8%jnCPzG%M9;rFUV5QIwG1UT0PKMf79Zc(djQVBH{n|$K$2c19? z8Gio{(d)W^RF03Y$L%tI=ox$J8{7Uf0NMz5LUjd}4sMMa!}OiLoRjBamI#Fqd5{$? z1<4&e1zuLTCBR%&vo;tp<0w^SwlJ}_fQlii+c`9()64a^%R;ulILOUzxqHivp@Wy$ z*wN6`*2TT6zQ3-uudAVto|ca2;>zHjhKY!^gNDfb_NMaS-tLe5oPoZanLC4gM}Kwk z0VzRscmQiI8h;II6+J@}6L@T^Ex10KkDQmastcle#9~2CE)q*S8&_OqHAHAN61>^!?ZZh6V_DE4tH@t2>gBO~wT)pFMK~z#@4=3KFkC;_ zpxMRgj?p1!+Yt%X$}!0ZXR1czLi|i*X#ve%5_}j33A=T}Ckj=w`w`0*U8Rfgtx&Dj zG1!RBM6gLovUXSXZ<=zMh4_J(?s|`F@bk-$VRQqBjpS&4{cY}R{(a|~5`i0mR#J;6 zA>ckY=p#{OT)5gE~+uH&HU3&-_97u&0fYgE+RiM zx`(Yj40Y(Fv35~$JIaw${oNs@Aq^*0oEI$7NJ3rDKv^w{WoT_140KXoBpN8>W$hg! z0dcr4cb0i^Z|QY!m4bScg^Qe)vd6yR`T&+y?BJBDe!hU2sGa+f49%4e^^y~er7PH` znIOF9Y~|Q0?Z!@kp|)x2y(W^BsNcfr$XH^r{(-ncD63$mhK2$0Ec@*8Q8X+=)BW{cvXwxni1Za6WE35Eq(u3>RKu$fH{CX zSt0UG{y;cD>|KXDMl6&rw}Ua-P@n|BbF(k12^2u2xdqZ}_}XHxIM*GZ4Z=aC3KmJq z#B0nNM^7<4(=Y}EUcgVctX5UMEV5#O#6JJr7W6PI_wEscl^A{vS1Wyh>g<;yi+)|7 zd~id5lNA$Dw&~0cW)o-x+nIX<)}>6E)ge_9IM_I;V+CgIMELnnWaUs$yJ_SwbQ& zWtRNrl_8H90u~SJY;oXu24w~ofEsc9?dqQG?tuuygwVGQ6VSUd5i^H4N%%9I{UWgI z>WyDkjp{;sU;bJnj!A;cGPCTCk(18l>AE>SGukCXTG1pYvd-nN-?c>21h*Ns!9dwL zkSDmF?49g+!>)K|y3QLh9idb;7D>bFkTvu#zO4=v$FJS&l?OO;RT2>1dqg z?t*}l8kCk81Lu&*qt(08K*iWGvbJNwyV=FYR^7^1DH}IV=v?nw?o8!J?cNZ^1h@;#2LL{zX<(*nW5IbS8{$lZSTmSQ)ZQT{XLCp~?uWkPlNDv@aI zlWy^8o(O*Hasc82a)=n>?tXfu9Ac=sjg1A-q}Y@76Vtolqt^L{t%cYl=d(BxKqM+m z%tMJXL@Yl-;44PrDX}n}9Y_>7P2jjghtpVcB}7RqtRv|PKJz|OPEnC9Lt87oY!a&& zm>b+PXeoGSaqb(#i~|3R15dDfY*&zHXKS65nq!Ic%F^XuA(WDUm`PIM@5;!`;wPD% zw2m}q^i`G4W37(f3f$K(s6jQoNq(mS#J>;4?%8L)t0ufvB)droq{%!vYNoo%z|r~N zI|GblL3PNdT&dU3#`C5pak%-3VUy)hb$JR3{30cX{GN=2k&2!C=;ue_1TTjNEYcg- zGtz_r^P>NG2xOdR2?~mIXp%u@41VX82*Z&IQJZP9l%*n;Y9LB4FCjHLPb1e$zOraM z$yxR#DI*~&AsQ>*N`T2f%HY4lu->S*l~5fotE1SV)CbvM&!L(AVMC3HVd+c&&fp*9 zPims@3T9`Ge1!aq0;6YjX>)OEadvi!fR3Z{bAxho1fC^(1$Ffi|Ehr>dm8{OWNCH%+(YQL- zAyX`&8K&OB!p*JA)u0Rn;FH6U6XOySWd23r_xPOCfOFq~b-(h2YLS3yl6r`feUJHP ztaF3%7uOL1YT1oo9g~njbN*nMd5qyV7IhfH+&4;5P9cxgBtqHT(8Ri|VN#nqO(e5I zEju+lASpONMO;lSJ1jd@K_w$p-99?^J1!{=2?TZ2G)vGnutHF3Y~&x~3mFSw3d~;TKre0rO&)i-D3n z)LOpS$lG1oT%*3Hwkx76+{W6&EEw@O)^VnB(%-_`Uc3~xqPV3_ zWARX+GSS}G%2cTt_UQhZ9pZ5K?&JS*i9CRaoQG&Z$`FSz^y%jAW`j2g3=#$R3eso< z5+0Xjy&iscV~VFJ>j(D&3=toKarX-|HYuwhj6hU4FSbDUD19vx+S;S=0HK{AAA+5Rm2EtuXqz+r=j5Fh_gsgJlA9mO6|+|9k>pzL-^ZgM!zG~wWoq?N#3g&d<@9_L%kap@67Y>R6^I>-x4DjAk zpMA%7WqD%g9n1t76$_Gdk^mMcDyCh*Nnc4O!T)!&NUcFnT|mx1%S1jSE~Q1PGCV3( z!ZE=kHz78wjuv5Zh<)BOA}1$j*T=TvnO&4iT$5C1q->R0;o|$)zxM!kX1o-27=xSs zyk-QCb?}vKa&-vz{run(278nCV|^OJ=e%yAK&Ixf0sI96`hO1VTz`!R?00_?LfGt8 z-pQSY#<|Tu9JkfnsJ=E#>OZ~2G|bT&J8g5FC_t)i!oVibd9$m2y{f*;P*-0i&lASA zZ?vFmwnyb%bb2jJpcgpRi1`GQ>If$12r0GcxVD+ zyH;g~+ZUe!n$r&BfC@HRmT6#XOA@4`&X@8#l~GfVM_Q91!g$Wd(1G_WO{z-6$*#&b zS0wM_nKVl@$}GLaA~iKmNLM8xQX*R}EGnU>%qTCqm+m(bAckJFH1p_w?01!JduRRR zf%R(*8EGtS8U7k~1^kb6{)L(hXAWte?euYeOV^iTA8wxIB-hV|l5;2zBkYY6xr};1&Px zmg4~x48q>pxO;wor*oD{M~iJysnmP(R9HXAI<&K%BojAPGQmGe-Kg6;DAYg7#hKV9; z1jz`AE}KFcFgUDCh-9C>-+MXhg7 z$g~rSw%%ljquJ?~r-Jx0Ueu{KTT5P!TuetlIweQ8F}FQNE>}~|RA0$%CFm>k%S1d7 zJuo^h|KB)6PnXeFum(XqF5xsj@inM3^`7nUw!(IX%(xcp)1eB;3X-hQXx8SL_z?fn zh&Kl1JZSn?ZCxIKP#rdW??4e%2$V7s^kV4X@9bFX?_2EiV%y4eudoRvEy`<8K10W% zX;W<^Q)@fIEdfu$I0j$Ky=Aef0Lm{NCO^DQay4Vx_uV%SLfB2bpgmZQs{n+Pd6a%r3A2X-0f-+1|9~C}Mq~<}VR{$+7X$>?1{fWC z-->)2V*7Y$!9K2&&DPJB5e>F2y2I$*+4kM#0h<`%fAehMPxqPQA(kqeis4AU`LhMY-(oJ)s+#N*uYwuO(p(+Z?IqyxEl&_vpD+Gfw)q#U~*yxXP& zMbGV1?JbWb=U$9P=toq188BiMF=VX?VGMH|A5EFTX#8^Y0fGXMGzv_>k^$JKGekT< zJ47QtP1-B0Eh#`TCcj8A%`&ya%({!EkFR9J(d6H)*Qm`ZtxuVvZMUY1k%CNR=JqA+ zj!bxjnM|3v&*OlU2H~9Rc`m34m1z!%ldel)rDvlD0Byw$#bgIrM`cK2lN!(JXI_h( z2+(8{>r>rY?pJ{=C-O!;j7}lyGqXJLXghE~T~Xdbo!msR5Z^tDSD{5*(KbuLGWk1G zndn#U(^`+JCmze(NSq{8rxTqTt{2U1XTAn~%no6ybMt($Dtj^j9TA=a-JAsR(H{Ir zlwgLR5cP@y_A~^8iCmiT$7KuVwmHQ=>$JrJEtle(i56sO45yjDFX|m3A%3#IX_!_Yp*|HC+((6@|A(bZO MT1prgS|0{lk>(*0uK)l5 literal 0 HcmV?d00001 diff --git a/config/examples/Creality/Ender-3 V2/README.md b/config/examples/Creality/Ender-3 V2/README.md new file mode 100644 index 0000000000..1cc285e4f1 --- /dev/null +++ b/config/examples/Creality/Ender-3 V2/README.md @@ -0,0 +1,17 @@ +# Ender 3 V2 + +## Flashing Firmware + +The bootloader which handles flashing new firmware on this board remembers the last filename you used. + +Therefore, to flash the compiled firmware binary onto the board you must give the "`firmware.bin`" file on the SD card a unique name, different from the name of the previous firmware file, or you will be greeted with a blank screen on the next boot. + +# Updating the Display + +To update the graphics and icons on the display: + +- Copy the `DWIN_SET` folder to an SD card and insert the card into the slot on the back of the display unit. +- Power on the machine and wait for the screen to change from blue to orange. +- Power off the machine. +- Remove the SD card from the back of the display. +- Power on to confirm a successful flash. diff --git a/config/examples/Creality/Ender-3 V2/_Bootscreen.h b/config/examples/Creality/Ender-3 V2/_Bootscreen.h new file mode 100644 index 0000000000..cfa856dec0 --- /dev/null +++ b/config/examples/Creality/Ender-3 V2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 V2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3 V2/_Statusscreen.h b/config/examples/Creality/Ender-3 V2/_Statusscreen.h new file mode 100644 index 0000000000..60e79759ca --- /dev/null +++ b/config/examples/Creality/Ender-3 V2/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3 V2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h new file mode 100644 index 0000000000..bbe01e09cc --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h new file mode 100644 index 0000000000..9a21845bde --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 1.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..b8401c1268 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..e163936ac2 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 1.2" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..c0d709c4bb --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..4ec688be4d --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/BigTreeTech SKR Mini E3 2.0" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..920d114d1d --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/CrealityV1" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..7b9557a6a7 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV1/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/CrealityV1" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..6580ebf372 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..058aa430a2 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah 1.2/BLTouch" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h new file mode 100644 index 0000000000..8de5f3c505 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah 1.2/base" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h new file mode 100644 index 0000000000..d64d4346e9 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah 1.2/base/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah 1.2/base" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..70d6a180e1 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah/BLTouch" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..60c4b945d2 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/BLTouch/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah/BLTouch" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h new file mode 100644 index 0000000000..8282845e61 --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah/base" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h new file mode 100644 index 0000000000..ed5e31142c --- /dev/null +++ b/config/examples/Creality/Ender-3/FYSETC Cheetah/base/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/FYSETC Cheetah/base" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h b/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h new file mode 100644 index 0000000000..645f39966e --- /dev/null +++ b/config/examples/Creality/Ender-3/MEEB-3DP/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/MEEB-3DP" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111110,B00001111,B11111111,B10000000,B01111111,B11111111,B11110000,B00111111,B11111111,B11111001,B11111111,B11111111,B11100000, + B00011111,B11111111,B00001111,B11111111,B10000000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B00011111,B11111111,B00001111,B11111111,B10000001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B00111111,B11111111,B00001111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B10000011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B00111111,B11111111,B00011111,B11111111,B11000011,B11111111,B11111111,B11110011,B11111111,B11111111,B11111001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10011111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000011,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B11111111,B11111110, + B00111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B10111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11110000, + B01111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111100, + B01111111,B11111111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B11111111,B11100011,B11111111,B11111111,B11100011,B11111111,B11111111,B11100001,B11111111,B11111111,B11111110, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111111,B11111111,B11000011,B11111111,B11111111,B11100001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B10111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B01111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B11011111,B11111111,B00111111,B11100011,B11111110,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B00000000,B00000011,B11111111,B00000000,B00000001,B11111111,B00000001,B11111111, + B11111111,B10011111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11100011,B11111111,B11111111,B11111011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111, + B11111111,B10001111,B11111111,B00111111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111111,B00011111,B11110011,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111110, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111001,B11111111,B11111111,B11111100, + B11111111,B10001111,B11111110,B00011111,B11110001,B11111111,B11111111,B11111000,B11111111,B11111111,B11111001,B11111111,B11111111,B11111000, + B11111111,B10001111,B11111110,B00011111,B11110000,B11111111,B11111111,B11111000,B01111111,B11111111,B11111001,B11111111,B11111111,B11110000, + B11111111,B00000111,B11111110,B00011111,B11110000,B00111111,B11111111,B11100000,B00011111,B11111111,B11110001,B11111111,B11111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00111111,B11111111,B11111111,B11111111,B11100000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111011,B11111111,B11111111,B10000000,B00011111,B01111111,B11111111,B11110000, + B00000000,B00000000,B00000111,B11111111,B11111111,B00000000,B00000011,B11111111,B11111111,B11000000,B00000000,B01111111,B11111111,B11111000, + B00000000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000011,B11111111,B11111111,B11100000,B00000000,B01111111,B11111111,B11111000, + B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111000, + B00000000,B00000000,B11111111,B11111111,B11111111,B00000000,B11111111,B11111111,B11111111,B11110000,B00011111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111111,B11111111,B11110000,B00000000,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000111,B11111000,B00011111,B11110000,B00000000,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111111,B00000001,B11111111,B11111111,B11110111,B11111000,B00011111,B11111111,B11111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00011111,B00111111,B11111110,B00000001,B11110111,B11111000,B00011111,B11110000,B00111110,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111100,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B00000000,B00000000,B11111111,B11111000,B00000000,B00001111,B11111000,B00011111,B11110000,B00000001,B11111111,B00001111,B11111000, + B00000000,B01111111,B11111110,B11111111,B11111111,B11111111,B11101111,B11111000,B00111111,B11111111,B11111101,B11111111,B00011111,B11110000, + B00000000,B00000000,B00111110,B11111111,B11111100,B00000011,B11101111,B11110000,B00111111,B11100000,B01111101,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00001111,B11110000,B00111111,B11100000,B00000001,B11111111,B11111111,B11100000, + B00000000,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B11110000,B00111111,B11111111,B11111111,B11111111,B11111111,B11000000, + B00000000,B00000000,B01111100,B00000011,B11111110,B00000011,B11011111,B11110000,B01111111,B11000000,B01111011,B11111111,B11111111,B10000000, + B00000000,B00000000,B00010000,B00000011,B11111110,B00000000,B00011111,B11110000,B01111111,B11000000,B00000011,B11111111,B11111111,B00000000, + B00000000,B00000000,B00011111,B11111111,B11111110,B00000000,B00011111,B11111111,B11111111,B11000000,B00000011,B11111111,B11111100,B00000000, + B00011111,B11111111,B10111111,B11111111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B11111011,B11111100,B00000000,B00000000, + B00000000,B00001111,B10111111,B11111111,B11111100,B00000111,B11111111,B11111111,B11111111,B00000000,B11111011,B11111100,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B00000000,B00000000,B01111111,B11111111,B11111000,B00000000,B00111111,B11111111,B11111110,B00000000,B00000111,B11111100,B00000000,B00000000, + B01111111,B11111111,B01111111,B11111111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111111,B11110111,B11111100,B00000000,B00000000, + B00000000,B00111111,B01111111,B11111111,B10000000,B00001111,B10111111,B11111111,B11000000,B00000001,B11110111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h b/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h new file mode 100644 index 0000000000..46543536ac --- /dev/null +++ b/config/examples/Creality/Ender-3/MEEB-3DP/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2019 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Creality/Ender-3/MEEB-3DP" + +#define STATUS_LOGO_X 0 +#define STATUS_LOGO_Y 0 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11000000,B00110011,B11111011,B11111101,B11111100, + B11100000,B01110111,B11111011,B11111101,B11111110, + B11100000,B01110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11110000,B11110110,B00000011,B00000001,B10000110, + B11010000,B10110110,B00000011,B00000001,B10000110, + B11011001,B10110111,B11111011,B11111001,B11111110, + B11011001,B10110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11001111,B00110110,B00000011,B00000001,B10000110, + B11000110,B00110111,B11111011,B11111101,B11111110, + B11000000,B00110011,B11111001,B11111101,B11111100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11100001,B11111110,B00001111,B11110000, + B00011111,B11110001,B11111111,B00001111,B11111000, + B00011000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000000,B00110001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001100,B00011000, + B00000111,B11100001,B10000001,B10001111,B11111000, + B00000000,B00110001,B10000001,B10001111,B11110000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00000000,B00110001,B10000001,B10001100,B00000000, + B00011000,B00110001,B10000001,B10001100,B00000000, + B00011111,B11110001,B11111111,B00001100,B00000000, + B00001111,B11100001,B11111110,B00001100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Creality/Ender-5 Pro/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5 Pro/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 6 +#define STATUS_LOGO_WIDTH 40 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011110,B00000000,B10000000,B00000000,B01111000, + B00010000,B00000000,B10000000,B00000000,B01000000, + B00010000,B10100011,B10011001,B01100000,B01110000, + B00011100,B11010100,B10100101,B10000000,B00001000, + B00010000,B10010100,B10111101,B00001111,B00001000, + B00010000,B10010100,B10100001,B00000000,B01001000, + B00011110,B10010011,B10011101,B00000000,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md new file mode 100644 index 0000000000..8f4fcff83f --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/README.md @@ -0,0 +1,10 @@ +# Modded Ender-5 Config with SKR 1.4 Turbo + +This config is for an Ender-5 upgraded with the following mods: +- BigTreeTech SKR 1.4 Turbo +- TMC2209 drivers (sensorless homing) +- E3D all metal hotend (changes thermistor and max temps) +- "Extreme mode" for all-metal hotend (higher max temp which is not recommended for long-term use by E3D) +- Chamber setup (configures chamber with the thermistor in the E1 thermistor pin on the SKR 1.4 and the heater in the second heater pins beside the bed heater) + +Other mods not listed here may also be enabled in this config, so proceed with caution. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h new file mode 100644 index 0000000000..d24696371e --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h new file mode 100644 index 0000000000..80edb5f552 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR 1.4 Turbo (TMC2209)/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 60 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md new file mode 100644 index 0000000000..15ea6c022a --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 2.0/readme.md @@ -0,0 +1,23 @@ +# Ender-5 with BigTreeTech SKR Mini E3 v2.0 + +## Build with "Auto Build Marlin" + +For the best experience building with PlatformIO in VSCode, open up the "Extensions" panel and install the "Auto Build Marlin" extension. After installation, open up the Auto Build Marlin view and click the "Build" button for the "512K" environment. + +## Build with PlatformIO + +For direct PlatformIO build, locate the `env:STM32F103RC_btt_512K` group the PlatformIO panel and click the "Build" item in that group to start the build. + +To make the main "Build" button apply to this board's environment, edit the `platformio.ini` section `[platformio]` and change `default_envs` to + +```ini +default_envs = STM32F103RC_btt_512K +``` + +## Older Leadscrew + +**Note:** This Ender-5 `Configuration.h` applies to the newer leadscrew with 800 steps/mm. If your printer has the older leadscrew, change the Z component of `DEFAULT_AXIS_STEP_PER_UNIT` to 400 as in the example below: + +```cpp +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 } +``` diff --git a/config/examples/Creality/Ender-5/Creality/_Bootscreen.h b/config/examples/Creality/Ender-5/Creality/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/Creality/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-5/Creality/_Statusscreen.h b/config/examples/Creality/Ender-5/Creality/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/Creality/_Statusscreen.h @@ -0,0 +1,61 @@ +/** + * 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 . + * + */ + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 37 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B01111000, + B01001000,B00000000,B10000000,B00000000,B01000000, + B01000011,B11000011,B10001100,B11010000,B01110000, + B01110001,B00100100,B10010010,B01100111,B00001000, + B01000001,B00100100,B10011110,B01000000,B00001000, + B01001001,B00100100,B10010000,B01000000,B01001000, + B11111011,B10110011,B11001110,B11100000,B00110000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 73 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/README.md b/config/examples/Creality/Ender-5/README.md new file mode 100644 index 0000000000..ef74777b91 --- /dev/null +++ b/config/examples/Creality/Ender-5/README.md @@ -0,0 +1,13 @@ +# Creality Ender-5 Leadscrew Changes + +In mid-to-late 2019, Creality upgraded the base Ender-5 leadscrew to the same one used on the Ender-5 Pro which prevents the bed from dropping once power is cut. + +If your machine shipped with the upgraded leadscrew (or if your prints are 1/2 as tall as they should be), change your Z steps from `400` to `800` in `Configuration.h`: + +Before: +`DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }` + +After: +`DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 800, 93 }` + +Or by sending `M92 Z800` followed by `M500` after updating your firmware. diff --git a/config/examples/Einstart-S/readme.md b/config/examples/Einstart-S/readme.md new file mode 100644 index 0000000000..f6da66f9cd --- /dev/null +++ b/config/examples/Einstart-S/readme.md @@ -0,0 +1,152 @@ +## Einstart S Machine Notes + +The Einstart S is a commercial machine that ships with a proprietary firmware and "licensed" slicer program which requires the original SD card or license file (.lic/.reg) from support in order to function. The impetus for the port was that I acquired the machine on the weekend when tech support was closed. + +## Specifications: + + - Powder coated, formed steel enclosure + - Machined Aluminum internal axis support frame + - Genuine matched HIWIN rails on all axis + - Genuine Minebea NEMA17 motors (200 steps/rev) + - THC7128 3A Stepper Drivers (configured for 16 microsteps, loud) + - 160x160 magnetically coupled non-heated bed + - PLA-only, Direct Drive extruder + - SH1106 OLED Display w/ Cardinal navigation + - 9533 I2C PWM RGB LED Chassis illumination + - Onboard SD-Card Support + +## Initial modifications + +### Bootloader/Marlin installation + +This machine probably doesn't ship with the arduino boot loader, so unless you reflow a 2560 on there to replace the atmega1280 like I did (to preserve the original firmware), you'll need to use ISP to do an initial firmware load and/or bootloader flash! + +It's not that bad though, you can just buy an ISP programmer with the appropriate header, or build an ISP programmer using the Arduino ISP sketch (wiring is easier if you use the "old style wiring" which utilizes the following pinout: (see the comments in the ArduinoISP sketch). + +I used an arduino Nano and a header I had lying around, but you could do the same with a nano and some dupont headers cut and soldered to the board, and taped/glued into a header. + +Triple check your pinouts, it shouldn't fry if connected backwards but if your pinout is wrong you're going to struggle for sure. + +#### ArduinoISP Sketch pinout for 10pin ISP header using "old style wiring": + +See the comments in the ArduinoISP sketch under File:Examples:ArduinoISP + +1 MOSI D11 +2 5v Vcc +3 N/C +4 GND +5 RES D10 +6 N/C +7 SCK D13 +8 N/C +9 MISO D12 +10 GND GND + +#### Einstart Motherboard ISP Header Pinout + +The 10 pin ISP Header is located to the right of the ATMEGA chip, just above the long LCD header. + +#### ISP Diagram + +<--- Face of chassis + +MOSI ( 1 ) ( 2 ) Vcc + N/C ( 3 ) ( 4 ) GND + RST ( 5 ) ( 6 ) GND + SCK ( 7 ) ( 8 ) GND +MISO ( 9 ) (10 ) GND + +Component Plugs ---> + +### Motherboard Diagram + + |1234|1234|1234|1234|12|12|12|12|12|12|12|12|12|12|123|12|1234| + --------------------------------------------------------------- +| XMOT YMOT ZMOT EMOT EF HB HE PF ZS YS XS PS BT ET PT1 TC VBRG | +| ===== ====== [DC| +|====== ====== ____ ISP IC1__ ___| +| |1280| ::::: | | |USB| +| |____| 1 |__| |___| +| BUTTON |SD | +| GDLRUO LCD |___| +|________________________[......][....................]_________| + +Legend: + +XMOT X-Motor +YMOT Y-Motor +ZMOT Z-Motor +EMOT E-Motor +EF Extruder Fan +HB Heated Bed (PWM) +HE Hot End (PWM) +PF Part Fan (PWM) +ZS Z-Endstop (Max) +YS Y-Endstop (Min) +XS X-Endstop (Min) +PS SPST Switch to enable DC 24v +BT Bed Thermistor (header not populated) +ET Extruder Thermistor +PT1 Pt100 Thermocouple (not populated) +TC Thermocouple (not populated) +VBRG LED Output from PCA5933 +BUTTONS +G GND (buttons are pulled low on activation) +D DOWN +L LEFT +R RIGHT +U UP +O OK (MIDDLE) + +## Uploading Marlin firmware to a stock Einstart S + +### Summary: + +Make, buy or steal a 10 pin ISP programmer and select the appropriate programmer option via Tools:Programmer in Arduino IDE, use the Sketch:Upload Using Programmer command or Shift-Ctrl-U (vs Ctrl-U to upload via serial). + +### Detailed procedure: + +You can either load Marlin directly via ISP programmer (easiest, but requires opening the chassis every time you want to change/update firmware) or, just program the bootloader which will enable later uploads via USB. HOWEVER, to actually upload the sketch you will need one of the following: + + - ISP programming header (ArduinoISP sketch, pinout below) + - OR + - Install bootloader on atmega1280 to enable native USB uploads (also requires ISP). + - AND + - Connect button between RESET and GND on ISP header, release post compile just before upload starts. + - OR + - Install permanent modification described below, requires no button press during upload. + +### Permanent modification to enable USB uploads via Arduino IDE + +As a permanent modification to enable direct USB upload from the arduino IDE, you would need to flash the boot loader using ISP first; but then you can solder a wire or 100n capacaitor between the DTR line on the FTDI to the reset line, which is conveniently located in several places on the board. + +#### FTDI Chip Diagram (IC1) + + ______ + TXD --|1 28|--OSCO + DTR --|2 27|--OSCI + RTS --|3 26|--TEST + VCCIO--|4 25|--AGND + RXD --|5 24|--N/C + RI --|6 23|--CBUS0 + GND --|7 22|--CBUS1 + N/C --|8 21|--GND + DSR --|9 20|--Vcc + DCD --|10 19|--RES + CTS --|11 18|--GND + CBUS4--|12 17|--3V3 + CBUS2--|13 16|--USBDM + CBUS3--|14 15|--USBDP + |______| + +#### Arduino Reset Circuit + + DTR-----||----GND----/\/\/\/----Vcc + 100nf 10k + +With this modification you no longer need the reset button and you can program directly from the Arduino IDE. + +### Power notes during flashing. + +You do NOT need power connected when flashing via ISP. +You DO need power when flashing via USB Serial but you MUST time the release of the reset line to allow the upload unless you've performed the permanent modification. diff --git a/config/examples/Felix/DUAL/README.md b/config/examples/Felix/DUAL/README.md new file mode 100644 index 0000000000..48fe099151 --- /dev/null +++ b/config/examples/Felix/DUAL/README.md @@ -0,0 +1,60 @@ +# Felix 2.0/3.0 Configuration for Marlin Firmware + +Bringing silky smooth prints to Felix. + +## Build HOWTO + + - Install the latest non-beta Arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software + - Download the Marlin firmware + - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - In both cases use the "Download Zip" button on the right. + +``` +cd Marlin/src +cp config/examples/Felix/Configuration_adv.h . +``` + +The next step depends on your setup: + +### Single Extruder Configuration + + cp config/examples/Felix/Configuration.h . + +### Dual Extruder Configuration + + cp config/examples/Felix/DUAL/Configuration.h Configuration.h + +### Compile Firmware + + - Start the Arduino IDE. + - Select Tools -> Board -> Arduino Mega 2560 + - Select the correct serial port in Tools -> Serial Port (usually /dev/ttyUSB0) + - Open Marlin.pde or .ino + - Click the Verify/Compile button + +### Flash Firmware + +#### Connected directly via USB + + - Click the Upload button. If all goes well the firmware is uploading + +#### Remote update + +Find the latest Arduino build: + + ls -altr /tmp/ + drwxr-xr-x 5 chrono users 12288 Mar 3 21:41 build6072035599686630843.tmp + +Copy the firmware to your printer host: + + scp /tmp/build6072035599686630843.tmp/Marlin.cpp.hex a.b.c.d:/tmp/ + +Connect to your printer host via ssh, stop Octoprint or any other service that may block your USB device and make sure you have avrdude installed, then run: + + avrdude -C/etc/avrdude.conf -v -v -v -patmega2560 -cwiring -P/dev/ttyUSB0 \ + -b115200 -D -Uflash:w:/tmp/Marlin.cpp.hex:i + +## Acknowledgements + +Mashed together and tested on https://apollo.open-resource.org/mission:resources:picoprint based on collaborative teamwork of @andrewsil1 and @thinkyhead. diff --git a/config/examples/Felix/Single/README.md b/config/examples/Felix/Single/README.md new file mode 100644 index 0000000000..48fe099151 --- /dev/null +++ b/config/examples/Felix/Single/README.md @@ -0,0 +1,60 @@ +# Felix 2.0/3.0 Configuration for Marlin Firmware + +Bringing silky smooth prints to Felix. + +## Build HOWTO + + - Install the latest non-beta Arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software + - Download the Marlin firmware + - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - In both cases use the "Download Zip" button on the right. + +``` +cd Marlin/src +cp config/examples/Felix/Configuration_adv.h . +``` + +The next step depends on your setup: + +### Single Extruder Configuration + + cp config/examples/Felix/Configuration.h . + +### Dual Extruder Configuration + + cp config/examples/Felix/DUAL/Configuration.h Configuration.h + +### Compile Firmware + + - Start the Arduino IDE. + - Select Tools -> Board -> Arduino Mega 2560 + - Select the correct serial port in Tools -> Serial Port (usually /dev/ttyUSB0) + - Open Marlin.pde or .ino + - Click the Verify/Compile button + +### Flash Firmware + +#### Connected directly via USB + + - Click the Upload button. If all goes well the firmware is uploading + +#### Remote update + +Find the latest Arduino build: + + ls -altr /tmp/ + drwxr-xr-x 5 chrono users 12288 Mar 3 21:41 build6072035599686630843.tmp + +Copy the firmware to your printer host: + + scp /tmp/build6072035599686630843.tmp/Marlin.cpp.hex a.b.c.d:/tmp/ + +Connect to your printer host via ssh, stop Octoprint or any other service that may block your USB device and make sure you have avrdude installed, then run: + + avrdude -C/etc/avrdude.conf -v -v -v -patmega2560 -cwiring -P/dev/ttyUSB0 \ + -b115200 -D -Uflash:w:/tmp/Marlin.cpp.hex:i + +## Acknowledgements + +Mashed together and tested on https://apollo.open-resource.org/mission:resources:picoprint based on collaborative teamwork of @andrewsil1 and @thinkyhead. diff --git a/config/examples/FlashForge/CreatorPro/CuraSettings.txt b/config/examples/FlashForge/CreatorPro/CuraSettings.txt new file mode 100644 index 0000000000..d45af2b721 --- /dev/null +++ b/config/examples/FlashForge/CreatorPro/CuraSettings.txt @@ -0,0 +1,157 @@ +NOTE ON FLASHING THE FIRMWARE: + +The firmware for the Atmel chip used for USB on the Mighty Board is the same as the Arduino Mega's, but it doesn't do an automatic reset. If you want the printer to reset on DTR you will need to flash it with the firmware for the Arduino Mega. + +### Use with all nozzle settings + +Build plate shape: Rectangular + [X] Origin at center + [X] Heated bed +G-code flavor: Marlin + +### Right Nozzle + +Number of Extruders: 1 + +X (Width) 227 +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: 0 + Nozzle offset Y: 0 + Cooling Fan Number:0 + +;START G-CODE; +M104 T0 S{material_print_temperature} +M140 S{material_bed_temperature} +G28 +T0 +G1 X150 Y-70 Z30 F4800 ; move to wait position left hand side of the table +M190 S{material_bed_temperature} +M109 T0 S{material_print_temperature} +G92 E0 +G1 Z0.4 F1800 +G1 X110 Y-70 E20 F300 ; purge nozzle +G1 X120 Y-70 Z0.15 F1200 ; slow wipe +G1 X110 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; + +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; + +***Left Nozzle*** +Number of Extruders: 1 +X (Width) 227 +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: -34 + Nozzle offset Y: 0 + Cooling Fan Number:0 + +;START G-CODE; +M104 S{material_print_temperature} +M140 S{material_bed_temperature} +G28 +T1 +G1 X-110 Y-70 Z30 F4800 ; move to wait position left hand side of the table +M104 S{material_print_temperature} +M190 S{material_bed_temperature} +M109 S{material_print_temperature} +G92 E0 +G1 Z0.4 F1800 +G1 E10 F300 ; purge nozzle +G1 X-67 Y-70 E25 F300 ; purge nozzle +G1 X-77 Y-70 Z0.15 F1200 ; slow wipe +G1 X-67 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; + +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; + +***Both Nozzles*** +Number of Extruders: 2 +X (Width) 295 <---- bed width + 2 x nozzle offset +Y (Depth) 148 +Z (Heigth) 150 + +Extruder 1 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: 0 + Nozzle offset Y: 0 + Cooling Fan Number:0 + ;Extruder End G-code; + G1 X150 Y70 F9000;move away from print in case extrusion cool down speed modifier too low + ;Extruder End G-code; + +Extruder 2 - + Nozzle size: 0.4 + Compatible material diameter: 1.75 + Nozzle offset X: -34 + Nozzle offset Y: 0 + Cooling Fan Number:0 + ;Extruder End G-code; + G1 X150 Y70 F9000;move away from print in case extrusion cool down speed modifier too low + ;Extruder End G-code; + +;START G-CODE; +M104 T0 S{material_print_temperature, 0} +M104 T1 S{material_print_temperature, 1} +M140 S{material_bed_temperature} +G28 +;purge right +T0 +G1 X155 Y-70 Z30 F4800 +M190 S{material_bed_temperature} +M109 T0 S{material_print_temperature, 0} +M104 T0 S{material_standby_temperature, 0} +G92 E0 +G1 Z0.4 F1800 +G1 X110 Y-70 E20 F300 ; purge nozzle +G1 X120 Y-70 Z0.15 F1200 ; slow wipe +G1 E17 F2400 +G1 X110 Y-70 Z0.5 F1200 ; lift +G92 E0 +;purge left +T1 +;M104 T0 S{material_standby_temperature, 0} +M104 T1 S{material_print_temperature, 1} +G1 X-110 Y-70 Z30 F4800 +M109 T1 S{material_print_temperature, 1} +G92 E0 +G1 Z0.4 F1800 +G1 X-67 Y-70 E25 F300 ; purge nozzle +G1 X-77 Y-70 Z0.15 F1200 ; slow wipe +G1 E22 F3600 +G1 X-67 Y-70 Z0.5 F1200 ; lift +G92 E0 +;START G-CODE; +;END G-CODE; +G1 X150 Y75 Z150 F1000 ; send Z axis to bottom of machine +M140 S0; cool down HBP +M104 T0 S0 ; cool down right extruder +M104 T1 S0 ; cool down left extruder +M127 ; stop blower fan +M18 ; disable stepper +;END G-CODE; diff --git a/config/examples/FlyingBear/P905H/README.md b/config/examples/FlyingBear/P905H/README.md new file mode 100644 index 0000000000..dcb9ba1029 --- /dev/null +++ b/config/examples/FlyingBear/P905H/README.md @@ -0,0 +1,14 @@ +# Flying Bear P905H configuration + +This configuration is for a P905H with **a single extruder and inductive Z-sensor**. It's been thoroughly tested, and I've tried to make the printer work smoothly, so this configuration is more focused on print quality than speed. + +- Use this firmware as a baseline for other P905 modifications. +- Find other notes in the config files by searching for "P905H". + +## Build Instructions + - Get Visual Studio Code and install the "Auto Build Marlin" extension. + - Download the [Marlin source code](https://marlinfw.org/meta/download/). + - Copy the two Configuration files from this folder into the 'Marlin' folder (replacing the existing files). + - Open the 'MarlinFirmware' project folder in Visual Studio Code. + - Click the "Auto Build Marlin" button and then the Upload button. + - Don't forget to reset your EEPROM with `M502` and `M500` after flashing. diff --git a/config/examples/Formbot/Raptor/_Bootscreen.h b/config/examples/Formbot/Raptor/_Bootscreen.h new file mode 100644 index 0000000000..d8c8d1fc90 --- /dev/null +++ b/config/examples/Formbot/Raptor/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/Raptor" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111, + B11111110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111, + B11111100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111, + B11111100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B11111100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000000,B00000001,B11110000,B00111111, + B11111110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000000,B00000010,B00001000,B00011111, + B11111100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000000,B00000101,B00000100,B00111111, + B11111110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000000,B00001010,B00000010,B00011111, + B11111100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000000,B00010101,B00000001,B00111111, + B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111, + B11111100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000000,B00010100,B00000001,B00111111, + B11111110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111, + B11111100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B00010101,B00000001,B00111111, + B11111110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101010,B00001010,B00000010,B00011111, + B11111100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010001,B00000101,B00000100,B00111111, + B11111110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100001,B00000010,B10001000,B00011111, + B11111100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010001,B00000001,B11110000,B00111111, + B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101010,B00000000,B00000000,B00011111, + B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00000000,B00000000,B00111111, + B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111, + B11111100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111, + B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111, + B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111, + B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11100000,B00101110,B11111011,B01111101,B11111011,B11111011,B11001111,B11000001,B11011111,B10111011,B00111110,B11000000,B11100001,B11111110,B00111100,B00011111, + B11111101,B11101110,B01111011,B00111001,B11111001,B11110011,B11001111,B10011110,B11011111,B10111011,B00111110,B11011111,B11011110,B11111100,B11011101,B11100111, + B11111101,B11101110,B00111011,B10111011,B11111001,B11101011,B11010111,B10111111,B01011111,B10111011,B01011110,B11011111,B11011110,B11111101,B11101101,B11110111, + B11111101,B11101110,B10111011,B11010011,B11111010,B11101011,B10110111,B00111111,B11011111,B10111011,B01001110,B11011111,B11011111,B11111111,B11001101,B11110011, + B11111101,B11101110,B11011011,B11000111,B11111010,B11101011,B10111011,B01111111,B11000000,B00111011,B01101110,B11000000,B11100011,B11111111,B00011101,B11110011, + B11111101,B11101110,B11001011,B11101111,B11111010,B11011011,B10111011,B01111111,B11011111,B10111011,B01100110,B11011111,B11111000,B11111111,B11001101,B11110011, + B11111101,B11101110,B11101011,B11101111,B11111011,B01011011,B00000011,B00111111,B01011111,B10111011,B01110110,B11011111,B11111110,B01111111,B11101101,B11110011, + B11111101,B11101110,B11110011,B11101111,B11111011,B01011011,B01111001,B10111110,B11011111,B10111011,B01111010,B11011111,B11011110,B01111101,B11101101,B11110111, + B11111101,B11101110,B11110011,B11101111,B11111011,B10111010,B11111101,B10011110,B11011111,B10111011,B01111100,B11011111,B11011110,B11111101,B11001101,B11100111, + B11111101,B11101110,B11111011,B11101111,B11111011,B10111010,B11111101,B11000001,B11011111,B10111011,B01111110,B11000000,B11100000,B11111110,B00011100,B00011111 +}; diff --git a/config/examples/Formbot/Raptor/_Statusscreen.h b/config/examples/Formbot/Raptor/_Statusscreen.h new file mode 100644 index 0000000000..04f52f5713 --- /dev/null +++ b/config/examples/Formbot/Raptor/_Statusscreen.h @@ -0,0 +1,77 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/Raptor" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 3 +#define STATUS_LOGO_WIDTH 24 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111111,B11111111,B11111111, + B10000000,B00000000,B00000001, + B10001110,B00000000,B11100001, + B10011111,B00000001,B11110001, + B10010011,B10000001,B00111001, + B10011111,B10000001,B11111001, + B10011111,B10000001,B11111001, + B10011111,B10111001,B11111001, + B10001111,B00101000,B11110001, + B10000000,B00111000,B00000001, + B10000000,B00000000,B00000001, + B10011111,B11111111,B11111001, + B10010001,B01110100,B10011001, + B10011011,B00000110,B10101001, + B10011011,B01010100,B10101001, + B10011011,B01010110,B10101001, + B10011011,B01010100,B10011001, + B10011111,B11111111,B11111001, + B11111111,B11111111,B11111111 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Formbot/T_Rex_2+/_Bootscreen.h b/config/examples/Formbot/T_Rex_2+/_Bootscreen.h new file mode 100644 index 0000000000..912167eff9 --- /dev/null +++ b/config/examples/Formbot/T_Rex_2+/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/T_Rex_2+" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11100000,B00111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000, + B00000000,B10000011,B11000001,B00000000,B01110000,B00111100,B00000000,B00111000,B00000011,B11000000,B01111000,B00000000,B00000111,B00111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000001,B11111110,B00000000,B11000000,B01100000,B00000000,B00001110,B00011100,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000011,B11000111,B00000000,B01100000,B11000000,B00000000,B00001100,B00001100,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01111110,B01111000,B00000110,B00000001,B10000000,B00110001,B10000000,B00000000,B00000000,B00001100,B00000110,B00000000, + B00000000,B00000011,B11000000,B11111111,B01111111,B11100000,B00000110,B00000001,B11000000,B00011011,B00000000,B00000000,B00000000,B00011100,B00111111,B11000000, + B00000000,B00000011,B11000000,B11111111,B01110000,B11100000,B00001111,B11111111,B11000000,B00001111,B00000000,B00000000,B00000000,B00111000,B00111111,B11000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B01111000,B00001100,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B01110000,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000110,B00000000,B00000000,B00011001,B10000000,B00000000,B00000000,B01100000,B00000110,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000110,B00000000,B11000000,B00110000,B11000000,B00000000,B00000001,B11000000,B00000110,B00000000, + B10000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000011,B10000001,B10000000,B01100000,B01100000,B00000000,B00000011,B10000000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00001110,B10000001,B11111111,B10000000,B11000000,B00110000,B00000000,B00001111,B11111100,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00000111,B00000000,B01111100,B00000011,B10000000,B00011100,B00000000,B00011111,B11111100,B00000000,B00000001, + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111 +}; diff --git a/config/examples/Formbot/T_Rex_2+/_Statusscreen.h b/config/examples/Formbot/T_Rex_2+/_Statusscreen.h new file mode 100644 index 0000000000..3cdaea16b9 --- /dev/null +++ b/config/examples/Formbot/T_Rex_2+/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/T_Rex_2+" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 4 +#define STATUS_LOGO_WIDTH 21 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00011110,B00000000, + B00000000,B11111111,B10000000, + B00000001,B11111111,B11100000, + B00000111,B00000000,B00000000, + B00001111,B00000000,B00000000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00000000,B00000000, + B00011111,B00000000,B00000000, + B00001111,B00001111,B11111000, + B00000111,B00001111,B11110000, + B00000011,B00001111,B11000000, + B00000001,B00001111,B00000000, + B00000000,B00001100,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Formbot/T_Rex_3/_Bootscreen.h b/config/examples/Formbot/T_Rex_3/_Bootscreen.h new file mode 100644 index 0000000000..fba4169669 --- /dev/null +++ b/config/examples/Formbot/T_Rex_3/_Bootscreen.h @@ -0,0 +1,104 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/T_Rex_3" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00011111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100000,B00111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11100000,B00111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000, + B00000000,B11111111,B11111111,B00000000,B01111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11110000,B00000000,B00000000, + B00000000,B10000011,B11000001,B00000000,B01110000,B00111100,B00000000,B00111000,B00000011,B11000000,B01111000,B00000000,B00001100,B00011000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000001,B11111110,B00000000,B11000000,B01100000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000011,B11000111,B00000000,B01100000,B11000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01111110,B01111000,B00000110,B00000001,B10000000,B00110001,B10000000,B00000000,B00000000,B00011100,B00000000,B00000000, + B00000000,B00000011,B11000000,B11111111,B01111111,B11100000,B00000110,B00000001,B11000000,B00011011,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B11111111,B01110000,B11100000,B00001111,B11111111,B11000000,B00001111,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B01111000,B00001100,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00011100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00111100,B00000110,B00000000,B00000000,B00011001,B10000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B00000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000110,B00000000,B11000000,B00110000,B11000000,B00000000,B00000000,B00001100,B00000000,B00000000, + B10000000,B00000011,B11000000,B00000000,B01110000,B00011110,B00000011,B10000001,B10000000,B01100000,B01100000,B00000000,B00001100,B00011000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00001110,B10000001,B11111111,B10000000,B11000000,B00110000,B00000000,B00000111,B11110000,B00000000,B00000001, + B10000000,B00000011,B11000000,B00000000,B01110000,B00000111,B00000000,B01111100,B00000011,B10000000,B00011100,B00000000,B00000001,B11100000,B00000000,B00000001, + B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111 +}; diff --git a/config/examples/Formbot/T_Rex_3/_Statusscreen.h b/config/examples/Formbot/T_Rex_3/_Statusscreen.h new file mode 100644 index 0000000000..5bf520543e --- /dev/null +++ b/config/examples/Formbot/T_Rex_3/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Formbot/T_Rex_3" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 4 +#define STATUS_LOGO_WIDTH 21 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00011110,B00000000, + B00000000,B11111111,B10000000, + B00000001,B11111111,B11100000, + B00000111,B00000000,B00000000, + B00001111,B00000000,B00000000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00001111,B11111000, + B00011111,B00000000,B00000000, + B00011111,B00000000,B00000000, + B00001111,B00001111,B11111000, + B00000111,B00001111,B11110000, + B00000011,B00001111,B11000000, + B00000001,B00001111,B00000000, + B00000000,B00001100,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#if HOTENDS < 2 + #define STATUS_LOGO_X 8 + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 72 +#else + #define STATUS_LOGO_X 0 + #define STATUS_HEATERS_X 32 + #define STATUS_BED_X 80 +#endif diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md new file mode 100644 index 0000000000..d908932c50 --- /dev/null +++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/README.md @@ -0,0 +1,54 @@ +These are example configurations for the low-cost [Acrylic Průša I3 pro B 3D Printer DIY kit](http://www.geeetech.com/acrylic-geeetech-prusa-i3-pro-b-3d-printer-diy-kit-p-917.html) and the [3DTouch auto bed leveling sensor](http://www.geeetech.com/geeetech-3dtouch-auto-bed-leveling-sensor-for-3d-printer-p-1010.html) based on: + +- `../GT2560/` +- [Marlin 1.1.4 With 3DTouch / BLTouch for i3 Pro B](https://www.geeetech.com/forum/viewtopic.php?t=19846) + +The main characteristics of these configurations are: + +- The defined motherboard is `BOARD_GT2560_REV_A_PLUS`. +- Travel limits are adjusted to the printer bed size and position. +- An example `SKEW_CORRECTION` for a particular printer is enabled. See comments below about how to adjust it to a particular printer. +- Using the LCD controller for bed leveling is enabled. + - `PROBE_MANUALLY` is enabled, which *provides a means to do "Auto" Bed Leveling without a probe*. + - The `LEVEL_BED_CORNERS` option for manual bed adjustment is enabled. + - Bilinear bed leveling is enabled, the boundaries for probing are adjusted to the glass size, and extrapolation is enabled. +- `PRINTCOUNTER` is enabled, in order to track statistical data. +- `INDIVIDUAL_AXIS_HOMING_MENU` is enabled, which adds individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. +- The speaker is enabled for the UI feedback. +- `bltouch` variant: + - `USE_ZMAX_PLUG` is enabled. See comments about connections below. + - Heaters and fans are turned off when probing. + - Multiple probing is set to 3. + +# First-time configuration + +## Skew factor + +The skew factor must be adjusted for each printer: + +- First, uncomment `#define XY_SKEW_FACTOR 0.0`, compile and upload the firmware. +- Then, print [YACS (Yet Another Calibration Square)](https://www.thingiverse.com/thing:2563185). Hint, scale it considering a margin for brim (if used). The larger, the better to make error measurements. +- Measure the printed part according to the comments in the example configuration file, and set `XY_DIAG_AC`, `XY_DIAG_BD` and `Y_SIDE_AD`. +- Last, comment `#define XY_SKEW_FACTOR 0.0` again, compile and upload. + +## 3DTouch auto leveling sensor + +- Print a suitable mount to attach the sensor to the printer. The example configuration file is adjusted to http://www.geeetech.com/wiki/images/6/61/3DTouch_auto_leveling_sensor-1.zip +- Unlike suggested in [geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor), the existing end stop switch is expected to be kept connected to Z_MIN. So, the sensor is to be connected to Z_MAX, according to Marlin's default settings. Furthermore, GT2560-A+ provides a connector for the servo next to thermistor connectors (see [GT2560](https://www.geeetech.com/wiki/images/thumb/4/45/GT2560_wiring.jpg/700px-GT2560_wiring.jpg) and [GT2560-A+](http://i.imgur.com/E0t34VU.png)). +- Be careful to respect the polarity of the sensor when connecting it to the GT2560-A+. Unlike end stops, reversing the connection will prevent the sensor from working properly. +- [Test](http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Testing) and [calibrate](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Calibration) the sensor. +- If using the GT2560-A+ and with the sensor connected to Z_MAX and an endstop connected to Z_MIN use the following calibration routine instead. + +## 3DTouch Calibration with Z_MAX + +- Home the printer with `G28` command. +- Disable the Z axis software endstop with `M211 S0 Z0` +- Reset the probe Z_OFFSET with `M851 Z0` +- Move to the center of the bed with `G1 X100 Y100` +- Move Z incrementally until the nozzle is the correct height from the bed using a shim or piece of paper, record this Z movement, for example -0.2. +- Do a single probe at the current point in the middle of the bed using `G30` and not the returned value, for example 1.9. Invert this value, i.e. -1.9, and add it to the Z offset above, i.e. -0.2 in this example giving -2.1. +- Update the probe Z_OFFSET to this value using `M851` i.e. `M851 Z-2.1`. +- Re-enable software end-stops with `M211 S1 Z0` +- Save this value to the EEPROM with `M500`. +- Update the start G-Code in your slicer software to insert a `G29` after the last `G28`. +- Carefully test that the offset is correct in the first print. diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md new file mode 100644 index 0000000000..d908932c50 --- /dev/null +++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/README.md @@ -0,0 +1,54 @@ +These are example configurations for the low-cost [Acrylic Průša I3 pro B 3D Printer DIY kit](http://www.geeetech.com/acrylic-geeetech-prusa-i3-pro-b-3d-printer-diy-kit-p-917.html) and the [3DTouch auto bed leveling sensor](http://www.geeetech.com/geeetech-3dtouch-auto-bed-leveling-sensor-for-3d-printer-p-1010.html) based on: + +- `../GT2560/` +- [Marlin 1.1.4 With 3DTouch / BLTouch for i3 Pro B](https://www.geeetech.com/forum/viewtopic.php?t=19846) + +The main characteristics of these configurations are: + +- The defined motherboard is `BOARD_GT2560_REV_A_PLUS`. +- Travel limits are adjusted to the printer bed size and position. +- An example `SKEW_CORRECTION` for a particular printer is enabled. See comments below about how to adjust it to a particular printer. +- Using the LCD controller for bed leveling is enabled. + - `PROBE_MANUALLY` is enabled, which *provides a means to do "Auto" Bed Leveling without a probe*. + - The `LEVEL_BED_CORNERS` option for manual bed adjustment is enabled. + - Bilinear bed leveling is enabled, the boundaries for probing are adjusted to the glass size, and extrapolation is enabled. +- `PRINTCOUNTER` is enabled, in order to track statistical data. +- `INDIVIDUAL_AXIS_HOMING_MENU` is enabled, which adds individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. +- The speaker is enabled for the UI feedback. +- `bltouch` variant: + - `USE_ZMAX_PLUG` is enabled. See comments about connections below. + - Heaters and fans are turned off when probing. + - Multiple probing is set to 3. + +# First-time configuration + +## Skew factor + +The skew factor must be adjusted for each printer: + +- First, uncomment `#define XY_SKEW_FACTOR 0.0`, compile and upload the firmware. +- Then, print [YACS (Yet Another Calibration Square)](https://www.thingiverse.com/thing:2563185). Hint, scale it considering a margin for brim (if used). The larger, the better to make error measurements. +- Measure the printed part according to the comments in the example configuration file, and set `XY_DIAG_AC`, `XY_DIAG_BD` and `Y_SIDE_AD`. +- Last, comment `#define XY_SKEW_FACTOR 0.0` again, compile and upload. + +## 3DTouch auto leveling sensor + +- Print a suitable mount to attach the sensor to the printer. The example configuration file is adjusted to http://www.geeetech.com/wiki/images/6/61/3DTouch_auto_leveling_sensor-1.zip +- Unlike suggested in [geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor), the existing end stop switch is expected to be kept connected to Z_MIN. So, the sensor is to be connected to Z_MAX, according to Marlin's default settings. Furthermore, GT2560-A+ provides a connector for the servo next to thermistor connectors (see [GT2560](https://www.geeetech.com/wiki/images/thumb/4/45/GT2560_wiring.jpg/700px-GT2560_wiring.jpg) and [GT2560-A+](http://i.imgur.com/E0t34VU.png)). +- Be careful to respect the polarity of the sensor when connecting it to the GT2560-A+. Unlike end stops, reversing the connection will prevent the sensor from working properly. +- [Test](http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Testing) and [calibrate](https://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor#Calibration) the sensor. +- If using the GT2560-A+ and with the sensor connected to Z_MAX and an endstop connected to Z_MIN use the following calibration routine instead. + +## 3DTouch Calibration with Z_MAX + +- Home the printer with `G28` command. +- Disable the Z axis software endstop with `M211 S0 Z0` +- Reset the probe Z_OFFSET with `M851 Z0` +- Move to the center of the bed with `G1 X100 Y100` +- Move Z incrementally until the nozzle is the correct height from the bed using a shim or piece of paper, record this Z movement, for example -0.2. +- Do a single probe at the current point in the middle of the bed using `G30` and not the returned value, for example 1.9. Invert this value, i.e. -1.9, and add it to the Z offset above, i.e. -0.2 in this example giving -2.1. +- Update the probe Z_OFFSET to this value using `M851` i.e. `M851 Z-2.1`. +- Re-enable software end-stops with `M211 S1 Z0` +- Save this value to the EEPROM with `M500`. +- Update the start G-Code in your slicer software to insert a `G29` after the last `G28`. +- Carefully test that the offset is correct in the first print. diff --git a/config/examples/Intamsys/FunmatHT_4988/_Bootscreen.h b/config/examples/Intamsys/FunmatHT_4988/_Bootscreen.h new file mode 100644 index 0000000000..5bbb6fdc97 --- /dev/null +++ b/config/examples/Intamsys/FunmatHT_4988/_Bootscreen.h @@ -0,0 +1,105 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Intamsys/FunmatHT_4988" + +/** + * Custom Bitmap for splashscreen + * + * You may use one of the following tools to generate the C++ bitmap array from + * a black and white image: + * + * - http://www.marlinfw.org/tools/u8glib/converter.html + * - http://www.digole.com/tools/PicturetoC_Hex_converter.php + */ +#include + +#define CUSTOM_BOOTSCREEN_TIMEOUT 2500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 125 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000,B00000000,B10000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00001100,B00000000,B10000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00001100,B00000000,B10000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000110,B00000000,B10000000,B11100011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000110,B00000000,B10000000,B01101111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011100,B00111000,B00000010,B00000000,B10000000,B00111100,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011111,B00110000,B00000011,B00000000,B11000000,B00111100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110111,B10110000,B00000010,B11111111,B01100000,B00111100,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11100000,B11111000,B00000110,B11111111,B10110000,B00111100,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11000000,B11011000,B00001101,B10000001,B10011000,B00011100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B10000000,B11011000,B00001001,B10000000,B11011100,B11111100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011000,B00011011,B00000000,B01101111,B11100100,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011111,B11111011,B00000000,B00110111,B00000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100111,B11110110,B00000000,B00011000,B00000011,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100000,B00001110,B00000000,B00011000,B00001111,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11000000,B00101110,B00000000,B00011011,B11111111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111100,B00011111,B11110110,B01111101,B10000001,B11100110,B00000000,B00011011,B11000111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00111111,B11111111,B00011111,B10001111,B11000011,B11111111,B11111111,B11111111,B11111100,B00011111,B11111111,B00111000,B00000011,B11000000, + B11111111,B11111111,B11111111,B11111111,B10001111,B00011111,B11000111,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B00111100,B00000011,B11100000, + B00010000,B00001111,B11110000,B00001111,B10001111,B11111111,B10000011,B11111111,B11110111,B11111111,B11111000,B11111111,B11111100,B00111100,B00000011,B11100000, + B00000000,B00001111,B11110000,B00000111,B11111111,B11111111,B00000001,B10011110,B00100111,B11111100,B11000010,B11111000,B00000000,B00111110,B00000011,B11100000, + B00001111,B11111111,B11110000,B00000011,B11011111,B11111110,B00000001,B11001110,B01101100,B11111100,B01000111,B11111000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B11111111,B11001100,B11111111,B11111111,B11110000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B00001110,B00011100,B11111111,B11111001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11110000,B00001111,B11000111,B11111100,B00000000,B00001110,B00011100,B11111111,B11110001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11111000,B00001111,B10000111,B11111110,B00000000,B00001110,B00001100,B11111000,B11110000,B11110000,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B10111111,B10001111,B00000000,B00111111,B11100110,B11111000,B11100000,B11111100,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B11111111,B00000111,B11000000,B11111111,B11100111,B11111111,B11111100,B11111111,B11111111,B00111100,B00000011,B11100000, + B11111111,B11111111,B11111111,B11111111,B11111110,B00000011,B11100000,B10001110,B00110011,B11111111,B11111100,B00011111,B11111111,B00111100,B00000011,B11100000, + B01111111,B11111100,B00111111,B11110000,B00111100,B00000001,B11110001,B10011110,B00110001,B11111111,B11111001,B00001111,B11111110,B00111100,B00000011,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00011001,B11111111,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00001100,B11100000,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00001100,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000110,B00000001,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000000,B00000110,B00111111,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001110,B00000000,B00001101,B11111101,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11100110,B00000000,B00011001,B10000001,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11101111,B11110111,B00000000,B00011011,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00110011,B00000000,B00110011,B00000001,B11001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00011011,B00000000,B00110110,B00000001,B10011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00001101,B11111111,B11101100,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00001110,B11111111,B11011000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11110001,B10000000,B00000110,B01100000,B00111000,B00000111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11111101,B10000000,B00000011,B00000000,B00011000,B00000101,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B10001111,B11000000,B00000110,B11111111,B11011100,B00001010,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11100000,B00001100,B11111111,B11001100,B00011111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11110000,B00001101,B10000000,B01101100,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01000000,B11111110,B00011011,B00000000,B01100111,B10001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00100000,B01111111,B11110110,B00000000,B00100000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00010000,B00110000,B01101110,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000100,B00110000,B00001110,B00000000,B11111111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B00110000,B00000110,B00000000,B11100001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11110000,B00000011,B00000011,B11100010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Intamsys/FunmatHT_4988/_Statusscreen.h b/config/examples/Intamsys/FunmatHT_4988/_Statusscreen.h new file mode 100644 index 0000000000..f0df271037 --- /dev/null +++ b/config/examples/Intamsys/FunmatHT_4988/_Statusscreen.h @@ -0,0 +1,75 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Intamsys/FunmatHT_4988" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010000,B00000000, + B00000000,B00000000,B00000110,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000001,B00000000,B00000000,B00000000, + B00001000,B00000000,B00000001,B00000000, + B00000001,B00000000,B01000001,B00000000, + B00000001,B00000000,B00000010,B00000000, + B00000000,B11100000,B00000000,B00000000, + B10000000,B00001000,B00010000,B10000000, + B00000100,B00000000,B00000000,B01000000, + B00001000,B00000000,B00001000,B00000000, + B00010000,B00000100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00110000, + B00000000,B00000000,B00000000,B00100000, + B00000000,B00000001,B11101000,B00100000, + B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000010,B00000000, + B00000000,B00001000,B00000000,B00000000, + B00000000,B00000000,B00000001,B00100000, + B00000010,B11101000,B00010000,B01100000, + B00000000,B00000000,B00000000,B01000000, + B00000000,B00000011,B11000000,B01100000, + B01100100,B00000000,B00010000,B00000000, + B00000100,B00000011,B11000000,B00000000, + B00000010,B00000000,B00100000,B00000000, + B00000000,B00101000,B00000000,B00000000, + B00000000,B00001000,B00100000,B00000000, + B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/JGAurora/A5/README.md b/config/examples/JGAurora/A5/README.md new file mode 100644 index 0000000000..861f276750 --- /dev/null +++ b/config/examples/JGAurora/A5/README.md @@ -0,0 +1,39 @@ +# Configuration for JGAurora A5 printer + +## Firmware Installation Instructions + +To install custom firmware: + +- Download and install arduino IDE software from https://www.arduino.cc/en/Main/Software +- Plug in A5 to your computer via USB cable +- In arduino IDE, under the Tools menu, set: + – **Board** to "Arduino/Genuino Mega or Mega 2560" + – ***Processor*** to "Atmega 2560 (Mega 2560)" + – **Port** to your 3D printer’s serial port. To figure out the correct serial port unplug the printer and observe the "Port" menu. Connect the printer's USB cable, re-open the "Port" menu and see if a new ports has appeared. This new port is likely to be your printer. + - If you can’t find the right port or if your machine isn't detected, you may need to install a driver for the CH340 serial-to-USB interface chip in the printer. + - [macOS CH340 Serial Driver](http://sampin.ch/ch340-driver-mac) + - [Windows CH340 Serial Driver](https://sparks.gogo.co.nz/ch340.html) +- Install the u8glib library using the library manager in the menu "Sketch -> Include Library -> Manage Libraries." +- IMPORTANT: Unplug the 8-pin LCD panel header connector on your printer. The LCD should turn off completely. This is found underneath the LCD, and can be accessed from underneath the printer without removing any screws. Remember where it goes so you can put it back after flashing. +- Close all other programs (Cura, Repetier Host, JGCreat, etc.) that could connect to the serial port. +- Open the "Marlin.ino" file in Arduino IDE and wait for the new project window to appear. +- Select "Upload" from the "Sketch" menu or click the Upload button. +- Wait for the firmware to finish uploading and verifying. This may take a couple of minutes. +- Plug the LCD connector back in. +- In the Arduino IDE, select "Tools -> Serial monitor" to open up a simple console. In the popup menus, select "Newline" and a Baud Rate of "250000." +- In the input box, enter the following G-code commands: + - `M502` (press return) to reset settings (in RAM) to your configured defaults. + - `M500` (press return) to write settings and initialize the EEPROM. + +## Graphical Display + +The control panel included with the JGAurora interfaces only indirectly with Marlin, and this imposes some limitations. But you can use a RepRap Discount Full Graphic Smart Controller with the JGAurora A5 by applying the following additional settings in `Configuration.h`: + +```cpp +#define ENCODER_PULSES_PER_STEP 5 +#define ENCODER_STEPS_PER_MENU_ITEM 1 +#define REVERSE_ENCODER_DIRECTION +#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER +``` + +You may also be able to change `BEEPER_PIN` to use the piezo on the LCD controller instead of the one on the board. diff --git a/config/examples/MakerParts/_Bootscreen.h b/config/examples/MakerParts/_Bootscreen.h new file mode 100644 index 0000000000..68cdbd9b60 --- /dev/null +++ b/config/examples/MakerParts/_Bootscreen.h @@ -0,0 +1,83 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "MakerParts" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00011111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11111111,B11111111,B11000000,B00001111,B10000000,B01111100,B00000111,B11100000,B00111111,B00001111,B11011111,B11111111,B01111111,B11110000, + B00111111,B11111111,B11111111,B11111111,B11100000,B00001111,B11000000,B11111100,B00000111,B11100000,B00111111,B00011111,B10011111,B11111111,B01111111,B11111100, + B01111111,B10111111,B11111111,B11101111,B11110000,B00001111,B11000000,B11111100,B00001111,B11110000,B00111111,B00011111,B00011111,B11111111,B01111111,B11111110, + B01111110,B00001111,B11111111,B10000011,B11110000,B00001111,B11100001,B11111100,B00001111,B11110000,B00111111,B00111110,B00011111,B11111111,B01111111,B11111110, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11100001,B11111100,B00011111,B11111000,B00111111,B01111110,B00011111,B10000000,B01111100,B00111110, + B01111100,B00000011,B11111110,B00000001,B11110000,B00001111,B11110011,B11111100,B00011111,B11111000,B00111111,B11111100,B00011111,B10000000,B01111100,B00011110, + B01111100,B00000001,B11111100,B00000001,B11110000,B00001111,B11110011,B11111100,B00011111,B11111000,B00111111,B11111000,B00011111,B11111100,B01111100,B00111110, + B01111100,B00000000,B11111000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111000,B00011111,B11111100,B01111111,B11111110, + B01111100,B00000000,B01110000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111100,B00011111,B11111100,B01111111,B11111110, + B01111100,B00000000,B00100000,B00000001,B11110000,B00001111,B11111111,B11111100,B00111110,B01111100,B00111111,B11111100,B00011111,B11111100,B01111111,B11111100, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10111111,B01111100,B01111111,B11111110,B00111111,B11111110,B00011111,B11111100,B01111111,B11111000, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10111111,B01111100,B01111111,B11111110,B00111111,B11111110,B00011111,B10000000,B01111111,B11111000, + B01111100,B00000000,B00000000,B00000001,B11110000,B00001111,B10011110,B01111100,B01111111,B11111110,B00111111,B00111111,B00011111,B10000000,B01111100,B11111000, + B01111100,B00000110,B00000011,B00000001,B11110000,B00001111,B10011110,B01111100,B11111111,B11111111,B00111111,B00111111,B00011111,B11111111,B01111100,B11111100, + B01111100,B00000111,B00000111,B00000001,B11110000,B00001111,B10001100,B01111100,B11111111,B11111111,B00111111,B00011111,B10011111,B11111111,B01111100,B11111100, + B01111100,B00000111,B10001111,B00000001,B11110000,B00001111,B10000000,B01111100,B11111000,B00011111,B00111111,B00011111,B10011111,B11111111,B01111100,B01111110, + B01111100,B00000111,B11011111,B00000001,B11110000,B00001111,B10000000,B01111101,B11111000,B00011111,B10111111,B00001111,B11011111,B11111111,B01111100,B00111111, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11111110,B00000011,B11110000,B00011111,B11111000,B00111111,B11111111,B10000111,B11111000,B00000000, + B01111100,B00000111,B11111111,B00000001,B11110000,B00001111,B11111111,B00000011,B11110000,B00011111,B11111110,B00111111,B11111111,B10011111,B11111110,B00000000, + B01111100,B00000111,B11111111,B00000001,B11100000,B00001111,B11111111,B10000111,B11111000,B00011111,B11111111,B00111111,B11111111,B10011111,B11111110,B00000000, + B00111100,B00001111,B11111111,B10000001,B11100000,B00001111,B11111111,B11000111,B11111000,B00011111,B11111111,B10111111,B11111111,B10111111,B11111110,B00000000, + B00111100,B00001111,B11111111,B10000001,B11100000,B00001111,B11111111,B11000111,B11111000,B00011111,B11111111,B10111111,B11111111,B10111111,B00111100,B00000000, + B00011110,B00001111,B11111111,B10000011,B11000000,B00001111,B10000111,B11001111,B11111100,B00011111,B00001111,B11000001,B11110000,B00111110,B00000000,B00000000, + B00011110,B00001111,B11111111,B10000011,B11000000,B00001111,B10000011,B11001111,B11111100,B00011111,B00000111,B11000001,B11110000,B00111111,B11000000,B00000000, + B00001111,B00001111,B11111111,B10000111,B10000000,B00001111,B10000111,B11001111,B00111100,B00011111,B00001111,B10000001,B11110000,B00111111,B11111000,B00000000, + B00001111,B00001111,B11111111,B10000111,B10000000,B00001111,B11111111,B11011111,B00111110,B00011111,B11111111,B10000001,B11110000,B00011111,B11111110,B00000000, + B00000111,B10001111,B11111111,B10001111,B00000000,B00001111,B11111111,B10011111,B00111110,B00011111,B11111111,B10000001,B11110000,B00011111,B11111110,B00000000, + B00000111,B11001111,B11111111,B10011111,B00000000,B00001111,B11111111,B00011111,B00111110,B00011111,B11111111,B00000001,B11110000,B00000111,B11111111,B00000000, + B00000011,B11101111,B11111111,B10111110,B00000000,B00001111,B11111100,B00111111,B11111111,B00011111,B11111110,B00000001,B11110000,B00000000,B01111111,B00000000, + B00000001,B11101111,B11111111,B10111100,B00000000,B00001111,B10000000,B00111111,B11111111,B00011111,B00111110,B00000001,B11110000,B00011000,B00011111,B00000000, + B00000000,B11101111,B11111111,B10111000,B00000000,B00001111,B10000000,B00111111,B11111111,B00011111,B00111111,B00000001,B11110000,B00011110,B00111111,B01111100, + B00000000,B01101111,B11111111,B10110000,B00000000,B00001111,B10000000,B01111111,B11111111,B10011111,B00111111,B00000001,B11110000,B00111111,B11111111,B01111100, + B00000000,B00101111,B11111111,B10100000,B00000000,B00001111,B10000000,B01111111,B11111111,B10011111,B00011111,B10000001,B11110000,B01111111,B11111110,B01111100, + B00000000,B00001111,B11111111,B10000000,B00000000,B00001111,B10000000,B01111100,B00001111,B10011111,B00011111,B10000001,B11110000,B00111111,B11111110,B01111100, + B00000000,B00001111,B11111111,B10000000,B00000000,B00001111,B10000000,B11111100,B00001111,B11011111,B00001111,B11000001,B11110000,B00001111,B11111000,B01111100, + B00000000,B00000111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Malyan/M150/README.md b/config/examples/Malyan/M150/README.md new file mode 100644 index 0000000000..3a5026a4bd --- /dev/null +++ b/config/examples/Malyan/M150/README.md @@ -0,0 +1,55 @@ +# Configuration for Malyan M150 HobbyKing printer + +Config without automatic bed level sensor, or in other words, "as stock" + +## To install: + +1. Install [Arduino](https://www.arduino.cc/en/Main/Software) + +1. Install U8glib + * `Sketch` -> `Include Library` -> `Manage Libraries...` + * Search for and install `U8glib` by oliver + +1. Install Sanguino + * `File` -> `Preferences` + * Add + `https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json` + to `Additional Boards Manager URLs` + +1. Modify Sanguino `boards.txt` + * Close Arduino + * Locate Arduino15 folder + - `C:\Users\\AppData\Local\Arduino15` for Windows + - `~/.arduino15` for Linux + + * Locate `boards.txt` in `packages/Sanguino/hardware/avr/1.0.2` + (version number may change) + * Add the following to the end of `boards.txt` + (note that it is the same as sanguino.menu.cpu.atmega1284p but with + a different name and upload speed) + + ## Malyan M150 W/ ATmega1284P 16MHz + sanguino.menu.cpu.malyan_m150=Malyan M150 + sanguino.menu.cpu.malyan_m150.upload.maximum_size=130048 + sanguino.menu.cpu.malyan_m150.upload.maximum_data_size=16384 + sanguino.menu.cpu.malyan_m150.upload.speed=57600 + sanguino.menu.cpu.malyan_m150.bootloader.file=optiboot/optiboot_atmega1284p.hex + sanguino.menu.cpu.malyan_m150.build.mcu=atmega1284p + sanguino.menu.cpu.malyan_m150.build.f_cpu=16000000L + +1. Configure Marlin + * Copy `_Bootscreen.h`, `Configuration.h`, and `Configuration_adv.h` + from `config/examples/Malyan/M150` to `Marlin` + (overwrite files) + * Read `Configuration.h` and make any necessary changes + +1. Flash Marlin + * Turn on printer while pressing scroll wheel button + * Plug printer in to computer with USB cable + * Open `Marlin/Marlin.ino` with Arduino + * Configure Arduino + - `Tools` -> `Board` -> `Sanguino` + - `Tools` -> `Processor` -> `Malyan M150` + - `Tools` -> `Port` -> Select your port + + * `Sketch` -> `Upload` or click arrow in top right corner diff --git a/config/examples/Malyan/M150/_Bootscreen.h b/config/examples/Malyan/M150/_Bootscreen.h new file mode 100644 index 0000000000..4b106517d5 --- /dev/null +++ b/config/examples/Malyan/M150/_Bootscreen.h @@ -0,0 +1,73 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Malyan/M150" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11000000,B00000000,B00001111,B11100000,B01111100,B00000011,B11100000,B01111000,B00011100,B00000111,B10000001,B11100000,B11110000,B00111110,B00001110, + B01111111,B11100000,B00000000,B00111111,B11110000,B01111110,B00000111,B11100000,B11111100,B00011100,B00000011,B10000001,B11000001,B11111000,B00111111,B00001110, + B01111111,B11111000,B00000000,B01111111,B11110000,B01111110,B00000111,B11100000,B11111100,B00011100,B00000011,B11000011,B11000001,B11111000,B00111111,B00001110, + B01111011,B11111110,B00000001,B11111110,B11110000,B01111111,B00001111,B11100001,B11111110,B00011100,B00000001,B11000011,B10000011,B11111100,B00111111,B10001110, + B01111100,B11111111,B10000111,B11111001,B11110000,B01110111,B00001110,B11100001,B11111110,B00011100,B00000001,B11100111,B10000011,B11111100,B00111011,B10001110, + B01111111,B01111111,B11001111,B11110111,B11110000,B01110111,B10011110,B11100001,B11001110,B00011100,B00000000,B11100111,B00000011,B10011100,B00111011,B11001110, + B01111111,B10011111,B11111111,B11001111,B11110000,B01110011,B10011100,B11100011,B11001111,B00011100,B00000000,B11111111,B00000111,B10011110,B00111001,B11001110, + B01111111,B11100111,B11111111,B00111111,B11110000,B01110011,B11111100,B11100011,B10000111,B00011100,B00000000,B01111110,B00000111,B00001110,B00111001,B11101110, + B01111111,B11111011,B11111110,B11111111,B11110000,B01110001,B11111000,B11100011,B10000111,B00011100,B00000000,B01111110,B00001111,B00001111,B00111000,B11101110, + B01111111,B11111100,B11111001,B11111111,B11110000,B01110001,B11111000,B11100111,B11111111,B10011100,B00000000,B00111100,B00001111,B11111111,B00111000,B11111110, + B01111111,B11111111,B00100111,B11111111,B11110000,B01110000,B11110000,B11100111,B11111111,B10011100,B00000000,B00111100,B00001111,B11111111,B00111000,B01111110, + B01111111,B11111111,B11011111,B11111111,B11110000,B01110000,B11110000,B11101111,B11111111,B11011100,B00000000,B00111100,B00011111,B11111111,B10111000,B01111110, + B01111111,B11011111,B11111111,B11011111,B11110000,B01110000,B01100000,B11101111,B00000011,B11011111,B11111000,B00111100,B00011110,B00000111,B10111000,B00111110, + B01111111,B11000111,B11111111,B00011111,B11110000,B01110000,B01100000,B11101110,B00000001,B11011111,B11111000,B00111100,B00011100,B00000011,B10111000,B00111110, + B01111111,B11000011,B11111110,B00011111,B11110000,B01110000,B00000000,B11101110,B00000001,B11011111,B11111000,B00111100,B00011100,B00000011,B10111000,B00011110, + B01111111,B11000011,B11111110,B00011111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111100,B00111111,B11111010,B11111011,B11111111,B11111111,B11111111,B11111101,B01111010,B10111111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111101,B10011111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110111,B11111110, + B01111111,B11000011,B11011110,B00011111,B11110000,B01111101,B10010011,B00011010,B10001010,B00011000,B11100011,B10001100,B01000101,B00011010,B10100010,B11011110, + B00111111,B11000011,B11011110,B00001111,B11110000,B01111100,B00101101,B11001010,B11001010,B11010110,B11101001,B00100100,B11001101,B01101010,B10110110,B10111110, + B00011111,B10000011,B11011110,B00000111,B11100000,B01111101,B10100011,B01101010,B10011010,B11010110,B11101001,B00100110,B01100101,B01101010,B10110110,B00111110, + B00000110,B00000011,B11011110,B00000001,B10000000,B01111101,B10010001,B00001010,B10001010,B11011000,B11100011,B10001100,B01000101,B00011010,B10110011,B01111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B11101111,B11111111,B11111111,B11111111,B11111111,B01111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11110001,B11101111,B11111111,B11111111,B11111111,B11111110,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110, + B00000000,B00000011,B11011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, +}; diff --git a/config/examples/Malyan/M200/README.md b/config/examples/Malyan/M200/README.md new file mode 100644 index 0000000000..8129650dc7 --- /dev/null +++ b/config/examples/Malyan/M200/README.md @@ -0,0 +1,33 @@ +### Malyan M200 Build Instructions + +Malyan M200 series firmware currently builds using the Arduino IDE. These instructions should +guide you through the configuration and compilation. + +1. Install the Arduino IDE from your favorite source (arduino.cc, windows store, app store) +2. Launch the IDE to add the ST boards manager: + - Open the **Preferences** dialog. + - Add this link in the "*Additional Boards Managers URLs*" field: + https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json + - Select "**Show verbose ouptut during: compilation**." +3. Select **Tools** > **Board** > **Boards Manager**. +4. Type "Malyan" into the Search field. +5. The only board listed will be "**STM32 Cores by STMicroelectronics**." Any version from 1.6.0 up is fine. Choose install. This will download many tools and packages, be patient. +6. Open the **Tools** > **Board** submenu, scroll all the way down, and select **3D Printer Boards**. +7. From the **Tools** menu, select a board part number: + - If you own a M200 V1 or early run (black V2), choose **Malyan M200 V1**. + - If you own a M200 V2 later run (white/black) or V3 (Pro), choose **Malyan M200 V2** (The V2 and V3 both share an STM32F070 MCU). Note that the V3 pinout is not complete (autolevel doesn't work as of this writing). +8. From the **Tools** menu, choose **USB Support** > **CDC No Generic Serial**. +9. Download the latest Marlin source (from the [bugfix-2.0.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.0.x) branch) and unzip it. +10. Look in the `Marlin` subdirectory for the `Configuration.h` and `Configuration_adv.h` files. Replace these files with the configurations in the `config\examples\Malyan\M200` folder. +11. If you have an early-run V2, the steps-per-mm are roughly half. Consult the [mpminipro.com wiki](https://mpminipro.com/) for the steps that apply to your unit. Modify `Configuration.h`. +12. Inverting Axis. There's no pattern to axes will need to be inverted. The only way to know is to test your particular printer. If you *do* know, go ahead and invert the correct axes. +13. Open the `Marlin/Marlin.ino` file in Arduino IDE. +14. From the **Sketch** menu, select **File** > **Export Compiled Binary**. +15. When compilation is done you've built the firmware. The next stage is to flash it to the board. To do this look for a line like this: `"path/to/bin/arm-none-eabi-objcopy" -O binary "/path/to/Marlin.ino.elf" "/path/to/Marlin.ino.bin"` + The file `Marlin.ino.bin` is your firmware binary. M200 (v1-3) and M300 printers require flashing via SD card. Use the SD card that came with the printer if possible. The bootloader is very picky about SD cards. Copy `Marlin.ino.bin` to your SD card under three names: `firmware.bin`, `update.bin`, and `fcupdate.flg`. +16. Insert the SD card into your printer. Make sure the X and Y axes are centered in the middle of the bed. (When X and Y endstops are closed this signals a UI upgrade to the bootloader.) +17. Power-cycle the printer. The first flash may take longer. Don't be surprised if the .99 version number doesn't show up until after the UI has launched the default screen. +18. Remove the SD card and delete the `fcupdate.flg` file from the card to prevent an accidental re-flash. +19. Test the endstops and homing directions, run M303 PID autotune, and verify all features are working correctly. + +Welcome to Marlin 2.x... diff --git a/config/examples/Micromake/C1/basic/README.md b/config/examples/Micromake/C1/basic/README.md new file mode 100644 index 0000000000..0111f6f00a --- /dev/null +++ b/config/examples/Micromake/C1/basic/README.md @@ -0,0 +1,15 @@ +# Micromake C1 + +### In the folder "basic" +Configuration files for Micromake C1 without mods + - English LCD 2X16 Characters + - Motors 16 STEPS + - No heated bed + - No probe, etc. + - Like a standard C1 as shipped by Micromake. + +### In the folder "enhanced" +Configuration files for Micromake C1 with… + - 128 STEPS configured with jumper on the motherboard (all open for 128 Steps). + - Capacitive Probe (Adjust offsets at your convenience) + - French language with no accents for Japanese LCD. diff --git a/config/examples/Micromake/C1/enhanced/README.md b/config/examples/Micromake/C1/enhanced/README.md new file mode 100644 index 0000000000..0111f6f00a --- /dev/null +++ b/config/examples/Micromake/C1/enhanced/README.md @@ -0,0 +1,15 @@ +# Micromake C1 + +### In the folder "basic" +Configuration files for Micromake C1 without mods + - English LCD 2X16 Characters + - Motors 16 STEPS + - No heated bed + - No probe, etc. + - Like a standard C1 as shipped by Micromake. + +### In the folder "enhanced" +Configuration files for Micromake C1 with… + - 128 STEPS configured with jumper on the motherboard (all open for 128 Steps). + - Capacitive Probe (Adjust offsets at your convenience) + - French language with no accents for Japanese LCD. diff --git a/config/examples/Mks/Robin_Lite3/ReadMe.txt b/config/examples/Mks/Robin_Lite3/ReadMe.txt new file mode 100644 index 0000000000..d8919f43cd --- /dev/null +++ b/config/examples/Mks/Robin_Lite3/ReadMe.txt @@ -0,0 +1,5 @@ +1. MKS Robin Lite3 is a powerful 32-bit 3D printer control board with STM32F103RCT6. +2. Support Marlin2.0. +3. Support MKS LCD12864B/MINI12864/LCD2004/12864 and MKS TFT Touch Screens. +4. The main board integrates 5 AXIS interface, BLTOUCH interface, hot bed, 2 heating heads, 3 NTC100K and LCD screen SD card supports firmware update. +https://www.aliexpress.com/item/4000295949948.html?spm=2114.12010615.8148356.1.596183361yB18D diff --git a/config/examples/Mks/Robin_Pro/ReadMe.txt b/config/examples/Mks/Robin_Pro/ReadMe.txt new file mode 100644 index 0000000000..8d5241b5d0 --- /dev/null +++ b/config/examples/Mks/Robin_Pro/ReadMe.txt @@ -0,0 +1,4 @@ +1. MKS Robin Pro is a powerful 32-bit 3D printer control board with STM32F103ZET6. +2. Support Marlin2.0. Support LCD2004/12864 and MKS Robin TFT24/28/32... Screens. +3. The motherboard integrates 6 AXIS interface, BLTOUCH interface, hot bed, 3 heating heads, 4 NTC100K, 2 MAX31855, integrates SPI / UART interface and works with MKS TMC2130/TMC2208 V2.0/TMC +https://www.aliexpress.com/item/4000444286159.html?spm=2114.12010615.8148356.1.4158721an5TnW9 diff --git a/config/examples/Mks/Sbase/README.txt b/config/examples/Mks/Sbase/README.txt new file mode 100644 index 0000000000..1ec5e7fd7a --- /dev/null +++ b/config/examples/Mks/Sbase/README.txt @@ -0,0 +1,38 @@ +The MKS products (all?) have the EXP1 & EXP2 LCD connectors rotated 180 degrees from the ones on the RepRap LCD controllers. + +In order to attach the RepRap Discount Full Graphic Smart Controller you'll need to do something like one of the following for both EXP1 & EXP2: + a. On one end only, shave the keying plug off the cables and plug the cables in backwards. + b. On one end only, carefully pry the housings off the board, rotate them 180 degrees and press them back onto the pins. + c. Make custom cables where one connector is rotated 180 degrees. + + MKS: 1 2 3 4 5 6 7 8 9 10 + RepRap: 10 9 8 7 6 5 4 3 2 1 + + +///////////////////////////////////////////////////////////////////// + +3 DEC 2017 + +The current Marlin 2.0.x firmware cannot properly access some of the pins on the EXP2 connector. In order to use the RepRap Discount Full Graphic Smart Controller you'll need a custom cable that gets three of the signals from a different connector. In that cable move the pin/wire that: + + used to go to P0.8 to J8-3 + " " " " P0.7 to J8-2 + " " " " P0.5 to J8-4 + +If pins different than the J8 ones above are used then the spi_pins.h file will need to be modified. + +An octopus cable something like the Adafruit 1199 will simply the construction of the custom cable. Just plug the Adafruit 1199 into one of the cables that came with the LCD and the individual pins into J8 and EXP2 as needed. + +Adafruit 10-pin IDC Socket Rainbow Breakout Cable [1199] + https://www.adafruit.com/product/1199 + + +///////////////////////////////////////////////////////////////////// + +27 APR 2018 + +If you also want a functional SD_DETECT_PIN then you'll need to also move the following pin: + + used to go to P0.27 to J8-5 + +if you decide to use a different pin then the pins_MKS_SBASE.h file will need to be modified. diff --git a/config/examples/Modix/Big60/_Bootscreen.h b/config/examples/Modix/Big60/_Bootscreen.h new file mode 100644 index 0000000000..592dd62e52 --- /dev/null +++ b/config/examples/Modix/Big60/_Bootscreen.h @@ -0,0 +1,93 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Modix/Big60" + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111000,B00000000,B10000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00001100,B00000000,B10000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00001100,B00000000,B10000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000110,B00000000,B10000000,B11100011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000110,B00000000,B10000000,B01101111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011100,B00111000,B00000010,B00000000,B10000000,B00111100,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011111,B00110000,B00000011,B00000000,B11000000,B00111100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110111,B10110000,B00000010,B11111111,B01100000,B00111100,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11100000,B11111000,B00000110,B11111111,B10110000,B00111100,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11000000,B11011000,B00001101,B10000001,B10011000,B00011100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B10000000,B11011000,B00001001,B10000000,B11011100,B11111100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011000,B00011011,B00000000,B01101111,B11100100,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000010,B00000000,B11011111,B11111011,B00000000,B00110111,B00000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100111,B11110110,B00000000,B00011000,B00000011,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11100000,B00001110,B00000000,B00011000,B00001111,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000110,B00000000,B11000000,B00101110,B00000000,B00011011,B11111111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111100,B00011111,B11110110,B01111101,B10000001,B11100110,B00000000,B00011011,B11000111,B11000110,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00111111,B11111111,B00011111,B10001111,B11000011,B11111111,B11111111,B11111111,B11111100,B00011111,B11111111,B00111000,B00000011,B11000000, + B11111111,B11111111,B11111111,B11111111,B10001111,B00011111,B11000111,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B00111100,B00000011,B11100000, + B00010000,B00001111,B11110000,B00001111,B10001111,B11111111,B10000011,B11111111,B11110111,B11111111,B11111000,B11111111,B11111100,B00111100,B00000011,B11100000, + B00000000,B00001111,B11110000,B00000111,B11111111,B11111111,B00000001,B10011110,B00100111,B11111100,B11000010,B11111000,B00000000,B00111110,B00000011,B11100000, + B00001111,B11111111,B11110000,B00000011,B11011111,B11111110,B00000001,B11001110,B01101100,B11111100,B01000111,B11111000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B11111111,B11001100,B11111111,B11111111,B11110000,B00000000,B00111111,B11111111,B11100000, + B00011111,B11111111,B11110000,B00000011,B11000011,B11111100,B00000000,B00001110,B00011100,B11111111,B11111001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11110000,B00001111,B11000111,B11111100,B00000000,B00001110,B00011100,B11111111,B11110001,B11100000,B00000000,B00111111,B11111111,B11100000, + B00000000,B00001111,B11111000,B00001111,B10000111,B11111110,B00000000,B00001110,B00001100,B11111000,B11110000,B11110000,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B10111111,B10001111,B00000000,B00111111,B11100110,B11111000,B11100000,B11111100,B00000000,B00111100,B00000011,B11100000, + B01111111,B11111111,B11111111,B11111111,B11111111,B00000111,B11000000,B11111111,B11100111,B11111111,B11111100,B11111111,B11111111,B00111100,B00000011,B11100000, + B11111111,B11111111,B11111111,B11111111,B11111110,B00000011,B11100000,B10001110,B00110011,B11111111,B11111100,B00011111,B11111111,B00111100,B00000011,B11100000, + B01111111,B11111100,B00111111,B11110000,B00111100,B00000001,B11110001,B10011110,B00110001,B11111111,B11111001,B00001111,B11111110,B00111100,B00000011,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00011001,B11111111,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00001100,B11100000,B11000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00001100,B00000000,B01000010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000110,B00000001,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000000,B00000110,B00111111,B01100010,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001110,B00000000,B00001101,B11111101,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11100110,B00000000,B00011001,B10000001,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11101111,B11110111,B00000000,B00011011,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00110011,B00000000,B00110011,B00000001,B11001000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B10000000,B00011011,B00000000,B00110110,B00000001,B10011000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00001101,B11111111,B11101100,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00001110,B11111111,B11011000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11110001,B10000000,B00000110,B01100000,B00111000,B00000111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11111101,B10000000,B00000011,B00000000,B00011000,B00000101,B01000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B10001111,B11000000,B00000110,B11111111,B11011100,B00001010,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11100000,B00001100,B11111111,B11001100,B00011111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B10000001,B11110000,B00001101,B10000000,B01101100,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01000000,B11111110,B00011011,B00000000,B01100111,B10001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00100000,B01111111,B11110110,B00000000,B00100000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00010000,B00110000,B01101110,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000100,B00110000,B00001110,B00000000,B11111111,B10100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B00110000,B00000110,B00000000,B11100001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11110000,B00000011,B00000011,B11100010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B10001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, +}; diff --git a/config/examples/Modix/Big60/_Statusscreen.h b/config/examples/Modix/Big60/_Statusscreen.h new file mode 100644 index 0000000000..37fbeaa24f --- /dev/null +++ b/config/examples/Modix/Big60/_Statusscreen.h @@ -0,0 +1,62 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Modix/Big60" + +#define STATUS_LOGO_Y 1 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010000,B00000000, + B00000000,B00000000,B00000110,B00000000, + B00000000,B00000000,B00000000,B00000000, + B00000001,B00000000,B00000000,B00000000, + B00001000,B00000000,B00000001,B00000000, + B00000001,B00000000,B01000001,B00000000, + B00000001,B00000000,B00000010,B00000000, + B00000000,B11100000,B00000000,B00000000, + B10000000,B00001000,B00010000,B10000000, + B00000100,B00000000,B00000000,B01000000, + B00001000,B00000000,B00001000,B00000000, + B00010000,B00000100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00110000, + B00000000,B00000000,B00000000,B00100000, + B00000000,B00000001,B11101000,B00100000, + B00000000,B00000000,B00000000,B01100000, + B00000000,B00000000,B00000010,B00000000, + B00000000,B00001000,B00000000,B00000000, + B00000000,B00000000,B00000001,B00100000, + B00000010,B11101000,B00010000,B01100000, + B00000000,B00000000,B00000000,B01000000, + B00000000,B00000011,B11000000,B01100000, + B01100100,B00000000,B00010000,B00000000, + B00000100,B00000011,B11000000,B00000000, + B00000010,B00000000,B00100000,B00000000, + B00000000,B00101000,B00000000,B00000000, + B00000000,B00001000,B00100000,B00000000, + B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md b/config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md new file mode 100644 index 0000000000..7f2d950e74 --- /dev/null +++ b/config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md @@ -0,0 +1,70 @@ +# BigTreeTech BTT002/TMC2209 Config for Průša MK3S + +## Requirements +- [Průša MK3S](https://www.prusa3d.com/original-prusa-i3-mk3/) or MK3 with MK3S upgrade (required for filament runout to work properly) +- BigTreeTech BTT002 motherboard +- 4 x BigTreeTech TMC2209s (DIAG pin location differs from Watterott's & similar designs) + +## Upgrade Notes +* ⚠️ Cut or desolder the Z & E driver DIAG pins or they will interfere with PINDA & filament runout detection. ⚠️ +* Set the jumpers under your drivers to "TMC2208-UART MODE": +![image](https://user-images.githubusercontent.com/13375512/74117621-24415000-4b6d-11ea-8811-f867e187ea0c.png) + +## Changes to Start G-code +The `W` in Průša's `G28 W ; home all without mesh bed level` G-code does not exist in Marlin and [`G80 ; mesh bed leveling`](https://marlinfw.org/docs/gcode/G080.html) cancels the current motion mode, so no bed leveling will take place. + +### PrusaSlicer +Paste the start G-code block below in the Printer Settings tab's Custom G-code section. Use the Filament Settings tab's Custom G-code section to add the [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value since it can be saved on a per-filament basis. +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M104 S170 ; preheat extruder to 170 +M140 S[first_layer_bed_temperature] ; set bed temp +M190 S[first_layer_bed_temperature] ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S[first_layer_temperature] ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` + +### Cura +Paste the start G-code block below in the Start G-code section. Don't forget to add your [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value in the start G-code block below: +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M900 K0.0 ; place your linear advance value here +M104 S170 ; preheat extruder to 170 +M140 S{material_bed_temperature_layer_0} ; set bed temp +M190 S{material_bed_temperature_layer_0} ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S{material_print_temperature_layer_0} ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` + +### Simplify3D +Paste the start G-code block below in the Starting Script section. Don't forget to add your [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value in the start G-code block below: +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M900 K0.0 ; place your linear advance value here +M104 S170 ; preheat extruder to 170 +M140 S[bed0_temperature] ; set bed temp +M190 S[bed0_temperature] ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S[extruder0_temperature] T0 ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` \ No newline at end of file diff --git a/config/examples/Sovol/SV-01/_Bootscreen.h b/config/examples/Sovol/SV-01/_Bootscreen.h new file mode 100644 index 0000000000..9080fe8f8b --- /dev/null +++ b/config/examples/Sovol/SV-01/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Sovol/SV-01" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000011,B11100100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B11110000,B00111111,B11111111,B00000000, + B00000100,B00011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000011,B00011100,B00000111,B10000001,B11000000, + B00001000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000011,B00001110,B00000111,B10000000,B11100000, + B00010000,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000011,B00001110,B00000111,B10000000,B01110000, + B00010000,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000011,B00001110,B00000111,B10000000,B01110000, + B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00001110,B00000111,B10000000,B00111000, + B00011100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00001110,B00000111,B10000000,B00111000, + B00011111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00001100,B00000111,B10000000,B00111000, + B00001111,B11111000,B00000011,B11100001,B11111000,B01111000,B00111110,B00000001,B10000000,B00000000,B00010000,B00000111,B10000000,B00111100, + B00000111,B11111100,B00001100,B00110000,B01110000,B00000000,B11000011,B00000001,B10000000,B00000001,B11110000,B00000111,B10000000,B00111100, + B00000001,B11111110,B00011100,B00011000,B01110000,B00100001,B11000001,B10000001,B10000000,B00000000,B00011100,B00000111,B10000000,B00111100, + B00000000,B00011110,B00011100,B00011100,B00111000,B00000001,B11000001,B11000001,B10000000,B00000000,B00001110,B00000111,B10000000,B00111100, + B00000000,B00000110,B00111100,B00011100,B00111000,B01000011,B11000001,B11000001,B10000000,B00000000,B00000111,B00000111,B10000000,B00111000, + B00000000,B00000010,B00111100,B00011100,B00011100,B00000011,B11000001,B11000001,B10000000,B00000000,B00000111,B00000111,B10000000,B00111000, + B00000000,B00000010,B00111100,B00011100,B00011100,B10000011,B11000001,B11000001,B10000000,B00000000,B00000111,B00000111,B10000000,B00111000, + B00010000,B00000010,B00111100,B00011100,B00001110,B00000011,B11000001,B11000001,B10000000,B00000111,B00000111,B00000111,B10000000,B01110000, + B00010000,B00000010,B00011100,B00011100,B00001111,B00000001,B11000001,B11000001,B10000000,B00000111,B00000111,B00000111,B10000000,B01110000, + B00011000,B00000100,B00011100,B00011000,B00000110,B00000001,B11000001,B10000001,B10000000,B00000110,B00001110,B00000111,B10000000,B11100000, + B00011100,B00001000,B00001100,B00110000,B00000110,B00000000,B11000011,B00000001,B10000000,B00000010,B00001100,B00000111,B10000001,B11000000, + B00010011,B11110000,B00000011,B11100000,B00000000,B00000000,B00111110,B00000111,B11100000,B00000001,B11110000,B00111111,B11111111,B00000000 +}; diff --git a/config/examples/Sovol/SV-01/_Statusscreen.h b/config/examples/Sovol/SV-01/_Statusscreen.h new file mode 100644 index 0000000000..1e2b8c21cf --- /dev/null +++ b/config/examples/Sovol/SV-01/_Statusscreen.h @@ -0,0 +1,52 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Sovol/SV-01" + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 32 + +const unsigned char status_logo_bmp[] PROGMEM = { + B00011110,B11110111,B10011100,B00000100, + B00111111,B01100011,B00111110,B00001100, + B01100011,B01100011,B01100011,B00111100, + B01100000,B01100011,B01100011,B00001100, + B01100000,B01100011,B01100011,B00001100, + B00111100,B01100011,B01100011,B00001100, + B00011110,B00110110,B01100011,B00001100, + B00000011,B00110110,B01100011,B00001100, + B00000011,B00110110,B01100011,B00001100, + B01100011,B00011100,B01100011,B00001100, + B01111110,B00011100,B00111110,B00111111, + B00111100,B00001000,B00011100,B00111111 +}; diff --git a/config/examples/Tevo/Michelangelo/_Bootscreen.h b/config/examples/Tevo/Michelangelo/_Bootscreen.h new file mode 100644 index 0000000000..79b154e63f --- /dev/null +++ b/config/examples/Tevo/Michelangelo/_Bootscreen.h @@ -0,0 +1,85 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Tevo/Michelangelo" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111, + B00000000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111, + B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111, + B00000000,B00000000,B00000001,B11111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11111111, + B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111, + B00000000,B00000000,B00011111,B11111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111111, + B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11111111,B11111111,B11111111, + B00000000,B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111, + B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B00111111,B11111011,B11111111,B11110000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00011111,B11111101,B11111111,B11111000,B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00001111,B11111110,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11110000,B00000011,B11111111,B01101111,B11011100,B01111111,B10111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00111111,B11100111,B11001110,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11000000,B00000000,B00001111,B11000111,B11000110,B00000000,B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11000000,B00000000,B00000011,B11100011,B11100000,B00000000,B00000001,B11111111,B11111111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B10000000,B00000000,B00000001,B11110011,B11100000,B00000000,B00000111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B01110001,B11100000,B00000000,B00011111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00110001,B11100000,B00000000,B00011111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B11101110,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001101,B11001110,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11001110,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001101,B11001110,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001101,B10000100,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01100000,B11000110,B00000000,B01110000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110001,B11100110,B00000000,B01110000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B11110001,B11100000,B00000000,B01110000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111011,B11100000,B00000000,B01110000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111111,B11100110,B00011111,B01110111,B00001111,B10001110,B11111100,B01111111,B00011111,B11100111,B11000111,B00011111,B00000000,B00000000, + B00000000,B00000000,B11111111,B11100110,B00111111,B01111111,B10011111,B11001110,B11111110,B01111111,B00111111,B11101111,B11100111,B00111111,B10000000,B00000000, + B00000000,B00000000,B11101110,B11100110,B01111011,B01111111,B10011000,B11001110,B11001110,B01111111,B10111101,B11101100,B01100111,B01111011,B11000000,B00000000, + B00000000,B00000000,B11101110,B11100110,B01110000,B01110011,B10111111,B11101110,B00111110,B01110011,B10110000,B11011111,B11110111,B01110001,B11000000,B00000000, + B00000000,B00000000,B11100100,B11100110,B01100000,B01110011,B10111111,B11101110,B11111110,B01110011,B10110000,B11011111,B11110111,B01110001,B11000000,B00000000, + B00000000,B00000000,B11100100,B11100110,B01100000,B01110011,B10011000,B00001110,B11001110,B01110011,B10110000,B11001100,B00000111,B01110001,B11000000,B00000000, + B00000000,B00000000,B11100000,B11100110,B01110000,B01110011,B10011000,B00001110,B11001110,B01110011,B10111001,B11001100,B00000111,B01110001,B11000000,B00000000, + B00000000,B00000000,B11100000,B11100110,B01111111,B01110011,B10011111,B11001110,B11111110,B01110011,B10111111,B11101111,B11100111,B01111111,B11000000,B00000000, + B00000000,B00000000,B11100000,B11100110,B00111111,B01110011,B10001111,B11001110,B11111110,B01110011,B10011111,B11100111,B11100111,B00111111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001110,B00110001,B10000111,B00001100,B01110110,B01100011,B00111001,B11000011,B10000110,B00001110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B10000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Tevo/Nereus/_Bootscreen.h b/config/examples/Tevo/Nereus/_Bootscreen.h new file mode 100644 index 0000000000..04478fcc6b --- /dev/null +++ b/config/examples/Tevo/Nereus/_Bootscreen.h @@ -0,0 +1,92 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Tevo/Nereus" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 120 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11111111,B11111111,B11100011,B11111111,B11111111,B11111111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11000111,B11111111,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111111,B11111111,B10001111,B11111111,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111000,B00000000,B00011111,B11100011,B11111000,B11111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11110011,B11111100,B01111111,B00011111,B11000111,B11110001,B11111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111001,B11111110,B01111111,B10001111,B10001111,B11100011,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100,B11111111,B00111111,B11000111,B00011111,B11000111,B11110000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111110,B01111111,B10011111,B11100010,B00111111,B10001111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00111111,B11001111,B11110000,B01111111,B00011111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B10011111,B11000111,B11111000,B11111110,B00111111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B10001111,B11100011,B11111101,B11111100,B01111111,B10000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11000111,B11110001,B11111111,B11111000,B11111111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11100011,B11111000,B11111111,B11111001,B11111110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11110001,B11111100,B01111111,B11110011,B11111100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111000,B11111110,B00111111,B11100111,B11111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111100,B01111111,B00011111,B11000111,B11110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00111111,B10001111,B11100011,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011111,B11000111,B11110001,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B10001111,B11100011,B11111000,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11001111,B11110001,B11111100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100111,B11111001,B11111110,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11110011,B11110001,B11111100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111001,B11100011,B11111000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111100,B11000111,B11110000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111110,B00001111,B11100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00011111,B11000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B00111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11100000,B00000111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B11111110,B00000000,B00110000,B00000011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00111111,B10000000,B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B01111100,B00000000,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000011,B11100000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00011111,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11100000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111100,B00000000,B00000000,B00000000,B00011100,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11100000,B00000000,B00000000,B00000000,B00111000,B00000011,B11111100,B00000000,B00000000,B00000011,B10000000,B00000000,B00011111,B10000000, + B00000011,B11000000,B00000000,B00000000,B00000000,B00111000,B00000111,B10011100,B00000000,B00011111,B00000111,B11000000,B00000111,B11111011,B10000000, + B00000111,B10000000,B00000000,B00000000,B00000000,B01110000,B00001110,B00111000,B00000000,B01111111,B00001111,B11100000,B00000111,B11100001,B11000000, + B00000111,B00000000,B00000000,B00000000,B00000000,B11100000,B00011100,B11110000,B00000001,B11100111,B00001110,B01111100,B00011111,B10000011,B11000000, + B00000011,B00000000,B00000000,B00000000,B00000000,B11100000,B00111111,B11000000,B00000111,B10000111,B00011100,B00011111,B11111110,B00000111,B10000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11000000,B00111111,B00000000,B00011110,B00000110,B00111000,B00000011,B11111100,B00001111,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00111100,B00000000,B11111000,B00001110,B01110000,B00000111,B10011000,B00111110,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B10000000,B00111100,B00001111,B11000000,B00001111,B11100000,B00000100,B00111000,B11111000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00011111,B11111111,B00000000,B00001111,B10000000,B00000000,B00111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000111,B11100000,B00000000,B00000110,B00000000,B00000000,B00011110,B00000000,B00000000 +}; diff --git a/config/examples/Tevo/Tarantula Pro/_Bootscreen.h b/config/examples/Tevo/Tarantula Pro/_Bootscreen.h new file mode 100644 index 0000000000..2f61be1695 --- /dev/null +++ b/config/examples/Tevo/Tarantula Pro/_Bootscreen.h @@ -0,0 +1,82 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Tevo/Tarantula Pro" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x48 C/C++ data + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010010,B00000000,B10011000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100100,B00000000,B11001000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01101100,B00000000,B01001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11001000,B00000000,B01100100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B10011000,B00000000,B00100110,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10010000,B00000000,B00110011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B00110000,B00000000,B00011011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00110000,B00000000,B00011001,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000010,B00000000,B00001000,B00000000,B00000000,B00000000,B00000010,B00000011,B00110000,B00000000,B00011001,B10000000,B00000000,B00000001,B00000000, + B00000011,B11100010,B00111110,B00001100,B01100111,B01111101,B10011001,B10000011,B00000011,B01110000,B00000000,B00001001,B10000011,B11000111,B11000111,B10000000, + B00000011,B11100110,B00111111,B00011100,B01100111,B01111101,B10011001,B10000111,B00000110,B01110000,B00000000,B00011100,B11000011,B11100111,B11001110,B11000000, + B00000001,B10000111,B00111011,B10011100,B01100011,B00110001,B10011001,B10000111,B10000110,B01110000,B00000000,B00011100,B11000011,B01110110,B11101100,B11000000, + B00000001,B10001111,B00111001,B10011110,B01110011,B00110001,B10011001,B10000111,B10000110,B01111100,B00000000,B01111100,B11000011,B00110110,B01101100,B11000000, + B00000001,B10001111,B00111001,B10011110,B01111111,B00110001,B10011001,B10000111,B10000110,B01001111,B00000001,B11100000,B11000011,B00110110,B01101100,B11100000, + B00000001,B10001111,B10111011,B00110110,B01111111,B00110001,B10011001,B10000111,B10000111,B00000011,B00000001,B10000001,B11000011,B01100110,B11101100,B11100000, + B00000001,B10011001,B10111111,B00110110,B01111111,B00110001,B10011001,B10001100,B10000111,B11111101,B11111111,B01111111,B11000011,B11100111,B11001100,B11100000, + B00000001,B10011001,B10111110,B00110110,B01101111,B00110001,B10011001,B10001100,B11000110,B00111110,B11111111,B11111001,B11000011,B11000111,B11001100,B11100000, + B00000001,B10011111,B10111011,B00111111,B01100111,B00110001,B10011001,B10001111,B11000100,B00000001,B11111111,B00000000,B01000011,B00000110,B11001100,B11000000, + B00000001,B10011111,B10111011,B00111111,B01100111,B00110001,B10011001,B10001111,B11000000,B11110001,B11111111,B00011110,B00000011,B00000110,B11001100,B11000000, + B00000001,B10011001,B10111011,B10110011,B01100011,B00110001,B11111011,B11001100,B11000000,B11111111,B11111111,B11111110,B00000011,B00000110,B11101111,B11000000, + B00000001,B10011001,B10111011,B11100011,B01100001,B00110000,B11110011,B11111100,B11000001,B11111011,B11111111,B10111111,B00000011,B00000110,B11100111,B10000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10011111,B11111111,B11110011,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00111100,B11111110,B01111000,B11100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B00111001,B11111111,B00111000,B01111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111000,B00110001,B11111111,B00011000,B00111110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11110000,B00110011,B11111111,B00011000,B00011110,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00110011,B11111111,B10011000,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B01110011,B11111111,B00001100,B00001100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B11100001,B11111111,B00001110,B00011100,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01110000,B11110001,B11111111,B00001110,B00011000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01110001,B11111111,B00011100,B00011000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01110001,B11111111,B00011100,B00011000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B00110000,B11111110,B00011000,B00010000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00110000,B11111110,B00011000,B00010000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00110000,B01111100,B00011000,B00110000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00110000,B01111100,B00011000,B00100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00010000,B01111000,B00010000,B00100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B00111000,B00110000,B01000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00011000,B00010000,B00110000,B01000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00011000,B00000000,B00110000,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00011000,B00000000,B00110000,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00000000,B00100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00000000,B00100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00000000,B00100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00000000,B00100000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00000000,B01000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h b/config/examples/Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h new file mode 100644 index 0000000000..8836f2672b --- /dev/null +++ b/config/examples/Tevo/Tornado/V1 (MKS Base)/_Bootscreen.h @@ -0,0 +1,87 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Tevo/Tornado/V1 (MKS Base)" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_TIMEOUT 1500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00011111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111110,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B00000000,B00000000,B00000000,B00000011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11100000,B01111111,B11000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00011111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000000,B00000000,B00000000,B00000000,B00011110,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011110,B00000000,B00000000,B00000000,B00000000,B00000111,B11001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00010000,B11111100,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00010000,B00011111,B11111000,B00000000,B00000011,B11111110,B00111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011000,B00000000,B01111111,B11111111,B11111111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011100,B00000000,B00000000,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001110,B00000000,B00000000,B00000000,B00000000,B00011111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B10000000,B00000000,B00000000,B00000010,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11100000,B00000000,B00000000,B00001111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B00000000,B00000000,B11111111,B11100111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000100,B00000000,B00000011,B11100000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01100000,B00000000,B00000000,B00000000,B01111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00110000,B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011100,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B10000000,B00000000,B11111110,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01000000,B00000001,B00000000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11110110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B10000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B01110000,B00000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00000000,B00111000,B00000000,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000000,B00001100,B00000111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00001100,B00110000,B00000000,B00000000,B10000000,B00000000,B00110000,B00000000,B11111000,B00000111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110000,B00011111,B11011111,B11111110,B11111110,B01111000,B00110011,B11111000,B01100111,B11000011,B11111000, + B00000000,B00000000,B00000000,B00000000,B11100000,B01111111,B11111111,B11111111,B01111110,B11111000,B11111111,B11110001,B11111111,B11000111,B11111100, + B00000000,B00000000,B00000000,B00000011,B11000001,B11111111,B11111111,B11011111,B10111111,B11111101,B11111111,B11110011,B11111111,B11001111,B11111110, + B00000000,B00000000,B00000000,B00000111,B01100001,B11111111,B11100111,B10111111,B10111111,B11111101,B11111111,B11110111,B11111111,B11011111,B11111110, + B00000000,B00000000,B00000000,B00000000,B01100001,B11100000,B01100111,B10111111,B10111111,B11111111,B11111111,B11110111,B11111111,B11111110,B00001110, + B00000000,B00000000,B00000000,B00000001,B11000001,B11000000,B01100111,B10111111,B00111111,B01111011,B10000001,B11100111,B00000111,B10111000,B00001110, + B00000000,B00000000,B00000000,B00011111,B10000001,B10000001,B11100111,B11000000,B00111110,B01111011,B11101111,B11100111,B11111111,B10111000,B00011100, + B00000000,B00000000,B00000000,B00001111,B00000001,B11111111,B11100111,B11100000,B00011110,B01111011,B11111111,B11111111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00111111,B10000000,B11111111,B11001111,B11111000,B01111110,B01111011,B11111111,B11111111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00111111,B00000000,B01111111,B10011111,B11111000,B01111110,B01111001,B11111111,B11111011,B11110111,B11101111,B11111000, + B00000000,B00000000,B00000000,B00011111,B00000000,B00111111,B00011110,B00000000,B00000010,B01111111,B11110001,B00000000,B00000100,B00000011,B11110000, + B00000000,B00000000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h b/config/examples/Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h new file mode 100644 index 0000000000..325b38d565 --- /dev/null +++ b/config/examples/Tevo/Tornado/V2 (MKS GEN-L)/_Bootscreen.h @@ -0,0 +1,87 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Tevo/Tornado/V2 (MKS GEN-L)" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ +#define CUSTOM_BOOTSCREEN_TIMEOUT 1500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00011111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11111111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111110,B00000000,B00001111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B00000000,B00000000,B00000000,B00000011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11100000,B01111111,B11000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00011111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111100,B00000000,B00000000,B00000000,B00000000,B00011110,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011110,B00000000,B00000000,B00000000,B00000000,B00000111,B11001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000000,B00000000,B00000000,B00000000,B00000111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00010000,B11111100,B00000000,B00000000,B00000000,B00011111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00010000,B00011111,B11111000,B00000000,B00000011,B11111110,B00111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011000,B00000000,B01111111,B11111111,B11111111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011100,B00000000,B00000000,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001110,B00000000,B00000000,B00000000,B00000000,B00011111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B10000000,B00000000,B00000000,B00000010,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11100000,B00000000,B00000000,B00001111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111000,B00000000,B00000000,B11111111,B11100111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000100,B00000000,B00000011,B11100000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01100000,B00000000,B00000000,B00000000,B01111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00110000,B00000000,B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011100,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B10000000,B00000000,B11111110,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B01000000,B00000001,B00000000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B11110110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B10000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01000000,B00000000, + B00000000,B00000000,B01110000,B00000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000, + B00000000,B00000000,B00111000,B00000000,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11000000,B00000000, + B00000000,B00000000,B00001100,B00000111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00001100,B00110000,B00000000,B00000000,B10000000,B00000000,B00110000,B00000000,B11111000,B00000111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B01110000,B00011111,B11011111,B11111110,B11111110,B01111000,B00110011,B11111000,B01100111,B11000011,B11111000, + B00000000,B00000000,B00000000,B00000000,B11100000,B01111111,B11111111,B11111111,B01111110,B11111000,B11111111,B11110001,B11111111,B11000111,B11111100, + B00000000,B00000000,B00000000,B00000011,B11000001,B11111111,B11111111,B11011111,B10111111,B11111101,B11111111,B11110011,B11111111,B11001111,B11111110, + B00000000,B00000000,B00000000,B00000111,B01100001,B11111111,B11100111,B10111111,B10111111,B11111101,B11111111,B11110111,B11111111,B11011111,B11111110, + B00000000,B00000000,B00000000,B00000000,B01100001,B11100000,B01100111,B10111111,B10111111,B11111111,B11111111,B11110111,B11111111,B11111110,B00001110, + B00000000,B00000000,B00000000,B00000001,B11000001,B11000000,B01100111,B10111111,B00111111,B01111011,B10000001,B11100111,B00000111,B10111000,B00001110, + B00000000,B00000000,B00000000,B00011111,B10000001,B10000001,B11100111,B11000000,B00111110,B01111011,B11101111,B11100111,B11111111,B10111000,B00011100, + B00000000,B00000000,B00000000,B00001111,B00000001,B11111111,B11100111,B11100000,B00011110,B01111011,B11111111,B11111111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00111111,B10000000,B11111111,B11001111,B11111000,B01111110,B01111011,B11111111,B11111111,B11111111,B11111111,B11111100, + B00000000,B00000000,B00000000,B00111111,B00000000,B01111111,B10011111,B11111000,B01111110,B01111001,B11111111,B11111011,B11110111,B11101111,B11111000, + B00000000,B00000000,B00000000,B00011111,B00000000,B00111111,B00011110,B00000000,B00000010,B01111111,B11110001,B00000000,B00000100,B00000011,B11110000, + B00000000,B00000000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Tronxy/X5SA/HOWTO-INSTALL.md b/config/examples/Tronxy/X5SA/HOWTO-INSTALL.md new file mode 100644 index 0000000000..7e2eaeed72 --- /dev/null +++ b/config/examples/Tronxy/X5SA/HOWTO-INSTALL.md @@ -0,0 +1,256 @@ +# Table of Contents +- [Save Printer Settings (Optional, but recommended)](#save-printer-settings-optional-but-recommended) +- [Configuring Marlin for your Printer](#configuring-marlin-for-your-printer) + - [1. Board Version](#1-board-version) + - [2. Bed size](#2-bed-size) + - [3. Stepper Drivers](#3-stepper-drivers) + - [4. Steps / mm](#4-steps--mm) + - [5. Other Marlin Config](#5-other-marlin-config) +- [Backup your Chitu Firmware (Optional, but strongly recommended)](#backup-your-chitu-firmare-optional-but-strongly-recommended) +- [Flashing Marlin JUST USING SD](#flashing-marlin-just-using-sd) +- [Flashing Marlin Firmware MANUALLY (OBSOLETE!)](#flashing-marlin-firmware-manually-obsolete) +- [Known Issues](#known-issues) + +# Save Printer Settings (Optional, but recommended) + +You can (OR MUST) dump the current settings of your printer. It may help you to figure out some configs, like steps/mm of your extruder. + +1. Create a file named `savesettings.gcode` with the following content: +``` +M6046 ; sdcard access +M8512 "currentconfig.gcode" ; save settings to file +``` +2. Save it on the printer's SD card +3. Put the card in the printer and "print" this file +4. The printer won't do anything. Just wait a few seconds and stop the print. +5. Your current printer settings are stored in the file: `currentconfig.gcode` + +You can read more about it in [this guide](https://www.facebook.com/notes/tronxy-turnigy-x5s-x5sa-x3s-3d-printer-drucker-users/tronxy-firmware-configuration-guide-by-keith-varin-addermk264bit-tuning/649799805579765/). + +Thanks to KEITH VARIN. + +# Configuring Marlin for your Printer + +You need to edit `Configuration.h` to set up your printer. + +## 1. Board Version + +For ***V5*** and ***V8*** + +```cpp +// For V5 and V8 +#define MOTHERBOARD BOARD_CHITU3D_V5 +``` + +For ***V6*** + +```cpp +// For V6 +#define MOTHERBOARD BOARD_CHITU3D_V6 +``` + +## 2. Bed size + +```cpp +// The size of the print bed +#define X_BED_SIZE 330 +#define Y_BED_SIZE 330 +... +#define Z_MAX_POS 400 +``` + +## 3. Stepper Drivers + +Some Pro models have TMC drivers. The non-Pro models have generic A4988 drivers. + +Non-Pro (without TMC Drivers): + +```cpp +/** + * Stepper Drivers + * ... + */ +#define X_DRIVER_TYPE A4988 +#define Y_DRIVER_TYPE A4988 +#define Z_DRIVER_TYPE A4988 +//#define X2_DRIVER_TYPE A4988 +//#define Y2_DRIVER_TYPE A4988 +//#define Z2_DRIVER_TYPE A4988 +//#define Z3_DRIVER_TYPE A4988 +//#define Z4_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE A4988 +//#define E1_DRIVER_TYPE A4988 +//#define E2_DRIVER_TYPE A4988 +//#define E3_DRIVER_TYPE A4988 +//#define E4_DRIVER_TYPE A4988 +//#define E5_DRIVER_TYPE A4988 +//#define E6_DRIVER_TYPE A4988 +//#define E7_DRIVER_TYPE A4988 +``` + +Pro (with TMC Drivers): + +```cpp +/** + * Stepper Drivers + * ... + */ +#define X_DRIVER_TYPE TMC2208_STANDALONE +#define Y_DRIVER_TYPE TMC2208_STANDALONE +#define Z_DRIVER_TYPE TMC2208_STANDALONE +//#define X2_DRIVER_TYPE A4988 +//#define Y2_DRIVER_TYPE A4988 +//#define Z2_DRIVER_TYPE A4988 +//#define Z3_DRIVER_TYPE A4988 +//#define Z4_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE TMC2208_STANDALONE +//#define E1_DRIVER_TYPE A4988 +//#define E2_DRIVER_TYPE A4988 +//#define E3_DRIVER_TYPE A4988 +//#define E4_DRIVER_TYPE A4988 +//#define E5_DRIVER_TYPE A4988 +//#define E6_DRIVER_TYPE A4988 +//#define E7_DRIVER_TYPE A4988 +``` + +## 4. Steps / mm + +All machines have the same steps for X, Y and Z, and only extruder steps are different (Titan vs. normal). + +***! This part can vary from machine to machine !*** + +One way to know the correct values is to read your `currentconfig.gcode` (saved later): + +- `M8009` is the X and Y step/mm. +- `M8010` is the Z step/mm. +- `M8011` is the Extruder step/mm. + +Example: + +```gcode +M8009 S0.012500;x,y +M8010 S0.002500;z +M8011 S0.010799;e +``` + +Is equal to: + +```gcode +x,y = 1 / 0.012500 = 80 +z = 1 / 0.002500 = 400 +e = 1 / 0.010799 = 92.60 +``` + +So in Marlin: +```cpp +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 92.6 } +``` + +Check your values! + +Normal non-TMC: +```cpp +/** + * Default Axis Steps Per Unit (steps/mm) + * Override with M92 + * X, Y, Z, E0 [, E1[, E2...]] + */ +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 92.6 } +``` +Titan Non-PRO: +```cpp +/** + * Default Axis Steps Per Unit (steps/mm) + * Override with M92 + * X, Y, Z, E0 [, E1[, E2...]] + */ +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 420 } + +// Extruder seems inverted on titan! +#define INVERT_E0_DIR true +``` +Titan PRO (tmc): +```cpp +/** + * Default Axis Steps Per Unit (steps/mm) + * Override with M92 + * X, Y, Z, E0 [, E1[, E2...]] + */ +#define DEFAULT_AXIS_STEPS_PER_UNIT { 160, 160, 800, 764 } + +// Extruder seems inverted on titan! +#define INVERT_E0_DIR true +``` + +## 5. Other Marlin Config + +You can customize for your own setup. TFT, Baby Steps and a lot of cool stuff are already configured for you. + +# Backup your Chitu Firmare (Optional, but strongly recommended) + +1. Turn off your printer +2. Open your board case +3. Remove the "boot" jumper (1) as the image. +4. Change the "v source" jumper (2) from 5V to USB. +5. Open [STM Cube Programmer](https://www.st.com/en/development-tools/stm32cubeprog.html) (linux, mac, windows) or [FLASHER-STM32](https://www.st.com/en/development-tools/flasher-stm32.html) (only windows) +6. The size must be **512kb -> 0x80000** +7. Save the file. It must have exactly 524288 bytes (512kb) +8. Disconnect +10. Unplug USB cable +11. Put back the "boot" jumper (1). +12. Put back the "v source" jumper to 5V. + + +# Flashing Marlin JUST USING SD + +Thanks to the amazing work of J.C. Nelson, now we can just use Marlin updating directly from SD!! + +1. After you compile Marlin with the above instructions, it will generate a file: `YOUR-MARLIN-DIR/.pio/build/chitu_f103/update.cbd` +2. Turn off your printer +3. Copy the `update.cbd` file to SD card. +4. Put the SD card in your printer. +5. Power it on. +6. It will give some bips. After that, Marlin will start! + +SIMPLE AS THAT! + +Again, thanks to J.C. Nelson @xC000000 + +***If you already flashed Marlin the old way then you need restore your Chitu backup to use this method. This will make all your future installs easier.*** + +# Flashing Marlin Firmware MANUALLY (OBSOLETE!) + +OBSOLETE! JUST USE THE FIRST METHOD. + +1. Turn off the printer +2. Open the board case +3. Remove the "boot" jumper (1) as the image. +4. Change the V source jumper (2) from 5V to USB. +5. Open [STM Cube Programmer](https://www.st.com/en/development-tools/stm32cubeprog.html) (linux, mac, windows) or [FLASHER-STM32](https://www.st.com/en/development-tools/flasher-stm32.html) (only windows) +6. Flash the YOUR-MARLIN-DIR/.pio/build/chitu_f103/firmware.bin at 0x08000000 +7. After the Flash is done, put the back the boot jumper (1) and the V source jumper to 5V. +8. Turn on the printer + +![alt text](./chitu-board.jpg) + +# Known Issues + +Some random V5 boards have a problem with the PIN that the Z-MIN Probe is connected to, causing the probe to appear triggered all the time. Due to this issue the probe always fails. + +If you have this issue, edit the file: `Marlin/buildroot/share/PlatformIO/variants/CHITU_F103/wirish/boards_setup.cpp` + +Change these lines: +```cpp +__weak void board_setup_gpio(void) { + gpio_init_all(); +} +``` +To: +```cpp +__weak void board_setup_gpio(void) { + GPIOA->regs->BSRR = (1U << PA14); + gpio_init_all(); +} +``` + +A patch may already have been applied to Marlin by the time you read this. diff --git a/config/examples/Tronxy/X5SA/chitu-board.jpg b/config/examples/Tronxy/X5SA/chitu-board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91b34cc86c22763a0d76fbfeb5fd6be994e09816 GIT binary patch literal 228480 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 z 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�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

e3OQZN_6>-1|+qj{kTZhdQ`W;-Uxp z=Rrf^I12y{tRwm`&iKuM`UzuJ+NMi-5HJK=swvU|O%@NA4jY2R2vYdCZ9#7Zg(Jcp z1C<5kKOg`IwpKb>d06-gcs&TC2hrmAfuDje0!swzC_&c&%Z!!>kcmYXCjSjJz@-2# zss%_1!VR8o1xm!dRs?9g01FS+4@|*i%eyPl?Z9_S#L&GEREG3Pg3R0-<$4}SGtk8d zV-l!B-1mX+KfsU4~1s?_`6^mK2wfI}Ksrb$bu@BNG_;9pV z`1_VufL0^d4EqJG7?SuS2(7mFyegMlq04{sp5Rs>4naEu7p`I{AgM)jdsoT6=fubrNw3r*%THGMRXju=e6|eZUGSn5F;7$@U=V-Jx zF)KqOWsp=+!F5kT`++tF*(k_}z{a3u&9smra9Hwd;Q}$n%>&Mx!HaRzZFz)1Zrs@& z1I2>dLs$~+ujNMqgCAPM*TWM$Hi2*3j;|7EFxoTRiXAyNG2;q4YsOUs^xF+gA^1uj z+&(hQ7G4H9SR_s!@C`_(E{*RP5nTi>acE6&G6__V4ASvBM_~m|fCq+sM5r^MNRtd3 ifn*!s0E;hlgVI7#8c-qdEr${@W=}@reBhUU`F{ZHy43vu literal 0 HcmV?d00001 diff --git a/config/examples/VORONDesign/_Bootscreen.h b/config/examples/VORONDesign/_Bootscreen.h new file mode 100644 index 0000000000..4bed37bb45 --- /dev/null +++ b/config/examples/VORONDesign/_Bootscreen.h @@ -0,0 +1,84 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "VORONDesign" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11111111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111110,B00111111,B00011111,B11110011,B10000000,B00011100,B00111111,B11110000,B00111111,B11111000,B00000111,B11111110,B00000111,B10000000,B00110000, + B00111111,B11111100,B01111110,B00111111,B11110011,B10000000,B00011100,B01111111,B11111100,B00111111,B11111100,B00001111,B11111111,B10000111,B11000000,B00110000, + B00111111,B11111100,B11111100,B01111111,B11110001,B11000000,B00011100,B11110000,B00011100,B00111000,B00011110,B00011110,B00000011,B10000111,B11100000,B00110000, + B00111111,B11111000,B11111100,B01111111,B11110001,B11000000,B00111000,B11100000,B00001110,B00111000,B00001110,B00011100,B00000001,B11000111,B11100000,B00110000, + B00111111,B11110001,B11111000,B11111111,B11110001,B11000000,B00111000,B11100000,B00001110,B00111000,B00001110,B00011100,B00000001,B11000111,B01110000,B00110000, + B00111111,B11110011,B11111001,B11111111,B11110000,B11100000,B00110000,B11100000,B00001110,B00111000,B00001110,B00011100,B00000001,B11000111,B01111000,B00110000, + B00111111,B11100011,B11110001,B11111111,B11110000,B11100000,B01110000,B11100000,B00001110,B00111000,B00001110,B00011100,B00000001,B11000111,B00111000,B00110000, + B00111111,B11000111,B11100011,B11111111,B11110000,B01110000,B01110000,B11100000,B00001110,B00111000,B00011110,B00011100,B00000001,B11000111,B00011100,B00110000, + B00111111,B11001111,B11100111,B11111111,B11110000,B01110000,B11100000,B11100000,B00001110,B00111111,B11111100,B00011100,B00000001,B11000111,B00011110,B00110000, + B00111111,B11111111,B11000111,B11111111,B11110000,B01110000,B11100000,B11100000,B00001110,B00111111,B11110000,B00011100,B00000001,B11000111,B00001110,B00110000, + B00111111,B11111111,B10001111,B11111111,B11110000,B00111000,B11000000,B11100000,B00001110,B00111000,B11100000,B00011100,B00000001,B11000111,B00001111,B00110000, + B00111111,B11111111,B10011111,B11001111,B11110000,B00111001,B11000000,B11100000,B00001110,B00111000,B11110000,B00011100,B00000001,B11000111,B00000111,B00110000, + B00111111,B11111111,B00011111,B10001111,B11110000,B00111001,B11000000,B11100000,B00001110,B00111000,B01111000,B00011100,B00000001,B11000111,B00000011,B10110000, + B00111111,B11111110,B00111111,B00011111,B11110000,B00011101,B10000000,B11100000,B00001110,B00111000,B00111000,B00011100,B00000001,B11000111,B00000011,B11110000, + B00111111,B11111110,B01111111,B00111111,B11110000,B00011111,B10000000,B11110000,B00011110,B00111000,B00011100,B00011110,B00000011,B10000111,B00000001,B11110000, + B00111111,B11111100,B01111110,B00111111,B11110000,B00001111,B00000000,B01111110,B11111100,B00111000,B00011110,B00001111,B10011111,B10000111,B00000000,B11110000, + B00111111,B11111000,B11111100,B01111111,B11110000,B00001111,B00000000,B00111111,B11111000,B00111000,B00001110,B00000111,B11111111,B00000111,B00000000,B11110000, + B00111111,B11111001,B11111100,B11111111,B11110000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B11111000,B00000000,B00000000,B00000000, + B00111111,B11110001,B11111000,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111111,B11111111,B11111111,B11000011,B11110000,B00000001,B11110000,B00000000,B11110000,B00000000,B01100000,B00000001,B11110000,B00000011,B00010000, + B00000011,B11111111,B11111111,B11111111,B10000011,B00111000,B00000001,B10000000,B00000001,B10000000,B00000000,B01100000,B00000011,B00000000,B00000011,B00011000, + B00000000,B11111111,B11111111,B11111110,B00000011,B00011000,B00000001,B00000000,B00000001,B00000000,B00000000,B01100000,B00000010,B00000000,B00000011,B10011000, + B00000000,B01111111,B11111111,B11111000,B00000011,B00011000,B00000001,B11100000,B00000001,B11100000,B00000000,B01100000,B00000010,B01110000,B00000010,B11011000, + B00000000,B00011111,B11111111,B11110000,B00000011,B00011000,B00000001,B11100000,B00000000,B11110000,B00000000,B01100000,B00000010,B01110000,B00000010,B11011000, + B00000000,B00000111,B11111111,B11000000,B00000011,B00011000,B00000001,B00000000,B00000000,B00011000,B00000000,B01100000,B00000010,B00010000,B00000010,B01111000, + B00000000,B00000011,B11111111,B00000000,B00000011,B00011000,B00000001,B00000000,B00000000,B00010000,B00000000,B01100000,B00000010,B00010000,B00000010,B00111000, + B00000000,B00000000,B11111100,B00000000,B00000011,B11110000,B00000001,B11110000,B00000001,B11110000,B00000000,B01100000,B00000011,B11110000,B00000010,B00111000, + B00000000,B00000000,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Velleman/K8200/README.md b/config/examples/Velleman/K8200/README.md new file mode 100644 index 0000000000..3a10e9c723 --- /dev/null +++ b/config/examples/Velleman/K8200/README.md @@ -0,0 +1,20 @@ +# Example Configuration for Vellemann [K8200](http://www.k8200.eu/) +* Configuration files for **Vellemann K8200** (with [VM8201](http://www.vellemanprojects.eu/products/view/?id=416158) - LCD Option for K8200) +* K8200 is a 3Drag clone - configuration should work with 3Drag https://reprap.org/wiki/3drag, too. Please report. + +* updated manually with parameters from genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch + +* VM8201 uses "DISPLAY_CHARSET_HD44870 JAPANESE" and "ULTIMAKERCONTROLLER" +* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support + +I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.12 for Mac (SD library added to IDE manually), 2016-11-18 - everything works well. + +**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)** +* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_v2.1.1.zip + +* V2 (with LCD/SD-Support, date branched: 2013-06-05): [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv2.zip + +* V1 (without LCD/SD-Support, date branched: 2012-10-02): [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv1.zip diff --git a/config/examples/Velleman/K8400/Dual-head/README.md b/config/examples/Velleman/K8400/Dual-head/README.md new file mode 100644 index 0000000000..1ebdd16ef2 --- /dev/null +++ b/config/examples/Velleman/K8400/Dual-head/README.md @@ -0,0 +1,15 @@ +# Configuration for Velleman K8400 Vertex +http://www.k8400.eu/ + +Configuration files for the K8400, ported upstream from the official Velleman firmware. +Like its predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h. + +Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /src/config directory. + +**NOTE: This configuration includes the community sourced feed rate fix. Use 100% feed rate in Repetier!** + +For implementation and updated K8400 firmware, see https://github.com/birkett/Velleman-K8400-Firmware + +### Original Sources +Credit to Velleman for the original 1.0.x based code:
+http://www.vertex3dprinter.eu/downloads/files/vertex/firmware/vertex-m1-v1.4-h2.zip diff --git a/config/examples/Velleman/K8400/Single-head/README.md b/config/examples/Velleman/K8400/Single-head/README.md new file mode 100644 index 0000000000..1ebdd16ef2 --- /dev/null +++ b/config/examples/Velleman/K8400/Single-head/README.md @@ -0,0 +1,15 @@ +# Configuration for Velleman K8400 Vertex +http://www.k8400.eu/ + +Configuration files for the K8400, ported upstream from the official Velleman firmware. +Like its predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h. + +Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /src/config directory. + +**NOTE: This configuration includes the community sourced feed rate fix. Use 100% feed rate in Repetier!** + +For implementation and updated K8400 firmware, see https://github.com/birkett/Velleman-K8400-Firmware + +### Original Sources +Credit to Velleman for the original 1.0.x based code:
+http://www.vertex3dprinter.eu/downloads/files/vertex/firmware/vertex-m1-v1.4-h2.zip diff --git a/config/examples/WASP/PowerWASP/README.md b/config/examples/WASP/PowerWASP/README.md new file mode 100644 index 0000000000..9ae7646d36 --- /dev/null +++ b/config/examples/WASP/PowerWASP/README.md @@ -0,0 +1,72 @@ +# Modifications to PowerWASP firmware with a few extras +The later versions of the PowerWASP controller board have power loss detection on pin 65 (low on loss). this has been configured in POWER_LOSS_RECOVERY. Because of this there is no need to save each command line just in case of a power loss to the machine. The board will hold enough power to allow the print to be saved to the SD card. + +The retract position on finishing the print has been set at Z190 X0 Y0 + +There are provisions made here to use ESP3D wireless printer control. + +https://github.com/luc-github/ESP3D + +The original PowerWASP board has available a internal serial port connection with Arduino Serial3. +The connections are as follows: +``` +.------------.---------------------. +| | Serial3 | +| | [O] 5V | Front +| FAN | [O] GND | panel +| | [O] TX | side +| | [O] RX | +`------------´---------------------´ +``` + +With the option of wireless file upload to the SD card, the idea of updating the Firmware +from the SD can also be useful. This option has been selected, but requires a modified boot loader +that can be found here: + +https://github.com/rainerumrobotics/MicroBridge-Arduino-ATMega2560 + +USB and SDCARD Firmware flashing for the ARDUINO ATMEGA 2560 and ADK +--------------------------------------------------------------------- +The bootloader looks for byte in eeprom at address 0x3FF: + + -if it is set to 0xF0 bootloader will look for a bin file on the sdcard named + firmware.bin and use it to flash the firmware then reset the byte to 0xFF so it + does this only once + + -otherwise no action is taken and bootloader works as a arduino bootloader except + some of the debugging functions are missing + +Setup + + ADAFruit micro sdcard 5V ready: + + SDCARD on ATMEGA 2560 or ADK + + pin 50 - DO + + pin 51 - DI + + pin 52 - CLK + + pin 53 - CS + +Generate BIN file for firmware update: + +To generate a bin file you need issue the following command on you apps elf executable: + + avr-objcopy -I elf32-avr -O binary firmware.cpp.elf firmware.bin + +this generates firmware.bin which can be put on the sd for flashing your firmware. You can find the elf +file in you apps build directory. + +Using olimex usb to upload bootloader: + + avrdude -c stk500v2 -p m2560 -P /dev/tty.usbmodemfd131 -B 500 -e -u -U lock:w:0x3F:m -U efuse:w:0xFD:m -U hfuse:w:0xD8:m -U efuse:w:0xFF:m -F + + avrdude -p m2560 -c stk500v2 -P /dev/tty.usbmodemfa131 -F -U flash:w:stk500boot.hex -b 115200 -B1 -U lock:w:0x0F:m + + avrdude -p m168 -c usbtiny -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xDD:m -U lfuse:w:0xFF:m + + + avrdude -p m2560 -c stk500v2 -P /dev/tty.usbmodemfd131 -U flash:w:stk500boot_v2_mega2560.hex -U lock:w:0x0F:m -v + avrdude -c stk500v2 -p m2560 -P /dev/tty.usbmodemfd131 -U lock:w:0x3F:m -U efuse:w:0xFD:m -U hfuse:w:0xD8:m -U lfuse:w:0xFF:m -e -v diff --git a/config/examples/Wanhao/Duplicator i3 2.1/Chippy_Bootscreen.h b/config/examples/Wanhao/Duplicator i3 2.1/Chippy_Bootscreen.h new file mode 100644 index 0000000000..8625bad118 --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 2.1/Chippy_Bootscreen.h @@ -0,0 +1,74 @@ +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x64 pasted image + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000000,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000001,B00000000,B00000000,B00001111,B00000000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00001000,B10000000,B10000001,B00000000,B00000000,B00001000,B10000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B00001000,B10111101,B11000001,B00111100,B00011110,B00001000,B10111101,B00100000, + B00000000,B00000011,B00000000,B00000000,B00000011,B11111100,B01000000,B00000000,B00001111,B00100100,B10000001,B00100100,B00000010,B00001111,B00100101,B00100000, + B00000000,B00000011,B00000000,B00000000,B00000000,B00000100,B01111000,B00000000,B00001000,B10100100,B10011101,B00100101,B11011110,B11101000,B10100100,B11000000, + B00000000,B00000011,B00000000,B00000000,B00000000,B00000100,B00001000,B00000000,B00001000,B10100100,B10000001,B00100100,B00010010,B00001000,B10100101,B00100000, + B00000000,B00000011,B00111111,B11111111,B00000000,B00000100,B00001000,B00000000,B00001111,B00111100,B11000001,B00100100,B00011110,B00001111,B00111101,B00100000, + B00000000,B00000011,B00111111,B11111111,B11111111,B10000100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110000,B00000111,B11111111,B11000100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110000,B00000000,B00000000,B11000100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110011,B11000000,B00000000,B11000100,B00001000,B10000000,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110011,B11000000,B00000000,B11000100,B00001001,B10000000,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110011,B11000000,B00000000,B11000100,B00001011,B10000000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00110011,B11000001,B11111100,B11000100,B00001011,B10000000,B11100011,B11000010,B00000000,B00000000,B00000010,B00000000,B00000000,B00100000, + B00000000,B00000011,B00110011,B11000001,B11111100,B11000100,B00001011,B11100011,B11100010,B00000010,B00000000,B00000000,B00100000,B00000000,B00000000,B00100000, + B00000000,B00000011,B00110011,B11000001,B11111100,B11000100,B00001011,B11100011,B11100010,B00001110,B01001000,B11101111,B01110100,B11110011,B11001111,B00100000, + B00000000,B00000011,B00110011,B11000000,B00000000,B11000100,B00001001,B11111111,B11000011,B11010010,B01001001,B00000001,B00100100,B10010010,B01000001,B00100000, + B00000000,B00000011,B00110000,B00000000,B00000000,B11000100,B00001000,B11111111,B10000010,B00010010,B01001001,B00001111,B00100100,B10010010,B01001111,B00100000, + B00000111,B11111111,B00110000,B00000000,B00000000,B11000100,B00001000,B01111111,B00000010,B00010010,B01001001,B00001001,B00100100,B10010010,B01001001,B00100000, + B00001111,B11111111,B00110000,B00000000,B00000000,B11000100,B00001000,B00111100,B00000011,B11001110,B01111000,B11101111,B00110100,B11110010,B01001111,B00100000, + B00001111,B11111111,B00110000,B00000000,B00000000,B11000100,B00001000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B10000111,B00110001,B11000000,B00011100,B11000100,B01111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B00000111,B00110001,B11100000,B00111100,B11000100,B01111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B10000011,B00110000,B11111111,B11111000,B11000100,B01111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11000011,B00110000,B00111111,B11100000,B11001100,B01111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11100011,B00111111,B11000000,B00000000,B11001100,B01111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B11111000,B11110011,B00011111,B11111111,B00000000,B11001100,B00001000,B00000000,B00000000,B00000111,B00000000,B01000000,B00000000,B01000000,B00000000,B00000000, + B11111000,B01110011,B00000000,B11111111,B11111111,B11001100,B00001000,B00000000,B00000000,B00000100,B10000000,B01000000,B00000100,B00000000,B00000000,B00000000, + B11110000,B01110011,B00000000,B00000001,B11111111,B10001100,B00001000,B00000000,B00000000,B00000100,B10011110,B01110001,B11101110,B10001101,B11000000,B00000000, + B01110000,B01100011,B00000000,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000111,B00010010,B01001001,B00100100,B10010001,B00000000,B00000000, + B00100000,B01000011,B00000000,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000100,B10010010,B01001001,B00100100,B10010000,B11000000,B00000000, + B00000000,B00000011,B00011111,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000100,B10010010,B01001001,B00100100,B10010000,B01000000,B00000000, + B00000000,B00000011,B00010001,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000100,B10011110,B01110001,B11100110,B10001101,B11000000,B00000000, + B00000000,B00000011,B00010001,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00010001,B00000111,B00000000,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00011111,B00000111,B11111000,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00000000,B00000000,B01111111,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00000000,B00000000,B00000111,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B00000000,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11110000,B00000000,B00000000,B00001100,B00001000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111111,B10000000,B00000000,B00001100,B00010000,B00100000,B00000000,B00100000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111111,B11111000,B00000000,B00001100,B01100000,B00100000,B00000010,B00000000,B00000000,B10000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11000000,B00001100,B11100000,B00111000,B11110111,B01001111,B00111100,B11100011,B11010010,B00000111,B01111000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11111110,B00001101,B11100000,B00100100,B10010010,B01001001,B00000100,B10010010,B01010010,B00001000,B00001000,B00000000, + B00000000,B00000001,B11111111,B11111111,B11111111,B11111111,B11100000,B00100100,B10010010,B01001001,B00111100,B10010010,B01001100,B00001000,B01111000,B00000000, + B00000000,B00000000,B11111111,B11111111,B11111111,B11111111,B11100000,B00100100,B10010010,B01001001,B00100100,B10010010,B01010010,B00001000,B01001000,B00000000, + B00000000,B00000000,B00001111,B11111111,B11111111,B11111111,B11100000,B00111000,B11110011,B01001001,B00111100,B11100011,B11010010,B01000111,B01111000,B00000000, + B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B00000001,B10110110,B11011011,B01101101,B10110110,B11011011,B01101101,B10110110,B11011011,B00000000, + B00000000,B00000000,B00000000,B00000000,B00001111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010, + B00100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100 +}; diff --git a/config/examples/Wanhao/Duplicator i3 2.1/README.md b/config/examples/Wanhao/Duplicator i3 2.1/README.md new file mode 100644 index 0000000000..d2a7ea6401 --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 2.1/README.md @@ -0,0 +1,21 @@ +Configuration for the Wanhao Duplicator i3 v2.1 + +[Made by Bot-In-a-Box Educational Robotics](https://botinabox.ca) +[See original configuration repo](https://github.com/BotInABoxER/marlin2-for-wanhao-i3) + +Notes: +- YMMV, but the included thermistor table has been tested to work with a 100k bed thermistor with a 10K pull-up resistor +- The smaller Marlin logo is used to save memory +- You may have a 4.7K pull-up resistor, in which case the included thermistor table will be off +- The included thermistor table was generated with `buildroot/share/scripts/createTemperatureLookupMarlin.py --rp=10000` +- Includes an optional custom Wanhao logo bootscreen designed to fit the stock LCD +- Includes an optional custom Chippy from Bot-In-a-Box bootscreen designed to fit the stock LCD + +Inspirations: +- https://www.thingiverse.com/thing:3378807 (Custom firmware 1.x by Nitrogen777) +- https://www.thingiverse.com/thing:3378807 (Custom firmware 2.x by Remotheman) + +Instructions: +- Copy the `Configuration.h`, `_Bootscreen.h` (or `Chippy_Bootscreen.h`; rename it `_Bootscreen.h`), and `Configuration_adv.h` to the `Marlin/ directory` +- Copy the `thermistor_99.h` and `thermistors.h` files to the `Marlin/src/modules/thermistors` directory +- Flash the firmware onto your Melzi (https://www.fission3d.com/guides/flash-bootloader-and-install-firmware-with-raspberry-pi might help) diff --git a/config/examples/Wanhao/Duplicator i3 2.1/_Bootscreen.h b/config/examples/Wanhao/Duplicator i3 2.1/_Bootscreen.h new file mode 100644 index 0000000000..324e01d806 --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 2.1/_Bootscreen.h @@ -0,0 +1,72 @@ +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from 128x64 pasted image + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 104 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B00000000,B00000011,B11111111,B10111000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10111111,B10000000,B01111111,B11111111,B00111111,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B10111111,B11111111,B11111111,B11111111,B01111111,B11100000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B10111111,B11111111,B11111111,B11111110,B01111111,B11110000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B00111111,B11111111,B11111111,B11111100,B11111111,B11111000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B01111111,B11111111,B11111111,B11111101,B11111111,B11111110,B00111100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B01111111,B11111111,B11111111,B11111101,B11111111,B11111111,B11111111,B11000000, + B00000000,B00000000,B00000000,B00000000,B01111111,B11111110,B01111111,B11111111,B11111111,B11111101,B11111111,B11111111,B10000001,B11100000, + B00000000,B00000000,B00000000,B00000001,B11111111,B11111110,B11111111,B11111111,B11111111,B11111101,B11111111,B11111110,B00000000,B11111000, + B00000000,B00000000,B00000000,B00000011,B11111111,B11111110,B11111111,B11111111,B11111111,B11111101,B11111111,B11111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001111,B11111111,B11111110,B11111111,B11111111,B11111111,B11111101,B11111111,B11111110,B00000000,B00000000, + B00000000,B00000000,B00000000,B01101111,B11111111,B11111110,B11111111,B11111111,B11111111,B11111101,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000000,B00000001,B11101111,B11111111,B11111110,B11111111,B11111111,B11111111,B11111101,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000000,B01100111,B11001111,B11111111,B11111110,B01111111,B11111111,B11111111,B11111101,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000111,B01111111,B11011111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111100,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000111,B11111111,B11011111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111110,B11111111,B11111111,B00000000,B00000000, + B00000000,B00000011,B11111111,B11011111,B11111111,B11111111,B00111111,B11111111,B11111111,B11111110,B11111111,B11111111,B10000000,B00000000, + B00000000,B00000011,B11111111,B11001111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111110,B01111111,B11111111,B10000000,B00000000, + B00000000,B00000001,B11111111,B11101111,B11111111,B11111111,B10111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11000000,B00000000, + B00000000,B00000001,B11111111,B11101111,B11111111,B11111111,B10011111,B11111111,B11111111,B11111111,B01111111,B11111111,B11000000,B00000000, + B00000000,B00000001,B11111111,B11101111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B01111111,B11111111,B11000000,B00000000, + B00000000,B00000001,B11111111,B11100111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B00111111,B11111111,B11000000,B00000000, + B00000000,B00000001,B11111111,B11110111,B11111111,B11111111,B11011111,B11111111,B11111111,B11111111,B10111111,B11111111,B11000000,B00000000, + B00000000,B01000001,B11111111,B11110011,B11111111,B11111111,B11001111,B11111111,B11111111,B11111111,B10111111,B11111111,B10000000,B00000000, + B00000000,B01100001,B11111111,B11111001,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B10111111,B11111111,B10100000,B00000000, + B00000000,B01111001,B11111111,B11111101,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B00111111,B11111111,B00110000,B00000000, + B00001000,B01111111,B11111111,B11111100,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B01111111,B11111110,B01110000,B00000000, + B00001100,B00111111,B11111111,B11111110,B01111111,B11111111,B11101111,B11111111,B11111111,B11111100,B00111111,B11111100,B11111000,B00000000, + B00001111,B00111111,B11111111,B11111111,B00000000,B00111111,B11101111,B11111111,B11111111,B11110001,B10001111,B11111001,B11111100,B00000000, + B00000111,B11111111,B11111111,B11111111,B00111111,B10001111,B11100111,B11111111,B11111111,B11000011,B11100011,B11111011,B11111110,B00000000, + B00000111,B11111111,B11111111,B11111110,B00111111,B11100011,B11000000,B11111111,B11111110,B00000001,B11111000,B11110011,B11111111,B00000000, + B00000011,B11111111,B11111111,B11111000,B00011111,B11111000,B00000000,B00001111,B11110000,B00000001,B11111110,B00000111,B11111111,B00000000, + B00000011,B11111111,B11111111,B11100000,B00001111,B11111101,B11000000,B00000000,B00000000,B00000001,B11111111,B11101111,B11111111,B00000000, + B00000001,B11111111,B11111111,B11000000,B00001111,B11111101,B11111100,B00000000,B00000000,B00000111,B11111111,B11100111,B11111110,B00000000, + B00000000,B11111111,B11111111,B10000000,B00000111,B11111101,B11111110,B00000000,B00000000,B00001111,B11111111,B11100011,B11111100,B00000000, + B00000000,B01111111,B11111111,B00000000,B00000011,B11111101,B11111111,B00000000,B00000000,B00011111,B11111111,B10000011,B11111100,B00000000, + B00000000,B00111111,B11111110,B00000000,B00000011,B11111001,B11111111,B00000000,B00000000,B00011111,B11111110,B00000111,B11111000,B00000000, + B00000000,B00011111,B11111100,B00000000,B00000011,B11111011,B11111111,B10000000,B00000000,B00111111,B11111100,B00000111,B11111000,B00000000, + B00000000,B00011111,B11110000,B00000000,B00000011,B11110001,B11111111,B11000000,B00000000,B01111111,B11100000,B00001111,B11111000,B00000000, + B00000000,B00001111,B11110000,B00000000,B00000111,B11110000,B00001111,B11000000,B00000000,B11111111,B10000000,B00011111,B11110000,B00000000, + B00000000,B00000011,B11000000,B00000000,B00001111,B11110000,B00000001,B11000000,B00000000,B11111111,B10000000,B00011111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B10000111,B10000111,B10000001,B11110000,B00011110,B00000111,B10001111,B00000011,B11000000,B01111100,B00000000,B11111111,B00000000, + B00000111,B10000111,B10000111,B10000001,B11110000,B00011111,B00000111,B10001111,B00000011,B11000000,B01111100,B00000001,B11111111,B10000000, + B00000111,B10000111,B10000111,B10000011,B11111000,B00011111,B00000111,B10001111,B00000011,B11000000,B11111110,B00000011,B11111111,B11000000, + B00000111,B10000111,B10000111,B10000011,B11111000,B00011111,B10000111,B10001111,B00000011,B11000000,B11111110,B00000111,B11111111,B11100000, + B00000111,B10000111,B10000111,B10000111,B10111100,B00011111,B11000111,B10001111,B00000011,B11000001,B11101111,B00000111,B11000011,B11100000, + B00000111,B10000111,B10000111,B10000111,B00011100,B00011111,B11100111,B10001111,B00000011,B11000001,B11000111,B00001111,B10000001,B11110000, + B00000111,B10000111,B10000111,B10000111,B00011100,B00011111,B11110111,B10001111,B11111111,B11000001,B11000111,B00001111,B00000000,B11110000, + B00000111,B11001111,B11001111,B10001111,B00011110,B00011111,B11111111,B10001111,B11111111,B11000011,B11000111,B10001111,B00000000,B11110000, + B00000011,B11001111,B11001111,B00001110,B00001110,B00011111,B11111111,B10001111,B11111111,B11000011,B10000011,B10001111,B00000000,B11110000, + B00000011,B11101111,B11011111,B00001111,B11111110,B00011110,B11111111,B10001111,B00000011,B11000011,B11111111,B10001111,B00000000,B11110000, + B00000001,B11111111,B11111110,B00011111,B11111111,B00011110,B01111111,B10001111,B00000011,B11000111,B11111111,B11001111,B10000001,B11110000, + B00000001,B11111100,B11111110,B00011111,B11111111,B00011110,B00111111,B10001111,B00000011,B11000111,B11111111,B11000111,B11000011,B11100000, + B00000000,B11111100,B11111100,B00011111,B11111111,B00011110,B00011111,B10001111,B00000011,B11000111,B11111111,B11000111,B11111111,B11100000, + B00000000,B01111100,B11111000,B00111110,B00001111,B10011110,B00001111,B10001111,B00000011,B11001111,B10000011,B11100011,B11111111,B11000000, + B00000000,B01111000,B01111000,B00111100,B00000111,B10011110,B00001111,B10001111,B00000011,B11001111,B00000001,B11100001,B11111111,B10000000, + B00000000,B00111000,B01110000,B00111100,B00000111,B10011110,B00000111,B10001111,B00000011,B11001111,B00000001,B11100000,B01111110,B00000000 +}; diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker/_Bootscreen.h b/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker/_Bootscreen.h new file mode 100644 index 0000000000..c84f612ea7 --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker/_Bootscreen.h @@ -0,0 +1,56 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Cocoon Create Model Maker" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B11111111,B11111110,B00000111,B11111111,B00000000,B11111111,B11111110,B00000111,B11111111,B00000000,B01111111,B11111000,B00011111,B11111111,B00000000, + B00000011,B11111111,B11111110,B00011111,B11111111,B11000011,B11111111,B11111111,B00011111,B11111111,B11100001,B11111111,B11111110,B00111111,B11111111,B11000000, + B00000111,B10000000,B00000000,B00111000,B00000000,B11100111,B10000000,B00000000,B00111100,B00000000,B11100011,B11000000,B00001111,B00111000,B00000000,B11100000, + B00000110,B00000000,B00000000,B01110000,B00000000,B01100110,B00000000,B00000000,B00110000,B00000000,B01110011,B00000000,B00000011,B00111000,B00000000,B01110000, + B00000110,B00000000,B00000000,B01110000,B00000000,B01100110,B00000000,B00000000,B00110000,B00000000,B00110011,B00000000,B00000011,B00111000,B00000000,B01110000, + B00000110,B00000000,B00000000,B01110000,B00000000,B01100110,B00000000,B00000000,B00110000,B00000000,B00110011,B00000000,B00000011,B00111000,B00000000,B01110000, + B00000110,B00000000,B00000000,B01110000,B00000000,B01100110,B00000000,B00000000,B00110000,B00000000,B01110011,B10000000,B00000111,B00111000,B00000000,B01110000, + B00000111,B11111111,B11111110,B00111111,B11111111,B11100111,B11111111,B11111111,B00111111,B11111111,B11100001,B11111111,B11111111,B00111000,B00000000,B01110000, + B00000001,B11111111,B11111110,B00001111,B11111111,B10000001,B11111111,B11111110,B00011111,B11111111,B11000000,B11111111,B11111100,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11110001,B11011001,B11110001,B11110011,B11110011,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111001,B11111011,B11110011,B11111011,B11110111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10111011,B11110111,B00110011,B00111001,B11001110,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00011011,B10001111,B11110000,B11111001,B11001111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000011,B10001111,B11110111,B11111011,B11011111,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00110011,B10001110,B00000111,B01110011,B10011100,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B01110111,B10001110,B11101111,B01110011,B10011100,B11100000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11110111,B00001111,B11101111,B11110011,B11011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11000111,B00000111,B10000111,B01100011,B11001111,B00000000 +}; diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini/_Bootscreen.h b/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini/_Bootscreen.h new file mode 100644 index 0000000000..0f4da171b4 --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini/_Bootscreen.h @@ -0,0 +1,76 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Wanhao/Duplicator i3 Mini/Alternative Bootscreens/Monoprice MP i3 Mini" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 96 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111110,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B10000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B11000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B01111111,B11000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00111111,B11100000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11100000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11110000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00011111,B11100000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B01111111,B11000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B11000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B10000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111111,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111100,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B11111100,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111111,B11111111,B10000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000, + B00001111,B11100000,B00000000,B11111110,B00000000,B00001111,B11100000,B00000000,B11111110,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Wanhao/Duplicator i3 Mini/_Bootscreen.h b/config/examples/Wanhao/Duplicator i3 Mini/_Bootscreen.h new file mode 100644 index 0000000000..0e2191a1ed --- /dev/null +++ b/config/examples/Wanhao/Duplicator i3 Mini/_Bootscreen.h @@ -0,0 +1,78 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Wanhao/Duplicator i3 Mini" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 80 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00110111,B00000000,B01111111,B10111100,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111,B10111111,B10000000,B00000000, + B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B01111111,B11000000,B00000000, + B00000000,B00000000,B00000000,B00011111,B11101111,B11111111,B11111111,B01111111,B11111111,B00000000, + B00000000,B00000000,B00000000,B00111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11100000, + B00000000,B00000000,B00000000,B11111111,B11101111,B11111111,B11111111,B11111111,B11100000,B00110000, + B00000000,B00000000,B00000011,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B00000000, + B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B00000000, + B00000000,B00000000,B00110111,B11111111,B11111111,B11111111,B11111111,B01111111,B11110000,B00000000, + B00000000,B00010111,B11110111,B11111111,B11101111,B11111111,B11111111,B01111111,B11110000,B00000000, + B00000000,B00011111,B11110111,B11111111,B11101111,B11111111,B11111111,B01111111,B11110000,B00000000, + B00000000,B00001111,B11110111,B11111111,B11111111,B11111111,B11111111,B10111111,B11111000,B00000000, + B00000000,B00001111,B11110111,B11111111,B11110111,B11111111,B11111111,B10111111,B11111000,B00000000, + B00000000,B00001111,B11111111,B11111111,B11110111,B11111111,B11111111,B10111111,B11111100,B00000000, + B00000000,B00001111,B11111011,B11111111,B11110111,B11111111,B11111111,B10111111,B11111100,B00000000, + B00000000,B00001111,B11111011,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000000, + B00000000,B10001111,B11111101,B11111111,B11111011,B11111111,B11111111,B11011111,B11111000,B00000000, + B00000000,B11111111,B11111100,B11111111,B11111011,B11111111,B11111111,B10111111,B11110110,B00000000, + B00000100,B01111111,B11111110,B11111111,B11111011,B11111111,B11111111,B00011111,B11101111,B00000000, + B00000110,B01111111,B11111111,B00100101,B11111011,B11111111,B11111100,B11101111,B11011111,B10000000, + B00000111,B11111111,B11111111,B00111110,B01110000,B11111111,B11110000,B11110011,B11011111,B11000000, + B00000011,B11111111,B11111100,B00111111,B10000000,B00001111,B10000000,B01111101,B10111111,B11000000, + B00000001,B11111111,B11111000,B00011111,B11011000,B00000000,B00000000,B11111111,B10111111,B10000000, + B00000001,B11111111,B11100000,B00001111,B11011111,B00000000,B00000001,B11111111,B00011111,B10000000, + B00000000,B01111111,B11000000,B00001111,B11111111,B10000000,B00000011,B11111110,B00011111,B00000000, + B00000000,B00111111,B10000000,B00001111,B10111111,B10000000,B00000011,B11111000,B00111111,B00000000, + B00000000,B00111111,B00000000,B00001111,B10011111,B11000000,B00000111,B11000000,B00111110,B00000000, + B00000000,B00011100,B00000000,B00011111,B00000000,B11000000,B00001111,B11000000,B01111110,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B10001100,B01110000,B11100000,B11100000,B11001100,B00011100,B00011000,B00000111,B11000000, + B00000011,B10011100,B01110000,B11110000,B11110001,B11001110,B00011100,B00111100,B00001111,B11100000, + B00000011,B10011100,B01110001,B11110000,B11110001,B11001110,B00011100,B00111100,B00011111,B11110000, + B00000011,B10011100,B01110001,B11110000,B11111001,B11001110,B00011100,B01111110,B00111100,B01111000, + B00000011,B10011100,B01110001,B11111000,B11111101,B11001111,B11111100,B01111110,B00111000,B00111000, + B00000001,B10011110,B11100011,B10111000,B11111111,B11001111,B11111100,B01100111,B00111000,B00011000, + B00000001,B11011110,B11100011,B10111000,B11101111,B11001111,B11111100,B11100111,B00111000,B00111000, + B00000001,B11111111,B11000011,B11111100,B11100111,B11001110,B00011100,B11111111,B00111100,B00111000, + B00000000,B11110111,B11000111,B11111100,B11100011,B11001110,B00011100,B11111111,B10011111,B11110000, + B00000000,B11110011,B10000111,B00011110,B11100011,B11001110,B00011101,B11100011,B10001111,B11110000, + B00000000,B01110011,B10000111,B00001110,B11100001,B11001110,B00011101,B11000011,B11000111,B11000000 +}; diff --git a/config/examples/delta/Anycubic/Kossel/README.md b/config/examples/delta/Anycubic/Kossel/README.md new file mode 100644 index 0000000000..874d71fae3 --- /dev/null +++ b/config/examples/delta/Anycubic/Kossel/README.md @@ -0,0 +1,50 @@ +# Readme + +These configurations activate many of the new advanced features of the Marlin firmware: + + * Auto Calibration + * Auto Bed Leveling + * Pause & Filament Change + +**Important**: Before doing anything else after updating the firmware, go to `Configuration > Advanced Settings > Initialize EEPROM` to get rid of old configurations. + +Then you should execute `Configuration > Delta Calibration > Set Delta Height` and also run `Configuration > Delta Configuration > Probe Z-offset` to verify the Probe offset. + +After that you should connect the Z-Probe and start `Configuration > Delta Calibration > Auto Calibration`. When it's done don't forget to also do `Configuration > Delta Calibration > Store Settings` to make it permanent. + +You should also do a `Motion > Bed Leveling > Level bed` followed by `Store Settings` to ensure a perfect leveling. + +Please do a manual paper test (moving the nozzle slowly down to Z0 and checking with a piece of paper). If it's not perfect, use `Configuration > Advanced Settings > Probe Z Offset` to correct the difference and execute the calibration again. + + +# Select the Configuration + +**Please select the correct values at the start of the Configuration.h file** + +The Kossel comes in 3 versions: + + * Pulley + * Linear + * Linear Plus + +Pulley and Linear use the same configuration, the Linear Plus is bigger and uses slightly different configurations. + +Typically the probes for the Anycubic Delta Kossel printers come in two different versions. + + * Version 1: Z Probe Offset of -19.0mm + + ![Version 1 Probe](images/Version1Probe.jpg) + + * Version 2: Z Probe Offset of -16.8mm + + ![Version 2 Probe](images/Version2Probe.jpg) + +If you select the `ANYCUBIC_PROBE_VERSION 0`: It's very important to follow the correct procedure to set it up after flashing the firmware, otherwise you might damage the printer by ramming the nozzle into the buildplate: + +* `Configuration > Advanced Settings > Initialize EEPROM` +* `Motion > Move Axis > Soft Endstops` : `Off` +* Auto Home and slowly move the nozzle down until it barely touches the bed. (Do a paper-test: A normal sheet of paper should just feel the drag of the nozzle) and note this number. +* Subtract this number from the value in `Configuration > Delta Calibration > Delta Settings > Height`. (If it's negative, add it). +* Save and try the paper test again to verify your height. +* `Configuration > Store Settings` +* Motion > Bed Leveling (using paper test) diff --git a/config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg b/config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..953373b1ab93d79f24f7cd3363e4c949a1e90d79 GIT binary patch literal 94933 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
Dj!pTg{1DUs$In2&prt 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 literal 0 HcmV?d00001 diff --git a/config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg b/config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1f4baf2f283af826a79907925a4d13ba808e6a8 GIT binary patch literal 51853 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. + * + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 80 + +const uint8_t custom_start_bmp[] PROGMEM = { + B00000011,B10000011,B00001101,B11111101,B11111000,B11000000,B00011100,B00011111,B10001111,B11000000, + B00011111,B11100011,B00001101,B11111101,B11111110,B11000000,B11111111,B00011111,B11001111,B11110000, + B00011100,B01100011,B00001101,B10000001,B10001110,B11000000,B11100011,B00011001,B11001100,B01110000, + B00011100,B01110011,B00001101,B10000001,B10001110,B11000000,B11100011,B10011000,B11001100,B00111000, + B00011000,B01110001,B10011001,B11111001,B10001110,B11000000,B11000011,B10011001,B11001100,B00011000, + B00011000,B01110001,B10011001,B11111001,B11111100,B11000000,B11000011,B10011111,B11001100,B00011000, + B00011000,B01110001,B11111001,B10000001,B11111000,B11000000,B11000011,B10011111,B10001100,B00111000, + B00011111,B11100000,B11110001,B11111101,B10001100,B11111100,B11111111,B00011001,B11001111,B11110000, + B00001111,B11000000,B11110001,B11111101,B10001100,B11111100,B01111110,B00011001,B11001111,B11100000, + B00000011,B10000000,B01100001,B11111101,B10001110,B11111100,B00011100,B00011000,B11001111,B11000000 +}; diff --git a/config/examples/delta/Dreammaker/Overlord_Pro/_Bootscreen.h b/config/examples/delta/Dreammaker/Overlord_Pro/_Bootscreen.h new file mode 100644 index 0000000000..0882765657 --- /dev/null +++ b/config/examples/delta/Dreammaker/Overlord_Pro/_Bootscreen.h @@ -0,0 +1,35 @@ +/** + * 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 . + * + */ +#define CUSTOM_BOOTSCREEN_BMPWIDTH 80 + +const uint8_t custom_start_bmp[] PROGMEM = { + B00000011,B10000011,B00001101,B11111101,B11111000,B11000000,B00011100,B00011111,B10001111,B11000000, + B00011111,B11100011,B00001101,B11111101,B11111110,B11000000,B11111111,B00011111,B11001111,B11110000, + B00011100,B01100011,B00001101,B10000001,B10001110,B11000000,B11100011,B00011001,B11001100,B01110000, + B00011100,B01110011,B00001101,B10000001,B10001110,B11000000,B11100011,B10011000,B11001100,B00111000, + B00011000,B01110001,B10011001,B11111001,B10001110,B11000000,B11000011,B10011001,B11001100,B00011000, + B00011000,B01110001,B10011001,B11111001,B11111100,B11000000,B11000011,B10011111,B11001100,B00011000, + B00011000,B01110001,B11111001,B10000001,B11111000,B11000000,B11000011,B10011111,B10001100,B00111000, + B00011111,B11100000,B11110001,B11111101,B10001100,B11111100,B11111111,B00011001,B11001111,B11110000, + B00001111,B11000000,B11110001,B11111101,B10001100,B11111100,B01111110,B00011001,B11001111,B11100000, + B00000011,B10000000,B01100001,B11111101,B10001110,B11111100,B00011100,B00011000,B11001111,B11000000 +}; diff --git a/config/examples/delta/MKS/SBASE/RRD Full Graphic Smart Controller.md b/config/examples/delta/MKS/SBASE/RRD Full Graphic Smart Controller.md new file mode 100644 index 0000000000..265cb541f9 --- /dev/null +++ b/config/examples/delta/MKS/SBASE/RRD Full Graphic Smart Controller.md @@ -0,0 +1,34 @@ +### RepRap Discount Full Graphics Smart Controller + +Many MKS products have the EXP1 & EXP2 LCD connectors rotated 180 degrees from the ones on the RepRap LCD controllers. So there are three options for connecting the RepRap Discount Full Graphic Smart Controller: + 1. Slice, file, or grind the key off one end of the cables and plug the cables in backwards. + 2. Carefully pry the plastic housings off the board or controller, rotate them 180 degrees, and press them back onto the board. + 3. Make custom cables with one end's connector rotated 180 degrees. + +--- + +#### 3 DEC 2017 + +The current Marlin 2.0.x firmware can't access some of the pins on the EXP2 connector. A custom cable that gets three of the signals from a different connector is required to use the RepRap Discount Full Graphic Smart Controller. Use that cable to move the following connections: + +From|To +--|-- +`P0.8`|`J8-3` +`P0.7`|`J8-2` +`P0.5`|`J8-4` + +If using pins other than the J8 pins listed above the `spi_pins.h` file will need to be modified. + +An octopus cable like the [Adafruit 1199](https://www.adafruit.com/product/1199) 10-pin IDC Socket Rainbow Breakout Cable can simplify the construction of the custom cable. Just plug the Adafruit 1199 into one of the cables that came with the LCD and the individual pins into J8 and EXP2 as needed. + +--- + +#### 27 APR 2018 + +For a functional `SD_DETECT_PIN`, also move the following pin: + +From|To +--|-- +`P0.27`|`J8-5` + +If a different pin is used, modify the `pins_MKS_SBASE.h` file. diff --git a/config/examples/delta/Malyan M300/README.md b/config/examples/delta/Malyan M300/README.md new file mode 100644 index 0000000000..ef90c69fd5 --- /dev/null +++ b/config/examples/delta/Malyan M300/README.md @@ -0,0 +1,29 @@ +### Malyan M300 Build Instructions + +Malyan M300 series firmware currently builds using the Arduino IDE. These instructions should +guide you through the configuration and compilation. + +1. Install the Arduino IDE from your favorite source (arduino.cc, windows store, app store) +2. Launch the IDE to add the ST boards manager: + - Open the **Preferences** dialog. + - Add this link in the "*Additional Boards Managers URLs*" field: + https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json + - Select "**Show verbose ouptut during: compilation**." +3. Select **Tools** > **Board** > **Boards Manager**. +4. Type "Malyan" into the Search field. +5. The only board listed will be "**STM32 Cores by STMicroelectronics**." Any version from 1.8.0 up is fine. Choose install. This will download many tools and packages, be patient. +6. Open the **Tools** > **Board** submenu, scroll all the way down, and select **3D Printer Boards**. +7. From the **Tools** menu, select a board part number **Malyan M300**: +8. From the **Tools** menu, choose **USB Support** > **CDC No Generic Serial**. +9. Download the latest Marlin source (from the [bugfix-2.0.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.0.x) branch) and unzip it. +10. Look in the `Marlin` subdirectory for the `Configuration.h` and `Configuration_adv.h` files. Replace these files with the configurations in the `config\examples\Malyan\M300` folder. +11. Open the `Marlin/Marlin.ino` file in Arduino IDE. +12. From the **Sketch** menu, select **File** > **Export Compiled Binary**. +13. When compilation is done you've built the firmware. The next stage is to flash it to the board. To do this look for a line like this: `"path/to/bin/arm-none-eabi-objcopy" -O binary "/path/to/Marlin.ino.elf" "/path/to/Marlin.ino.bin"` + The file `Marlin.ino.bin` is your firmware binary. M300 printers require flashing via SD card. Use the SD card that came with the printer if possible. The bootloader is very picky about SD cards. Copy `Marlin.ino.bin` to your SD card under three names: `firmware.bin`, and `fcupdate.flg`. +14. Insert the SD card into your printer. Make sure the X and Y axes are centered in the middle of the bed. (When X and Y endstops are closed this signals a UI upgrade to the bootloader.) +15. Power-cycle the printer. The first flash may take longer. Don't be surprised if the .99 version number doesn't show up until after the UI has launched the default screen. +16. Remove the SD card and delete the `fcupdate.flg` file from the card to prevent an accidental re-flash. +17. Test the endstops and homing directions, run M303 PID autotune, and verify all features are working correctly. + +Welcome to Marlin 2.x... diff --git a/config/examples/delta/kossel_pro/README.md b/config/examples/delta/kossel_pro/README.md new file mode 100644 index 0000000000..37b5ccf07f --- /dev/null +++ b/config/examples/delta/kossel_pro/README.md @@ -0,0 +1,5 @@ +# Example Configuration for OpenBeam Kossel Pro [BRAINWAVE_PRO](http://www.openbeamusa.com/3d-printers/kossel/) +* Configuration files for the **Openbeam Kossel Pro** as delivered in their KickStarter distribution + +I [@Wackerbarth](https://github.com/Wackerbarth) tested this version on my Kossel Pro and Arduino 1.6.5 for Mac. +This configuration is a transition to merge Terence Tam's configuration with up-to-date Marlin source and a current Arduino IDE diff --git a/config/examples/delta/kossel_xl/README.md b/config/examples/delta/kossel_xl/README.md new file mode 100644 index 0000000000..3be24820a4 --- /dev/null +++ b/config/examples/delta/kossel_xl/README.md @@ -0,0 +1,21 @@ +# Configuration for Kossel k800 XL +This example configuration is for a Kossel XL with a printable bed diameter of 280mm and a height of 380mm. It also has the auto bed leveling probe (with an endstop switch) and the heated bed activated. + +## Configuration +You might need (or want) to edit at least the following settings in `Configuration.h`: +* `MANUAL_Z_HOME_POS` - The available height of your printing space. Auto Bed Leveling makes it less important to have the exact value. +* `DELTA_PRINTABLE_RADIUS` - The printable radius is how far from the center the nozzle can reach. +* `DEFAULT_AXIS_STEPS_PER_UNIT` - Steps-per-millimeter for the delta steppers, and for the extruder [to optimize the amount of filament flow](http://zennmaster.com/makingstuff/reprap-101-calibrating-your-extruder-part-1-e-steps). + +### Fine tuning +* Increase `DELTA_RADIUS` if the model comes out convex (with a bulge in the middle) +* Increase `DELTA_DIAGONAL_ROD` if the model comes out larger than expected + +### [https://reprap.org/wiki/PID_Tuning](PID Tuning) +* `DEFAULT_Kp` - The proportional term +* `DEFAULT_Ki` - The integral term +* `DEFAULT_Kd` - The derivative term + +### PSU Options +* The power supply is configured to 2 (to use a relay to switch 12V on and off) +* It is configured to be off by default diff --git a/config/examples/gCreate/gMax1.5+/_Bootscreen.h b/config/examples/gCreate/gMax1.5+/_Bootscreen.h new file mode 100644 index 0000000000..d923432961 --- /dev/null +++ b/config/examples/gCreate/gMax1.5+/_Bootscreen.h @@ -0,0 +1,103 @@ +/** + * 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 . + * + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "gCreate/gMax1.5+" + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00110001,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000001,B11111001,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000,B00000001,B11000000,B00000001, + B10000000,B00000000,B00000000,B00000110,B01001101,B00000000,B00000000,B00000111,B00111000,B00000000,B00000000,B00000001,B11000000,B00000001, + B10000000,B00000000,B00000000,B00001100,B00100110,B00000000,B00000111,B01100111,B00111001,B11010011,B11100001,B11110011,B11100111,B11000001, + B10000000,B00000000,B00000000,B00011001,B00010010,B00000000,B00001111,B11100111,B00111001,B11110111,B11110011,B11111011,B11101111,B11100001, + B10000000,B00000000,B00000000,B00110111,B11001110,B00000000,B00001110,B11100111,B00000001,B11110111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B00000000,B01100100,B01100110,B00000000,B00001110,B11100111,B00000001,B11000111,B11110011,B10111001,B11001111,B11100001, + B10000000,B00000000,B00000000,B01001011,B10100110,B00000000,B00001110,B11100111,B00111001,B11000111,B11110000,B11111001,B11001111,B11100001, + B10000000,B00000000,B00000000,B11001010,B10110100,B00000000,B00001111,B11100111,B00111001,B11000111,B00000011,B11111001,B11001110,B00000001, + B10000000,B00000000,B00000000,B11001101,B10100100,B00000000,B00000110,B11100111,B00111001,B11000111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B00000011,B10100110,B01101100,B00000000,B00000000,B11100111,B00111001,B11000111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B11111111,B00010011,B11011000,B00000000,B00001110,B11100011,B11110001,B11000111,B11110011,B11111001,B11101111,B11100001, + B10000000,B00000001,B00100001,B10001000,B00011000,B00000000,B00001111,B11100001,B11100001,B11000011,B11100001,B10111001,B11100111,B11000001, + B10000000,B00000110,B01100001,B00010110,B00110000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000100,B01000001,B00100011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000100,B11111110,B01000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00001011,B10000110,B10001111,B00000000,B00000000,B00000000,B00000000,B00111111,B00011111,B10000000,B00000000,B00000000,B00000001, + B10000000,B00011110,B00000001,B10011010,B00000000,B00000000,B00000000,B00000000,B00111111,B00011111,B10000000,B00000000,B00000000,B00000001, + B10000000,B00011100,B00000111,B00100010,B00000000,B00000000,B00000111,B10111100,B00111111,B10011111,B10000001,B11111000,B11110001,B11100001, + B10000000,B00001000,B00011111,B11100010,B00000000,B00000000,B00001111,B11111100,B00111111,B10111111,B10000111,B11111110,B01110001,B11000001, + B10000000,B00000000,B00110011,B01100010,B00000000,B00000000,B00001111,B00111100,B00111101,B10110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000000,B11000010,B00100010,B00000000,B00000000,B00001111,B00111100,B00111101,B10110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000000,B11000010,B00111110,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000000,B01111110,B00111011,B10000001, + B10000000,B00000001,B11100110,B00011110,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000011,B11111110,B00111111,B10000001, + B10000000,B00000001,B00111100,B00010010,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000111,B10011110,B00111011,B10000001, + B10000000,B00000001,B00011100,B00100110,B00000000,B00000000,B00001111,B11111100,B00111101,B11110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000001,B01110000,B01100100,B00000000,B00000000,B00000111,B10111100,B00111100,B11100111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000011,B11000000,B01011000,B00000000,B00000000,B00000000,B00111100,B00111100,B11100111,B10000111,B11111110,B01110001,B11000001, + B10000000,B00001101,B10000000,B11110000,B00000000,B00000000,B00001111,B00111100,B00111100,B11100111,B10000011,B11011110,B11110001,B11100001, + B10000000,B00011010,B00000000,B11100000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00100110,B00000000,B01000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B01001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B10110010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000001,B00000110,B00000000,B00000000,B00000000,B00000000,B00000111,B00011100,B00000011,B11000000,B00100000,B00010000,B00000000,B00000001, + B10000011,B00100100,B00000000,B00000000,B00000000,B00000000,B00001000,B10010010,B00000010,B00100000,B00000000,B00010000,B00000000,B00000001, + B00000010,B00100100,B00000000,B00000000,B00000000,B00000000,B00000000,B10010001,B00000010,B00100011,B00100111,B00111001,B10001100,B11100001, + B00000110,B00111000,B00000000,B00000000,B00000000,B00000000,B00000011,B00010001,B00000011,B11000010,B00100100,B10010010,B01001001,B00000001, + B00000100,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B10010001,B00000010,B00000010,B00100100,B10010011,B11001000,B11000001, + B00001101,B10100000,B00000000,B00000000,B00000000,B00000000,B00001000,B10010010,B00000010,B00000010,B00100100,B10010010,B00001000,B00100001, + B00001000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000111,B00011100,B00000010,B00000010,B00100100,B10011001,B11001001,B11000001, + B00011000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00010000,B00110000,B00000000,B00011100,B00000000,B00000000,B00000000,B00001100,B00011000,B00001111,B11100000,B00001111,B00000000,B00000001, + B00110000,B00100000,B00000000,B00110111,B00000000,B00000000,B00000000,B00010010,B00100100,B00001000,B00010000,B00001001,B00000000,B00000001, + B00100000,B00110000,B00000000,B01101101,B10000000,B00000000,B00000000,B00010010,B00100100,B00001001,B10001000,B00001001,B00000000,B00000001, + B00010000,B00011000,B00011111,B01100000,B11000000,B00000000,B00000000,B00010010,B00100100,B00001001,B01001000,B00001001,B00000000,B00000001, + B00110000,B00001100,B00111001,B11100000,B01100000,B00000000,B00000000,B00010010,B00100100,B00001001,B10010000,B00001001,B00000000,B00000001, + B00110000,B00000111,B10010000,B01110000,B01100000,B00000000,B00000000,B00010010,B00100100,B00001000,B01100000,B00001001,B00000000,B00000001, + B00010000,B00010110,B11110000,B00011000,B00100000,B00000000,B00000000,B00010010,B00100100,B00001000,B00010000,B00001001,B00000000,B00000001, + B00011010,B00010000,B01100000,B00001000,B00110000,B00000000,B00000000,B00010010,B00100100,B00001001,B11001000,B00001001,B00000000,B00000001, + B00001011,B00001001,B10000000,B00000000,B00110000,B00000000,B00000000,B00010010,B00100100,B00001001,B00100100,B00001001,B00000000,B00000001, + B00001110,B00000111,B10000000,B00000000,B00010000,B00000000,B00000000,B00010011,B11100100,B10001001,B11000100,B10001001,B11111001,B00000001, + B00000110,B00011110,B01000000,B00010000,B00010000,B00000000,B00000000,B00010000,B00000101,B11001000,B00001001,B11001000,B00001011,B10000001, + B00000110,B00000000,B01000000,B00100000,B00010000,B00000000,B00000000,B00001111,B11111000,B10001111,B11110000,B10001111,B11111001,B00000001, + B00000011,B10000000,B00000000,B00100000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000001,B11111111,B11111111,B11111111,B11100000,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111 +};