From 89f6316ebd60463a0dce4d2a916d78f7df41267c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 29 May 2021 16:15:11 -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/A9/_Statusscreen.h | 58 ++++ config/examples/Anet/E16/Stock/_Bootscreen.h | 73 +++++ .../examples/Anet/E16/Stock/_Statusscreen.h | 85 ++++++ config/examples/Anet/ET4+/README.md | 52 ++++ config/examples/Anet/ET4-Pro/README.md | 52 ++++ config/examples/Anet/ET4/README.md | 52 ++++ config/examples/Anet/ET4X/README.md | 52 ++++ config/examples/Anet/ET5-Pro/README.md | 52 ++++ config/examples/Anet/ET5/README.md | 52 ++++ config/examples/Anet/ET5X/README.md | 52 ++++ .../examples/AnimationExample/_Bootscreen.h | 222 +++++++++++++++ .../Mega Zero 2.0/Anycubic V1/README.md | 7 + .../Mega Zero 2.0/Anycubic V1/_Bootscreen.h | 58 ++++ .../Mega Zero 2.0/Anycubic V1/_Statusscreen.h | 49 ++++ .../AnyCubic/Mega Zero/Anycubic V1/README.md | 7 + .../Mega Zero/Anycubic V1/_Bootscreen.h | 55 ++++ .../Mega Zero/Anycubic V1/_Statusscreen.h | 54 ++++ .../_Bootscreen.h | 58 ++++ .../_Statusscreen.h | 54 ++++ .../examples/Artillery/Genius/_Bootscreen.h | 95 +++++++ .../Artillery/Sidewinder X1/_Bootscreen.h | 95 +++++++ 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 +++++++ .../BigTreeTech SKR Mini E3 2.0/README.md | 89 ++++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 64 +++++ .../CR-10 Mini/CrealityV1/_Bootscreen.h | 58 ++++ .../CR-10 Mini/CrealityV1/_Statusscreen.h | 76 ++++++ .../CR-10 Mini/MEEB-3DP/_Bootscreen.h | 104 +++++++ .../CR-10 Mini/MEEB-3DP/_Statusscreen.h | 73 +++++ .../CR-10 S4/CrealityV1/_Bootscreen.h | 58 ++++ .../CR-10 S4/CrealityV1/_Statusscreen.h | 68 +++++ .../CR-10 S5/CrealityV1/_Bootscreen.h | 58 ++++ .../CR-10 S5/CrealityV1/_Statusscreen.h | 68 +++++ .../examples/Creality/CR-10 V2/_Bootscreen.h | 58 ++++ .../Creality/CR-10 V2/_Statusscreen.h | 70 +++++ .../examples/Creality/CR-10 V3/_Bootscreen.h | 58 ++++ .../Creality/CR-10 V3/_Statusscreen.h | 70 +++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++++ .../_Statusscreen.h | 68 +++++ .../Creality/CR-10/CrealityV1/_Bootscreen.h | 58 ++++ .../Creality/CR-10/CrealityV1/_Statusscreen.h | 68 +++++ .../_Bootscreen.h | 58 ++++ .../_Statusscreen.h | 76 ++++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++++ .../_Statusscreen.h | 76 ++++++ .../CR-10S/BigTreeTech SKR Pro v1.2/README.md | 6 + .../BigTreeTech SKR Pro v1.2/_Bootscreen.h | 80 ++++++ .../BigTreeTech SKR Pro v1.2/_Statusscreen.h | 76 ++++++ .../Creality/CR-10S/CrealityV1/_Bootscreen.h | 58 ++++ .../CR-10S/CrealityV1/_Statusscreen.h | 76 ++++++ .../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 Max/_Bootscreen.h | 99 +++++++ .../Creality/Ender-3 Max/_Statusscreen.h | 64 +++++ .../BigTreeTech SKR 1.4 Turbo/README.md | 16 ++ .../BigTreeTech SKR 1.4 Turbo/_Bootscreen.h | 99 +++++++ .../BigTreeTech SKR 1.4 Turbo/_Statusscreen.h | 73 +++++ .../BigTreeTech SKR Mini E3 1.0/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 73 +++++ .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 73 +++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 73 +++++ .../Ender-3 Pro/CrealityV1/_Bootscreen.h | 99 +++++++ .../Ender-3 Pro/CrealityV1/_Statusscreen.h | 73 +++++ .../Ender-3 Pro/CrealityV422/README.md | 11 + .../Ender-3 Pro/CrealityV422/_Bootscreen.h | 99 +++++++ .../Ender-3 Pro/CrealityV422/_Statusscreen.h | 73 +++++ .../Ender-3 Pro/CrealityV427/_Bootscreen.h | 99 +++++++ .../Ender-3 Pro/CrealityV427/_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 +++++ .../Ender-3/BigTreeTech E3 RRF/_Bootscreen.h | 99 +++++++ .../BigTreeTech E3 RRF/_Statusscreen.h | 64 +++++ .../Ender-3/BigTreeTech SKR 1.4/README.md | 14 + .../2-into-1 Hotend/_Bootscreen.h | 99 +++++++ .../2-into-1 Hotend/_Statusscreen.h | 64 +++++ .../Dual Z/_Bootscreen.h | 99 +++++++ .../Dual Z/_Statusscreen.h | 64 +++++ .../Single Extruder/_Bootscreen.h | 99 +++++++ .../Single Extruder/_Statusscreen.h | 64 +++++ .../BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h | 99 +++++++ .../_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 +++++ .../Ender-3/CrealityV422/_Bootscreen.h | 99 +++++++ .../Ender-3/CrealityV422/_Statusscreen.h | 64 +++++ .../Ender-3/CrealityV427/_Bootscreen.h | 99 +++++++ .../Ender-3/CrealityV427/_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-3/MKS Robin E3/README.md | 10 + .../Ender-3/MKS Robin E3/V1.0/_Bootscreen.h | 99 +++++++ .../Ender-3/MKS Robin E3/V1.0/_Statusscreen.h | 64 +++++ .../Ender-3/MKS Robin E3/V1.1/_Bootscreen.h | 99 +++++++ .../Ender-3/MKS Robin E3/V1.1/_Statusscreen.h | 64 +++++ .../examples/Creality/Ender-5 Plus/README.md | 1 + .../README.md | 13 + .../BigTreeTech SKR E3 Turbo/README.md | 13 + .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../README.md | 62 +++++ .../_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../Ender-5 Pro/CrealityV1/_Bootscreen.h | 96 +++++++ .../Ender-5 Pro/CrealityV1/_Statusscreen.h | 70 +++++ .../Ender-5 Pro/CrealityV422/_Bootscreen.h | 96 +++++++ .../Ender-5 Pro/CrealityV422/_Statusscreen.h | 70 +++++ .../Ender-5 Pro/CrealityV427/_Bootscreen.h | 96 +++++++ .../Ender-5 Pro/CrealityV427/_Statusscreen.h | 70 +++++ .../README.md | 10 + .../_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../README.md | 13 + .../BigTreeTech SKR E3 Turbo/README.md | 13 + .../BigTreeTech SKR Mini E3 1.2/_Bootscreen.h | 99 +++++++ .../_Statusscreen.h | 64 +++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 96 +++++++ .../_Statusscreen.h | 61 +++++ .../BigTreeTech SKR Mini E3 2.0/readme.md | 23 ++ .../Creality/Ender-5/CrealityV1/_Bootscreen.h | 96 +++++++ .../Ender-5/CrealityV1/_Statusscreen.h | 61 +++++ .../Ender-5/CrealityV427/_Bootscreen.h | 96 +++++++ .../Ender-5/CrealityV427/_Statusscreen.h | 61 +++++ config/examples/Creality/Ender-5/README.md | 13 + config/examples/Creality/Ender-6/README.md | 29 ++ .../examples/Dagoma/Disco Ultimate/README.md | 8 + .../Dagoma/Disco Ultimate/_Bootscreen.h | 52 ++++ config/examples/Einstart-S/readme.md | 152 +++++++++++ config/examples/Eryone/Thinker SE/README.md | 5 + .../examples/Eryone/Thinker SE/_Bootscreen.h | 94 +++++++ .../examples/Eryone/Thinker V2/_Bootscreen.h | 79 ++++++ 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/Labists/ET4/README.md | 54 ++++ 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 +++++ .../Nextion/HMI/Marlin4Nextion.HMI.zip | Bin 0 -> 10681280 bytes .../HMI/Marlin4Nextion_Enhanced.tft.zip | Bin 0 -> 3221967 bytes .../HMI/Marlin4Nextion_Intelligent.tft.zip | Bin 0 -> 3653372 bytes .../Prusa/MK3S-BigTreeTech-BTT002/README.md | 95 +++++++ .../BigTreeTech SKR Mini E3 2.0/_Bootscreen.h | 58 ++++ .../_Statusscreen.h | 52 ++++ .../Sovol/SV-01/CrealityV22/_Bootscreen.h | 58 ++++ .../Sovol/SV-01/CrealityV22/_Statusscreen.h | 52 ++++ .../Sovol/SV-01/CrealityV221/_Bootscreen.h | 58 ++++ .../Sovol/SV-01/CrealityV221/_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 .../examples/Two Trees/BlueR Plus/readme.md | 4 + config/examples/Two Trees/BlueR/readme.md | 15 + .../Two Trees/Sapphire Plus/readme.md | 9 + .../examples/Two Trees/Sapphire Pro/readme.md | 10 + 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 ++++++ .../Wanhao/Duplicator i3 Plus/README.md | 16 ++ .../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 +++ .../delta/FLSUN/QQS-Pro/_Bootscreen.h | 78 ++++++ .../delta/FLSUN/QQS-Pro/_Statusscreen.h | 76 ++++++ .../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 +++++++ 240 files changed, 14932 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/A9/_Statusscreen.h create mode 100644 config/examples/Anet/E16/Stock/_Bootscreen.h create mode 100644 config/examples/Anet/E16/Stock/_Statusscreen.h create mode 100644 config/examples/Anet/ET4+/README.md create mode 100644 config/examples/Anet/ET4-Pro/README.md create mode 100644 config/examples/Anet/ET4/README.md create mode 100644 config/examples/Anet/ET4X/README.md create mode 100644 config/examples/Anet/ET5-Pro/README.md create mode 100644 config/examples/Anet/ET5/README.md create mode 100644 config/examples/Anet/ET5X/README.md create mode 100644 config/examples/AnimationExample/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h create mode 100644 config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_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/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 Mini/BigTreeTech SKR Mini E3 2.0/README.md create mode 100644 config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.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 V3/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10 V3/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/CrealityV1/_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 Max/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Max/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/README.md create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3 Pro/CrealityV427/_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 E3 RRF/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_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/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/CrealityV427/_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-3/MKS Robin E3/README.md create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Plus/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo with BLTouch/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5 Pro/CrealityV427/_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 E3 Turbo with BLTouch/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_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/CrealityV1/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h create mode 100644 config/examples/Creality/Ender-5/README.md create mode 100644 config/examples/Creality/Ender-6/README.md create mode 100644 config/examples/Dagoma/Disco Ultimate/README.md create mode 100644 config/examples/Dagoma/Disco Ultimate/_Bootscreen.h create mode 100644 config/examples/Einstart-S/readme.md create mode 100644 config/examples/Eryone/Thinker SE/README.md create mode 100644 config/examples/Eryone/Thinker SE/_Bootscreen.h create mode 100755 config/examples/Eryone/Thinker V2/_Bootscreen.h 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/Labists/ET4/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/Nextion/HMI/Marlin4Nextion.HMI.zip create mode 100644 config/examples/Nextion/HMI/Marlin4Nextion_Enhanced.tft.zip create mode 100644 config/examples/Nextion/HMI/Marlin4Nextion_Intelligent.tft.zip create mode 100644 config/examples/Prusa/MK3S-BigTreeTech-BTT002/README.md create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV22/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV22/_Statusscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV221/_Bootscreen.h create mode 100644 config/examples/Sovol/SV-01/CrealityV221/_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/Two Trees/BlueR Plus/readme.md create mode 100644 config/examples/Two Trees/BlueR/readme.md create mode 100644 config/examples/Two Trees/Sapphire Plus/readme.md create mode 100644 config/examples/Two Trees/Sapphire Pro/readme.md 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/Wanhao/Duplicator i3 Plus/README.md 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/FLSUN/QQS-Pro/_Bootscreen.h create mode 100644 config/examples/delta/FLSUN/QQS-Pro/_Statusscreen.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/A9/_Statusscreen.h b/config/examples/Anet/A9/_Statusscreen.h new file mode 100644 index 0000000000..5b03d0b17a --- /dev/null +++ b/config/examples/Anet/A9/_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/A9" + +/** + * 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,B01000001, + B10001010,B00101000,B00001000,B00000100,B01000001, + B10001010,B00100111,B00000110,B00000100,B01011110 +}; + +// +// 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/Stock/_Bootscreen.h b/config/examples/Anet/E16/Stock/_Bootscreen.h new file mode 100644 index 0000000000..102fb8e777 --- /dev/null +++ b/config/examples/Anet/E16/Stock/_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/Stock/_Statusscreen.h b/config/examples/Anet/E16/Stock/_Statusscreen.h new file mode 100644 index 0000000000..1338bd41dd --- /dev/null +++ b/config/examples/Anet/E16/Stock/_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/Stock" + +/** + * 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/Anet/ET4+/README.md b/config/examples/Anet/ET4+/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4+/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4-Pro/README.md b/config/examples/Anet/ET4-Pro/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4-Pro/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4/README.md b/config/examples/Anet/ET4/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET4X/README.md b/config/examples/Anet/ET4X/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET4X/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5-Pro/README.md b/config/examples/Anet/ET5-Pro/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5-Pro/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5/README.md b/config/examples/Anet/ET5/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/Anet/ET5X/README.md b/config/examples/Anet/ET5X/README.md new file mode 100644 index 0000000000..214b66e921 --- /dev/null +++ b/config/examples/Anet/ET5X/README.md @@ -0,0 +1,52 @@ +# Marlin for Anet ET4/ET5 Series + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. diff --git a/config/examples/AnimationExample/_Bootscreen.h b/config/examples/AnimationExample/_Bootscreen.h new file mode 100644 index 0000000000..d414357f4a --- /dev/null +++ b/config/examples/AnimationExample/_Bootscreen.h @@ -0,0 +1,222 @@ +/** + * 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 + * + * Create your own with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_ANIMATED +#define CUSTOM_BOOTSCREEN_TIMEOUT 500 // (ms) Extra timeout after the animation + +/** + * Enable one of the following two options depending on your needs. + * Also edit the "custom_bootscreen_animation" at the bottom of this file. + */ +#define CUSTOM_BOOTSCREEN_FRAME_TIME 100 // (ms) Same time for all frames +//#define CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME // Each frame also has a duration + +#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 +}; + + +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 +}; + +#ifdef CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME + + // Each Frame has its own custom duration + const boot_frame_t custom_bootscreen_animation[] PROGMEM = { + { custom_start_bmp1, 2000 }, // 2.0s + { custom_start_bmp2, 100 }, // 0.1s x 5 frames + { custom_start_bmp3, 100 }, + { custom_start_bmp4, 100 }, + { custom_start_bmp5, 100 }, + { custom_start_bmp6, 100 }, + { custom_start_bmp, 500 } // 0.5s + }; + +#else + + // Each frames shows for CUSTOM_BOOTSCREEN_FRAME_TIME + 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 2.0/Anycubic V1/README.md b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md new file mode 100644 index 0000000000..0b8c292189 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/README.md @@ -0,0 +1,7 @@ +# Anycubic Mega Zero 2.0 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 came from Anycubic's firmware. The custom status screen was recreated from images. diff --git a/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h new file mode 100644 index 0000000000..af241bb767 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2021 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 2.0/Anycubic V1" + +//#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 2.0/Anycubic V1/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h new file mode 100644 index 0000000000..66b749b79b --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero 2.0/Anycubic V1/_Statusscreen.h @@ -0,0 +1,49 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2021 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 2.0/Anycubic V1" + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_WIDTH 48 +#define STATUS_LOGO_X 8 +#define STATUS_LOGO_Y 10 +#define STATUS_HEATERS_X 54 +#define STATUS_BED_X 74 + +const unsigned char status_logo_bmp[] PROGMEM = { + B01110011,B11001111,B11110000,B11111100,B00000000,B00111110, + B01110011,B11000000,B00110001,B11001110,B00000000,B01110111, + B01110011,B11000000,B01110001,B10000110,B00000000,B11100011, + B01110011,B11000000,B11100000,B00000110,B00000000,B11100011, + B01111011,B11000000,B11000000,B00001110,B00000000,B11000011, + B01111111,B11000001,B11000000,B00001110,B00000000,B11000011, + B01111111,B11000001,B10000000,B00011100,B00000000,B11000011, + B01111111,B11000011,B10000000,B00111000,B00000000,B11000011, + B01111111,B11000011,B00000000,B01110000,B00000000,B11000011, + B01101101,B11000110,B00000000,B01100000,B00000000,B11100011, + B01101101,B11001110,B00000000,B11100000,B00000000,B01100111, + B01101101,B11001111,B11111001,B11111110,B00011000,B01111110, + B01101101,B11001111,B11111001,B11111110,B00011000,B00011100 +}; diff --git a/config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md b/config/examples/AnyCubic/Mega Zero/Anycubic V1/README.md new file mode 100644 index 0000000000..fc4737a58d --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/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/Anycubic V1/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h new file mode 100644 index 0000000000..b4c7d1960d --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Bootscreen.h @@ -0,0 +1,55 @@ +/** + * 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/Anycubic V1" + +#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/Anycubic V1/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_Statusscreen.h new file mode 100644 index 0000000000..a107c268ed --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/Anycubic V1/_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/Anycubic V1" + +// +// 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/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Bootscreen.h new file mode 100644 index 0000000000..8301d0d009 --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_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/BigTreeTech SKR Mini MZ V1.0" + +//#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/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_Statusscreen.h new file mode 100644 index 0000000000..672c56b40e --- /dev/null +++ b/config/examples/AnyCubic/Mega Zero/BigTreeTech SKR Mini MZ V1.0/_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/BigTreeTech SKR Mini MZ V1.0" + +// +// 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/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 Mini/BigTreeTech SKR Mini E3 2.0/README.md b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md new file mode 100644 index 0000000000..bb1653a99a --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/README.md @@ -0,0 +1,89 @@ +## CR-10 Mini with BLTouch + +Configuration for the BigTreeTech SKR E3 Mini V2 in a Creality CR-10 Mini using the stock CR-10 display, and a BL Touch v3.1 ABL probe mounted on a Bullseye fan duct. Additional features are enabled to take advantage of the capabilities of the BTT SKR E3 Mini V2 board, detailed below. + +Compile this in the `STM32F103RC_btt_512K` environment. The test board had 512K of Flash and this configuration uses a little over half of that. If your board has only 256K, you will have to disable some features to make the firmware fit. + +### Configuration.h notes: + +```cpp +#define USE_PROBE_FOR_Z_HOMING +``` +This configuration uses only the probe for Z homing. The Z-stop switch is NOT enabled and can be disconnected. + +```cpp +#define Z_MIN_PROBE_PIN PC14 +``` +Plug the BLTouch Black/White connector into the top two pins of the 5-pin Z-PROBE port with the white whire "up". Do not plug the connector in to the Z-MIN port where the limit switch was plugged in. + +```cpp +#define NOZZLE_TO_PROBE_OFFSET { -38, -8, 0 } +``` +These are the offsets for a left-side mounted BL Touch on a Bullseye fan duct base. Change them as required for your particular BL Touch mount. + +```cpp +#define MULTIPLE_PROBING 2 +``` +Bed probing will test each point twice. 1st probe will be "fast" Z, 2nd will use the slower Z rate. + +```cpp +#define Z_MIN_PROBE_REPEATABILITY_TEST +``` +M48 Enabled to establish probe deviation value. + +```cpp +#define AUTO_BED_LEVELING_BILINEAR +``` +Change this as desired. BILINEAR will work for most printers. + +```cpp +//#define RESTORE_LEVELING_AFTER_G28 +``` +This is disabled to work around an issue where —even with an `M420` command in start G-Code— ABL would toggle to the opposite of whatever the ABL state was (Enabled/Disabled) at the time a print job started. + +```cpp +#define GRID_MAX_POINTS_X 5 +``` +This configuration is set to use a 5x5 (25 point) probing grid. Change as desired. + +```cpp +#define EXTRAPOLATE_BEYOND_GRID +``` +By default, this is disabled. Enabling this seemed to provide better mesh data. + +```cpp +#define LCD_BED_LEVELING +``` +Provides control panel probe controls. + +```cpp +#define LEVEL_BED_CORNERS +``` +Provides control panel bed tramming controls. + +```cpp +#define Z_SAFE_HOMING +``` +Ensures the BL Touch probe is not hanging off the edge of the bed when Z homing. + +```cpp +#define CR10_STOCKDISPLAY +``` +If you are using the stock display on your CR-10 Mini, this **MUST** be enabled. + +### Configuration_adv.h notes: + +```cpp +#define LIN_ADVANCE +``` +This is enabled, but the K value is set to 0 which effectively disables LIN_ADVANCE. Calibrate Linear Advance and set your own K value and recompile. + +```cpp +#define ARC_SUPPORT +``` +Enables G2/G3 moves to smooth curves in your prints. Required for the Arc Welder plugin for OctoPrint etc. + +```cpp +#define ARC_P_CIRCLES +``` +Normally disabled by default. diff --git a/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..d58f9d4597 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 Mini/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/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..24d2826e30 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 Mini/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/CR-10 Mini/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..483f5eb938 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/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-10 Mini/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-10 Mini/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f887aaea35 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/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-10 Mini/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-10 Mini/MEEB-3DP/_Bootscreen.h b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Bootscreen.h new file mode 100644 index 0000000000..80e7ccfd05 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/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-10 Mini/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: + * https://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-10 Mini/MEEB-3DP/_Statusscreen.h b/config/examples/Creality/CR-10 Mini/MEEB-3DP/_Statusscreen.h new file mode 100644 index 0000000000..6f67d93301 --- /dev/null +++ b/config/examples/Creality/CR-10 Mini/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-10 Mini/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-10 S4/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 S4/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..badbaf2280 --- /dev/null +++ b/config/examples/Creality/CR-10 S4/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-10 S4/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-10 S4/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 S4/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..265b59270b --- /dev/null +++ b/config/examples/Creality/CR-10 S4/CrealityV1/_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 S4/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_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-10 S5/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10 S5/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..f70e499302 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/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-10 S5/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-10 S5/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10 S5/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..aa5d5b7507 --- /dev/null +++ b/config/examples/Creality/CR-10 S5/CrealityV1/_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 S5/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_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-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 V3/_Bootscreen.h b/config/examples/Creality/CR-10 V3/_Bootscreen.h new file mode 100644 index 0000000000..6e04010ca8 --- /dev/null +++ b/config/examples/Creality/CR-10 V3/_Bootscreen.h @@ -0,0 +1,58 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 V3" + +/** + * 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 V3/_Statusscreen.h b/config/examples/Creality/CR-10 V3/_Statusscreen.h new file mode 100644 index 0000000000..5f9ede4212 --- /dev/null +++ b/config/examples/Creality/CR-10 V3/_Statusscreen.h @@ -0,0 +1,70 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 V3" + +/** + * 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,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11100111,B00000001,B10001110,B00000000, + B00000001,B00010100,B10000000,B10001010,B00000000, + B00000001,B00000111,B00111000,B10001010,B00000000, + B00000001,B00010101,B00000000,B10001010,B00000000, + B00000000,B11100100,B10000001,B11001110,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000001,B10110111,B00000000,B00000000, + B00000000,B00000000,B10100001,B00000000,B00000000, + B00000000,B00000000,B10100011,B00000000,B00000000, + B00000000,B00000000,B11100001,B00000000,B00000000, + B00000000,B00000000,B01000111,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,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-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..678bfc70b3 --- /dev/null +++ b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_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/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 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/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..d7bf341ce2 --- /dev/null +++ b/config/examples/Creality/CR-10/BigTreeTech SKR Mini E3 2.0/_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/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_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-10/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..e41d463381 --- /dev/null +++ b/config/examples/Creality/CR-10/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-10/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-10/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f5a653aea1 --- /dev/null +++ b/config/examples/Creality/CR-10/CrealityV1/_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/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_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/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Bootscreen.h new file mode 100644 index 0000000000..d0a6ad2eca --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_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/BigTreeTech SKR 1.4 Turbo TMC2209" + +/** + * 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/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_Statusscreen.h new file mode 100644 index 0000000000..3bea657b74 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR 1.4 Turbo TMC2209/_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/BigTreeTech SKR 1.4 Turbo TMC2209" + +/** + * 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-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..b80af4aa77 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_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/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 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/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..18c653f2a7 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Mini E3 2.0/_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/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 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-10S/BigTreeTech SKR Pro v1.2/README.md b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md new file mode 100644 index 0000000000..27defb882e --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/README.md @@ -0,0 +1,6 @@ +## CR-10S with SKR Pro V1.2 + +With support for: + - TMC2209 Stepper Drivers + - BLTouch Probe + - Advanced Pause (`M600`) and Nozzle Park (`G27`) with Filament Change diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h new file mode 100644 index 0000000000..2787169717 --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Bootscreen.h @@ -0,0 +1,80 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/BigTreeTech SKR Pro v1.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: + * 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,B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11100000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B00000000,B00000000, + B00000000,B00000000,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11000000,B00000000, + B00000000,B00000011,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11110000,B00000000, + B00000000,B00001111,B11111111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,B11111100,B00000000, + B00000000,B00011111,B11111111,B11111111,B11111001,B11111111,B11111111,B11111111,B11111000,B00001111,B11111111,B11111111,B11111110,B00000000, + B00000000,B00111111,B11111111,B11111111,B11111101,B11111111,B11111111,B11111111,B11111110,B00011111,B11111111,B11111111,B11111111,B00000000, + B00000000,B01111111,B11111000,B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B00011111,B11111110,B00000111,B11111111,B10000000, + B00000000,B01111111,B11100000,B00000011,B11111110,B11111111,B11111111,B11111111,B11111111,B00111111,B11110000,B00000001,B11111111,B10000000, + B00000000,B11111111,B10000000,B00000000,B11111110,B01111111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B01111111,B11000000, + B00000001,B11111111,B00000000,B00000000,B01111110,B00111111,B11111111,B11111111,B11111111,B00111111,B10000000,B00000000,B00111111,B11100000, + B00000001,B11111110,B00000000,B00000000,B00111110,B00111111,B11111111,B11111111,B11111111,B00111111,B00000000,B00000000,B00011111,B11100000, + B00000011,B11111100,B00000000,B00000000,B00011111,B11000000,B00000000,B00000000,B01111110,B00111110,B00000000,B00000000,B00001111,B11110000, + B00000011,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000111,B11110000, + B00000011,B11111000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000111,B11110000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11110000,B00000000,B00000000,B01111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11110000,B00000000,B00000000,B00000111,B11110111,B11111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000011,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110011,B11111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110001,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B11111111,B11111111,B11111100,B01111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B01111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11110000,B00111111,B11111111,B11111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B01111100,B00111000,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00001111,B11100000,B00000000,B00000000,B00111110,B00111100,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00011111,B11000000,B00000000,B00000000,B00111110,B00111110,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B00111111,B11000000,B00000000,B00000000,B01111111,B00111111,B00000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B01111110,B00111111,B11111111,B11111111,B11111111,B00111111,B10000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000000,B11111110,B01111111,B11111111,B11111111,B11111111,B11111111,B11000000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00000011,B11111110,B01111111,B11111111,B11111111,B11111111,B10111111,B11110000,B00000000,B00000001,B11111000, + B00000111,B11100000,B00000000,B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B10111111,B11111100,B00000000,B00000001,B11111000, + B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00011111,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11111101,B11111111,B11111111,B11111111,B11111110,B00001111,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111000,B00000011,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111111,B11111000, + B00000111,B11111111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,B11111000 +}; diff --git a/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h new file mode 100644 index 0000000000..0111682f3f --- /dev/null +++ b/config/examples/Creality/CR-10S/BigTreeTech SKR Pro v1.2/_Statusscreen.h @@ -0,0 +1,76 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/BigTreeTech SKR Pro v1.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: + * http://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-10S/CrealityV1/_Bootscreen.h b/config/examples/Creality/CR-10S/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..280ab39cb5 --- /dev/null +++ b/config/examples/Creality/CR-10S/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-10S/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-10S/CrealityV1/_Statusscreen.h b/config/examples/Creality/CR-10S/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..17079f0320 --- /dev/null +++ b/config/examples/Creality/CR-10S/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-10S/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 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-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 Max/_Bootscreen.h b/config/examples/Creality/Ender-3 Max/_Bootscreen.h new file mode 100644 index 0000000000..d5484fb4c8 --- /dev/null +++ b/config/examples/Creality/Ender-3 Max/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 Max" + +/** + * 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 Max/_Statusscreen.h b/config/examples/Creality/Ender-3 Max/_Statusscreen.h new file mode 100644 index 0000000000..8dba593a2f --- /dev/null +++ b/config/examples/Creality/Ender-3 Max/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 Max" + +/** + * 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 Pro/BigTreeTech SKR 1.4 Turbo/README.md b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md new file mode 100644 index 0000000000..1848f94a2c --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/README.md @@ -0,0 +1,16 @@ +# Ender 3 Pro with SKR 1.4 Turbo + TMC2209 + +Configurations for Ender 3 Pro with the following options enabled: + + - Motherboard: BigTreeTech SKR 1.4 Turbo + - Drivers: TMC2209 (sensorless homing enabled) + - BLTouch Probe plugged into in the PROBE port - ABL Bilinear 5x5 + - Automatic Filament Load / Unload + - Measure the full filament path up to the nozzle and update `FILAMENT_CHANGE_UNLOAD_LENGTH` and `FILAMENT_CHANGE_FAST_LOAD_LENGTH`. + - Linear Advance Extrusion (Do a calibration for your correct values) + - TFT 35V3 Controller with two options: + - EXP3 + TFT cables using `CR10_STOCKDISPLAY`, or + - EXP1/2 with `REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER` + - Extruder Auto Fan at 50C (Fan connected to Pin P2_04 HE1) + +I may have some other options enabled that I don't remember so be careful to check everything that corresponds to your machine. diff --git a/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h new file mode 100644 index 0000000000..e4eed7e26f --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/BigTreeTech SKR 1.4 Turbo" + +/** + * 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/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h new file mode 100644 index 0000000000..77d6a71df3 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR 1.4 Turbo/_Statusscreen.h @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/BigTreeTech SKR 1.4 Turbo" + +/** + * 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 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Bootscreen.h new file mode 100644 index 0000000000..42cbcb3f8c --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/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 Pro/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 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_Statusscreen.h new file mode 100644 index 0000000000..f9a4e81301 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.0/_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/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, + 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 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..a71a3f4aab --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/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 Pro/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 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..c6ee0b6003 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 1.2/_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/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, + 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 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Bootscreen.h new file mode 100644 index 0000000000..bb8191e8a4 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/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 Pro/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 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_Statusscreen.h new file mode 100644 index 0000000000..965ec3a476 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/BigTreeTech SKR Mini E3 2.0/_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/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, + 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 Pro/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..3447217d28 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/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 Pro/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 Pro/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..6443164263 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV1/_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/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, + 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 Pro/CrealityV422/README.md b/config/examples/Creality/Ender-3 Pro/CrealityV422/README.md new file mode 100644 index 0000000000..ec0e54e640 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/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/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..8a68e87b22 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/_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/CrealityV422" + +/** + * 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/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..b1a6f8473d --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV422/_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/CrealityV422" + +/** + * 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 Pro/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..3e541de8e1 --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV427/_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/CrealityV427" + +/** + * 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/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-3 Pro/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..d12db4bf7d --- /dev/null +++ b/config/examples/Creality/Ender-3 Pro/CrealityV427/_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/CrealityV427" + +/** + * 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 zcmeGDcUV*3vH%Qky7bq=bm%!_x}5yohN%w)|#0$YgWn3tl8&t=PLjM)DU6_5D^gp z#)J=Wz6y*P+(dW)fSDN}0RX@SfSia6AR|CTgs&YD_dnpPMB)I+pK@YCr5r%G144wa z2NC!W%tCF?s|;~pe%!`%~s(h&OG`AkRv z;ie&UMbS*w%wNyl3t@Z&P$bx0SU?~EIRA3k?$mOOKDp2_E9Q54-UC{{tAcP-E;5SE?8-Bq- z8bXAY{}Ku5{|~nRYv2C|qM6yhM@1rkcjyn>z#xMVLM#7Hsev|O{_Zj`_dvg3w5z*8 zh&w7s`0wOyuK%F*4@Ud`>8YEmjJvNpl7JRS7!W55c-dk>n|EJKR1L&n7&JpyN1y3*(N2cCdY}W@f7Tey+j4y9LqL5F$t??S^nu1uM$Q%j@asC|$m6C?{v2qpYu>YpAa% ztE*%vt1GLk|ED1WEd&)9pR_9fn)V+$QPuPF^+OZ7M(C8hkib97A$oe2 zXg?2xFQFn3W~3_sG0;~M!e~a#pMufP#8KV7=zZFX;ar<97qhg?_ zr=uf#nIMqC@6PDx7#bQX$|}gp>B#9S>FfQyGl>7CGk>F1`j@ma{}9F)5l9%+u)nPw zYxjV^LB0rqKhsgw#r5|p&=B%R`?&?Xy1NPetvt}rBPi4b?XKfV7zM(F@bEyO5J6#o zZ8!qrW-e#}c{#$41C|B-og~!Doxtc{&x7Am$^2e!e~BUUmva6op_{8}5F*Ie{cj@b z_y+w`Si%ZY^>smc5@v&xo4bcguy2r%rrb3Hl&3Eu(CaU@zKFj!@E57f|6us1-T$%d z|Bgx6OMZj@*pxH{{(Jpb1OL^)e>L!54g6OF|JA_%_cZWNx5gbs@MS^?PRsc&U}yPv zi&{WlS{6{&g_x24cFzESmxss^AmJ7@;vu+k!~iJ|F&RMl56k2)Owm7>49Ajt@7|rx zR{6Tn9``ywQafKGb|V;-*DPTch7eN&f-gznVB_nG3?!8W03<31{oBg4cW@M-*dREM zJODGm4iLMz2Kwt*TAKdh`M=(dXaBf~z?9T)UjHk~zb>S9BREF{Kl1_sMbp(E9YlbC zJDjGWLH@ttYy!;U>gD1_fUyMl5}F_&0iOO{e&a9r!*AI0FZjoA7;OX7BlPXJYboIQ zKj0hx19tU7BMCT!o&zFC-(Z3af3DxoGmSgS)|&AA?IiO6fdC9J0(1cZ00I~QdVmrj z2dEJ4N`Mpq2BZnUfPX>%n>P<&4)_shT?u!8APhhQ2*4BY0)l``gwkLFcXz_mgHY~H z`1k^0zx7X`BV7N~YoLcb_)ifLjV=I?EuWts5XP7y3jltmpPzp(J3s$fPVluC0iXx< zPkO&n08l<6l&Al*OynT|(8mBk>x+Mu-N*v~{Cxo6ct9n5OhRMae?vz1vMolB@Hz- zEdv)L13f*106PaW*F_<5@ry#DA`-G1@)A-i(juaY#)>LhI{F6sAbAr@sIG;Ep1#g+ zCPdUUGz@eM{EUqJI+sK*5nPu4KdKz>849$N0Paj|hLS zCSnwn(;;@T3Sc^)2WUu$2-1=;0$RX9b7hSVh&0n5*z>8ow>#_X4tGW(>sBEG6VB%V zx`iltYCF;{kFp2aZzwmk)i}yONQTP*iVQ(svt z|1!SgjvLv?!JVdUp=SEbXA?tG%7pvL$<>krjdL7q#964wh@-SiE&naREBvd;OLRh< zg{eFu|NC?u?+!@2wDC3SumK!$wBT5d6HgxzeQ79?wst)*bzL~41Ml?9?pFUtR0f;% zC8w0tYyF*OE!|5a7Lt_LL3|5k*7J2$!W&HDUc_UYtOXtrP_in6dRf6FpZux6J zAo4R3C(qSo267qtaJ8dd@|K#p_m2~=wYTM`5?pgqp_3Rc8EYYI5lJuu|WBzQ@LUD~d z1f?tTnf7z=vq4PUBrE&#_V`VsAe#qBR3e|r_$nOTexW54v!<(A$9vUig@tuRgzz!=&}91D$%7o!%lWr1Vy2oA|e~2(3P(ah%L*G zh{n`M@ak#vy|f)y_1&`{cYI8{43B1heHc3Q>N8J#a(WI}PrLFT!Mh5(<+fVfAF*;d zzLj2nk!Nz}84Qz`InTU385@kwgn&ST#)B*C$v?de{ElO$G1Rx;B09?aC>R(6#HozU z-wnq^HHUYr)G<|i`BdsJylw50uwlPEc(uO*H~orE!BYM)b2eW%z$->$8Pu= zPCw&Yb5qEgZ%CG!_hkkSFnZ+;8a{vVoX1hOyRN!Yyw?sHo>eJ`duzgv&WjxXwX-8R z-l95^_ZDjVvMyne4^!34w8^AK)HC2W-#lt(DK1^Qo%bI8wrIC^iLCl0D5i#+<#ATD z_VaatwE3zBb;aDThtXQj`P_7>$#rPfV@>Z=1ukc{>lbgM=l7l^ezrt1IwFi=0fTDO z%Kd>Qa@(UmysjmofxmOQk48fyd|=B=-+QxL1|}0 zrFjG#Xu_H2XIOnG7DF8U8RCeFY8m+<_l<4)l{9#EDqgoWYY1YsM|JyT6K|hcc@0_H zJa>gkwA<6&a@6XB=aq@8ziS}uFGnv_)M@-bB^;jldm z&16w&qYo8k#yCd}7jw5T;L^UBEmMX?SY|XhY}M%DyO;K(wlhZ4ESQmUPMBa_?R+}T z%WS1+ofB5K>uH?piUn^*yx%v`sMI7~)J)eip63ZeUzsKWvYymrMwIwSJyyDAFC+Vm zZqpNMr1vvC?%fFv{7$va(ydEcZt}}#zLn}J#iO`cGz%;RBd~uvT~bO`NkKFed%-Ez z5L($vJ*aH$>VHDAl6q9->KBZ!+IT-xb9Te5OLi_8x#%1`BPmW=eJdAwr7cqV+gj5k zd7QWW@tYiF(;QxT*XCBo^s32T_BQsM)RmCaO`P%REZbbh8=nBX0c5Sy{Ripy-#HHV zvP3;)y(>-md|*5RL^W-ZFST*4(ACC~;eKxRg3=in)2( zZH>~FC`rFT_vxq9QIlZXjdj1f7@H%ZgBs7lR;}PXwi&6}ty+$cJ-TDWp`K#91}z1% zukhTqPWFh_1wGU!C>$wO4G?{U0sJk(ms_MPOPA(mC>?K*gtmSf^s0GI3mbX=GG!~^ z7w2(xh|wZfig~`70jK3>SVe=R9F#pZOHxvsg99Xzsl#({VCdbAZGT<+K;}~wjoo`( zpYlR-TUUa$JE@GsFDtzIX^ovCdnfeLS;$%^vRlOM>B0?@xXpY?+8PK9788?95>r&N zR{r#?`TsI454pwDm!g;JOgnjk+n>!;dB5Gc^jW|&!hET1<@$+cpcTgOaZ4lB#$mjl zj*XGiFD_wYy$94t3;0lqF$qbI1NXe#$?O~!@ycv*kQl{t9>$|`O>u=Y z^B356twO%=s5HMIEctQG?x_g>>hffM7go_DWUvFJpPu{HesHv^Ubc+uquar;&>rzN*W>!i*^S_|=nXo&@e<`ZDWN~Ar zYJHK{k!i|=4m7*C9V;s8K)GxvE4M*nkG%JIS@`YJM-{{k*X;mlh4obB=+``7Tl7Y4 za#XKYw~T}h6iDz?@$SOnB+OA6Nn#`%7lu=f)PDpV7~AgM%O~r+ zQf<~tN|9Yd>{%;Fb%)9;uC+e(xpTkKD2VmSTiPajuS_@KDcIB5ij`$ZTi0totC|N!7ef2=f7K*Ze(U zr4&uSIUnv(VU;_b$u99t>O`a*n%(WBXV6?C7nw-}ggig39lc_SP(XIS zyRN)2F8cV_p^I6y2otVaJ#Zdl-`QR6t06CZ`@&UB+iq`mYt<1?>e!b`QRI58o2Xh- z_|5WJ;yTfPYj*xI8tzS8f|S&;X!UTm;=-;yIwH#KT1dSdtd)gQ3mY}eAB751e|nDE zK12Rm&f6Fx4><>36s>RDO0>pzOqOJQweNl^FtGFe>|q|ByF0%>BEQB?;Z3&L4=$JP z%P8Iccl!3UWH~5K%C}40p`m9scDhm8&2aXh^mUibIYjQrxcaslT)RgsIctc7WT+u$ z*v#}PVgQLvZ+))_l3O;Bjv;0#9$L(bR^z)H0JD9qM_25kFy@UaJ1J)H zWw;?*WTv6N+SYN+M`v>flcb4rpXJt7dxdc#e&9%C8Q{ zty~wzkv_QqD@K+xk}a*FHq<%bJDY!tGf4`zY_|61hNoG~Bl>1eZmWCEt(C>^jTTPo zo1f3|#^h^I+TDH0a|fa)PG3{bVlKD)xhQc;?nzfaazwvvFpbV6!vU7VS+_netw|v< zccS=h>!R-uHsW{$W1PgkaJwvT8=-!AgfJeHa~ za@j`#=FHCpL>T)mg1L0-ac@kz`k%8NUYmS5WACz;(~?{_woFkeFCG zgM+gBfEz{!GX&?bHgQTAYO(q?C=*jg>O0bnnFQD~u4jxNa;k=&xcaS@OZ3W>eE-^c z_lLvy4=fmOSKzVo-FF~^x3s>jh94Ul1{~MMH&fBR;vTU}5kp$XxzcM+y^{T?24%?6 z_+exuaG&^2>2247q;>hbZE`oC4Hl)h=7%BP->w6Q+SZ5qEv8>^x}k4q1O z@AEmXYj{n`y+-Q7!%pm05t6WMT_R}bK3e5D#Y0vuw_w2sewjbR%@jpsyeB4l$pI3- zDZm!mP_D?OI3Q@0hn97Lqz+Koa@#8%uz)*Yvk%4wJbGvY%aUy=UJRtNkTKWGvZDz$q2t2 zlS^AJD&&M0NbL?1&;PieKM$^6xL~(;vqvm-rb=c_iZsb!w9t0CT@=&F`C-o}Oe&qd z5djhv`Nlcw(X!v-Y3=Z!Lnm`ep43N;NR~rTC3rE1wN0lNU6GZ1T$AEm0bSz4U*!xw zWvKECd(z>Uo&J{U$HINT8iBO3GD&wv-2U`#gJ#Onbt$jy?t>&Ap7hKxFGZ=T-{9ZZCp*=5$SAtX-wmhLsx1N7Q5Q_PDj-q=@A z>m8dd3jam_7&iv6xkciAXuPGAwL)=w{u7@2qT687(Ajc(2+>mv;+G{_<3+2=sLj`} z4UWaAJa^OTVrEBtX&yC3UtD#Q%C=;Vgribo`Atw^_~RGQVBY!VPfTTkUhXINFwkM! zF3v4dF{;zG#1ZfB_d?AKq+Ok1IV{zIHS;aml_J1GW>B-Il5dF*_wvS(7Xm~Bk-6R0zHc%VtCB4m=0hN}w#*ZHxv zd96>Z;6lRz-;;~wM42`eKE-0#^;tzqMX)v8%EGs7@!j%0*hi{3@V^f|P?3>#Dzs>K z^cBR!N~_fb3ml7zX`Nd7csL`O^Yz7Fqom+(K-L#!=JA&^VlWzUaXZ1!XW5vB#m=&rknMLwxUk1G9^Z<)8a9Ou=P^gD2C4YN~ zYJa&|XCvm@pus1Fiz^P!>9cVYP+fykI@(aQA(i>GZe`R>rRIA(*2C*9%ZA#HrbUh> z=NC&B0ni#N2^$SLwR9;sp0)xSeMaUg3_kFjZ%v;bk!m2e}9XNko!-cruw z3i9kz3u`alJqxXFql7o6o{FL5zi(~Zi8^e@o2yj)G-w#&J5q+g_))qh#iTB3P&jFX zYf;^{ZqTDQ0k653S_~W|m%-v$)GRocb{d%^-~3*tc9I5ym$(NXLpf^gM0b zs9PE;zjf&Fx~h_3-*3bp35YO->w>DlffjvQCjy<_A-gXsIHEsj>5&1$AHo3W5+*!@o zsOWNax9EVQ+8nt4HLq``dhLR5rr{ipmLClFCx?xp$KRd{OydmGY@w-jKGko|j-YTV z1OypwS*gIVb|Oxb!)$7Bf9jay609&0AUjU zc;wdawBQGGp0cRjoQ{!JtA9G>CgSOTb&*&ePr`|vs *g|D(Hu^)N`2p0~T*n)xRCt^LT)4OW?E>Ay2wpeE803!#)y5hgi9=4AJq<}_Exm&4W*bFhOu zZ$CM;kk(iwB_iR>U45(OETtm#X=M7$-)E9%%q&Zv-m8|*lZ1NY(sv zexKo=Zs(xa3w{-P&G2|WP?+ipDN*viA(0RvB7H@5$gyG+Cg=l7a`!szM<%$_vq(3+~*Jg8=h8ug_-ksX5;G!IV1O*D`&j z1S)as>w`@G=sSIBJRxVcU*&V7O`(K*E63tFTMcW>2Pl>AU9C3~^XvWIQuo=ihYp5>~b!(PCO zO{MRnczrC4oyFb__W=c^Q$$LE5YXBCRIFLUA(@o@-U_emrK~WH(s`6LTA%j~6y=R? z$RnkX`6jzc`9ye2m@E(PmkSO&sR24~9D|YDtuIo@+H#L|A11DeP!jEzUzUlGy(?iT z_fpV__sx9%k>9PAg~WbvTXI&~Ip8ikkL_6UaNfA6zs0bgpsfu;NF}?K3;|(^R`ty$ zX&0aS#PVC4G(*#-r3X@Y-+vw+q88;C>Zd3Hc1I2Dd}19hIytw)8-}viYjy43RKdMh z0gzidIfPRn%vR8$7HfHn@1gh2Ny}ME5d^qy6U08Rv`@dESsEdKgq^nD!L#j^72t(xC5HPQ z9mw>ehU3@8+Rw6#b8Kzd&QPlEqsZ8D*a@DYyQs$xYLu`F9@jaai-1q?0gB>~7Ru*8NB=xd-nzo03Sb5{R+X>E2#M*gN z-ySU=qWpzl?*VKfc!t4<)CDS35B*3yLK)J!$1aJDSs0UQ&CF%l$-#3cJm>h)Ti|+3 zdbOl7dM0{(hfflM+~SfVtrJrrEde+c4l+YuSSjY_;~}@GXO(6@!M-OXaqdoXQ9UOK z=z)Nq_bZc5Bet%5`|Pym^WaoFphpAC0oCRJ=pz9ZNbofSi>cAEkZ)vcGjW^jQ?DJA zDeZ2GeNdlB>6+gxOeuGRYxGXE(-;KS3ok6Xc)JEzM^Re|lV%zNo&_VO%Nfuc{cX!U zZHs~}3`%bq>=@Q#d;P)YvPxM$C8m>xW=~C@giL+iyKK-s?HUj~)0RH9GnXe@>8h2T z3QbdFb-4V+3~FC=w97VxNL{dK`c4f)$HeUE7z>lqj|?c@GM@-$`9Qveda~fABK5%8 zpjP+wV`V%QWIk)qcwX(Nmo2M}S!086D3-d2C_bMy?>Q&;W!ks=z7r`+!v90xe_d234#n2TQJ_q$i^%AWor!qSrvfj`eWz>4KbM`Mm#Hj(7k^sLpBxJY!?&`claZ z^OFuY8?J;gb0UqAGsMJS+g6CO(!@BmtZf;@Qw-zoYYY@;@lj6-@51SFvzbcSqBSZ{ zuBZ^)N#l;CwJu+$t1;Q5*9_?I2Q*S4MAhyW_g&}H^roUBBkSt^=AkcX9awG-Kb`>@ zThj}Q+c`;Yuw?x@dV0hDenh@o(fWRwQOR_5iL_+>KFi#YNF=e&!2zTuAfRfaim#Y_ z{o-;T`?V_u^v{nZ1FqBd(IgXPjGD}kWk`FY*)UO{8l}_SnhRkGa_hPC;zK8dSe*(f zV;bvi4aYp)PfrSC1DBFbZ|_&HGcSkt?5rfcVTLyZyb{LA3=NRkZrZ3<(R zBL_F#dyv}TRu3<>R)hI^R1maskvmJUQ7XRd!Opz(w1}U>^Ik)(zztYsd_m?Y-#c>B z!4G#H!m8ocehg^1fS(0__TIr41T~AIW$8S;x%equXvw|Y^=pi<=-OLKy@r}_ZWjvD zy|KV|yVh4&xN7HLRvmvb{;A)}Fn@+B!j)H&v52P$6h%xY*xKse3$0k`DfIA}E%Y6& zwVO*(VpgCXXu_ACY(${w{a7WfaypyhL$?Z&*z^@zKg_*)8qB@>?b*?M^4Xm8XDi$r zwR?e5PiU$h-q{RMW_b-CjcKD4U|Kd@O(SfyNB?=Fy`-=aSN?8y|C*Ykw+ZUfy0WpQ zSX#@4w{2aT8{GBo-j;WQvW+3KOUEoZS?ighcUuheIdQVDs<~4{Ans!GA9M^q&+SW8 zq%hV!?m~uI$g>%|ndt6&-%VlQvq;52bbJm}PUDQ0v1V1KZ}T`V+jQgKSx2RrH>a~e z_HJUuu`KM4hT8#x0e2Y>(*>K_=~xDkFL$XpDF-()%ND=F>rG&O2hX^gB=k+P?+b&^ z7{0?Q6k>%#La?C5!Icf0BK8LktmGnO{e_w{7ulT+G9=_TSOFp!OS)VMSTnnhM@(=b zwGOY8CoqJZ7NilCThb4z5FyE3z~6B+AP-l+^6Wv-Wj$Ifwz+rdi1Ncp2LXmv4}UU_Zj=w_-K4d5{?CLgOSc|^oQ zZi?|qz%FNQcJk(frAD`hBr<5x>{EDLcPGLz^8hrqY*WY|2addGDq#b(}zo$?Y*-y^Ca`pk<@*!4vkl}kdn=XEH$R^Ps!M_2Ak&+B$RYh$ zM~ApPq7U#zFEW{j0Z=-Nhb@q#U{_SPiEXNSA#PS(iMkFMxzti!6ckz97YzUb4-xtdv*Gi2bPmw&|}3q1KS&1hji^$_@-$@1!w?@9)RlNPDf(bYkzj7Z@ft7 z3OKKOpA?;Xn3&eE8h@h@#(vsqFZ|O!9KBlQii}?;#FSc|Zra#R8LNv*Sg8name(kl zW+CxQD4#;P_)lz>t!uv2!BB~X;pYI2O5k zJBo<)MBV8-ASs%;J*&kw4KMnq6U+-pC~4%gRq^UYqR#{0%n`;ulovu?dm)+KoJkB; zPw(Ms1jnp@DD0guJbd)6tx{6TmWp1l)nTK5YW5pj7kKwI)7+BaI%syktB>WAZdMNv zI2P!DNS!v*;M?2?#l4GTxqfE0W9cUlxF>S(uFHPZZiWzFR*M!waOKGss^pr>9f`eE}X z>~FzGAnp?jo|#4N;vjQkyeFxrVr~i2(XI3lC+FF2*epRiHlkIP+NPJm<8^P=rz(_8 zoF-~e}g8I&rQMr{WD;+J75n{u7xnA*29_>i?8K zsj*X=hDGTFS77|~v7lynWoB>oMuIu$@jN&)l!p+G+P#;lf}7QJ_QQZ$IbId3zmQRn z-YN_8@n2UK3($O>HBSgWismT6Z)EO{y$QhA+_7|uK8#zi14N`6cLzz-PpcYkWDLPP ze5k{7-v)@OX2v|`M)-nfDSKu8b&Vo4y-!QNGD zi=m&?3X)t$HzTm;fSF@PZ+X4K$BBw}*SpZ#P73Nds#Kx0?fdF!m*7uIc9hXM%5gY96+=K`*18zSyB zF_Mj$8un1hYR5~>W;3lr$oM^_1*_ef9m#oJ80#dr5lV;Ss}&44wk*)Vo1mI&EuO|c zI}XzBvx_FqjA0&9wxdtZ{$c5PRMD^~xPTgJA1h@1RfjA`aKD9JSk!oW{k<5$HXoVM zuY;v0Wuw=vmUQgNm~3Eg$NAPS2w0{JtTJ9Vh@YREM6As8qyOZwjZbv*zYY z!4?f4nU^z_gVM9_ek$zHfg7%5mP5AG2}i26wW$;NNAmWr-ZL`+;xDeV@)QM>$e)zH zUGPhOyPFiV(fQ(%VfuQwH7a?Hp&Y|Nm3>!^B;!zd#m3oP#+niQ=|`(`a34+^gHno{ zzR5e8=Jm6-!hrbX(H`R)p-T(V>#dm>bz_t3^rxv5y9GrumtOX-g14n$TgFcJrvXWa zji{d5_-SrhdD_nIhYTKl@Qk;ac&>niPqJOZP~GVC)eV2yh$A+Mqnb>a*nBxs-4{~L z3(i4LOXp$4p;98z#+&K2s((_C{#8!VpD@FuBTnf=s_K1kn+jvBsy#wVe%f&wkWd~3 zfU=+75{i3sg-(@9i!nnko0$hPq}iW!JKgvOqU8>2B|ju_D_jvX_7GOy(cFQXhr6Xy z{MfNgdh;oF=84#sj~y7}#J2%nPUsk%@BvGm7=D^&+Lo0#dcXiQ{*n*DV5Nw!z|kwM zFI{{QMp^^?LQe5Hk+3bBPTLJ$>P5_joTfCdKYt>v*f*$4|IOwC$9hSGgh8VZ@rY;B zB`s!4!+h~DvmrV7IdGa;@zX$QCewhewBwa4tPu^}jnjibGp`r#7BTmxWgV0RBsTfy z?q~RPss-HB6t*mDsuD5|z-wQ1bT>jT7>}tJF&DW__d2@^3g*eAGYWQBNQ6CJ1Cwv; zZMYq;Wqky^U+Jyt*j=GCR#H8cBKhkTX3Ni)t5MkGf$AF~_6Z>OI3``| ztQ;nYNLD{YQ#`lMJFRW+kRQ2Mz%y5hOBF-grjdrR@Fnxf<7musP*aUI)3Q4pXz=1S zeHHv&3QBX^o()0pdF}x?;L|UF_f-82B}l+vbUUqiiR+o_WK- zpkJ2T@}dIqeLsJm7%b!S&Dx*|lXl%%r9*g@(%P$O)s0Fa%a5h!gp6rQSU@unZG<1H zHu6=p5m#)bmbBRJTQn@n3iBU=Lm8I?Bz#FLlQAHT{V;5|M6hXs#p0wWoToJ?A6ZqQ zoI@tqoGhl+u60Y)#`fPicyt-(fP(^G25X^n_wpmXux4oVk5~|m(_6=57tr(LYC)&; z+l*;A!~8qu-!r9)4Mr0#1x;piB!Cdjsl-edI7oK&YiqHSUW5KsnoK_jCWcJolBln| z7uMYKzw<7Sv*&X`4z{!7l|+;zM$4jgy+&|GAJO;p%bs;+5lzOJT){nI?b5>QG7EDV z=nSHPT|a@o+p(V(S?|R>OxM;74_wAOZShoJV;X&C-aON~1j1e+!^}X__njm`V~o2T z=9l??Oc&$UlpPcf9a_IixZ%0rt6w>*Cg|3t!l!L4T;^`iG^d9J9DYNHM^SC|^;-*8 zi#9)QuFRB+!G=MqJuU9lh8U$!`-nDx(ueb{Q`Li=Wb|B&NKjcUE0wS}BK(nl+7avq)^<~F4b-DyTklLLgZ{IIUH= zzWGnYHQKC+v=H+=o{_QZWR@YSi00>q%ekBu`u7x*?zKXc=EP04uI}^tO9oKWig{2? zvdAwa-zJ#;E%9x%2I5ZBla=AJ4jjG}UT>fL;%y_Op;;5`l%I*~d>7MG7q_iDZAzq#XTz|ou40K3=++Z+fh!TW`#_y zofKb%va?-FG)ie^BpTvdr(&bfaqglLuG1CRoOCAZjH0Z5Lb{^&BMWB@^~%DfjMKR* zjj8dltS{-zMZb<%(@QPkPk0ND;@;6Fe07CJJL%?Ue(+LeD=)3YezAzwjKY$w)BhbPmt}q$L<(Qq3JqlrSxDJR+ z0Htk3%0x+#k+Fu^^>h+f)M=O4>iE#g^3~VZgjzQ}22E_(t4%_Y*jU(I>s_&?iV^xs zYZ(Q;hrJZ_KD_JMXTnj!JMc3z3GD)fK_UAG@%@{Xx55N~iheXDCumHPwy7XuBTkXt zD&$$;9?F!;rN1(Fz&bRUhQVUg#&^D@g$|BaZZ**lgCe(>Dz8!CWLz)eEuR+xfIM=t4!QhZNaRim4O@jh6tmInFwV!>SEs zP0jdr9kpEl?5&|QOC%EJY|tSh7u58iUbLS-Mf50p$if!76q)81!9sWY>wJY3Q%G3? zzxC3F3ZuNxXsR%aoERYXcF@5{D{CdR+)tXFR_8_`)g@bdkxG4cGw`E6`A8d#+c`jA zVuOgQYi=I6?#%&qNN$%FoFFm#<-V0H_Hmrw(IzE?kRgIuieRCxEewuZk=i!awVXpP zZbX(t@wDwdykD(qaeiNmrAL<)TRzk`%!(a%lkAtEi4$6PMY%ihcotnhIY`t$vl4BoXBDNgv>><$w*0xPotE%SyY=gXUVdKg zh?7*9W`v~TqukAN0C8ue5A*QTs^9yWyPQnCL}PcA7_^5z&o?bld)v$^Ub6N}Yq}v? zT|OkT8r}vOPyRY;cL!C9my%lyE<`@5;nUCXH7;tfvs5i>OjgcVbW24`C>(rer0iN4 zuE>Wl!9^p%&fNF${8wkHT<_lLhFj6T*TP=WcxNG@TFz#d(}uxjlWn*NlBN!PyIJ2{ zI?>b@erKjt`l}RkuH&V_yB(RAQQ9l(>P$vGbudBiZ|oqdq|?}6qU&B)U-0%e zMdQ{6wNQ?_+~U`n`_whx3=LO*%IkC%qisSfxsiMCPK$@_xYI`xkc{O5OxZctNj;NO ze=QP>wd@(0=Q%Z-8uV0&cq1t>uWKX$#%DztCxqmV$<3wse!8Q2-Q~I5$OX9GPesA* zROWAIWe^oHye6%I=d&l@_1mwIqh#4$JTkm38nEaukj)|~F@CoiSV{MuPLeV%%nn!R ztrJ=^WPBSppCgASF~ztzMSaW0tYob#IR1>in}U76XzvQeyb%Kqo9Ysf$~t3f#zX>4 z;)S(${CJPF_#6vkUR*%5;hylJMY3bWNJMy!c}E2u3jXr~SlqsXDeqmAV!x2P-4Bs& z7ex4WEKje39OIM;xh+<(dOIJA2N6553I|MlG=ku(sQ_}IaSs;o{OjOeps}r}jU!^M z7sY5=HIhtuVMl;w&)m>Zb4H?nZ0n-KJ%9FaT!)iEa~W$DORQvsVQ)-ScGQ-Zl~vWn z--ncs8C5rrH~BNy8K(~}ftzBL9~+Xd4(?g-|IVSxs#(nZp}m3A@Q8UZIi-pnFy8ZX)I2wEEzSP%20Tmd4Y2}W zQBX|Ni?VkJk!Vbq)mX$_9p{?t-^fteh_#RU($bB@qNOWCRFsWUQ2 zlNVxlY$Ur|EvmvR*z|TQaCi@}w)KOrSvi(_tWeJ68OeUvwVb2xmfJGWl-ccJL6!Y7}X3frK<=9ppZwa!p z((2NZgXy-EP@#kB7fC&S9{!c{pSbyoV&BbHdmQ}01`$)rYUn%X<1n8(AD zN?IJBjIDeha#DcQxm;?yJbqAIYi&V2xG2v@;(Me^Wv-j+uk*>@K+uK|b0p+0@z?x# zv4k%<2Uz%${7uH-PAK=>E$p(jTe(l`0jE@Q#P!X~Sh`^P7$9hx*_XbkCog+jrgs5sYc1CpOjxA zAh%$j*!!=xigt!?yNQ=2@S-xaF9_6aQT+UnV%a{P;>C2)o4ct}5WCMy6XR>*$486? zV~CDO6j`l^-vnQ64XAvY4_h~b&VEdy%>gP`37OGufbrRc{Sq=oTH&q5oNJGzZV_E! z>NybFV=N|;HJ=!ZX~@$otdEeqccen zL%=O!RxpTRV*xrH!YPl?Jy12cNckM%7k>FdoaryXB}h@cR)!a4fFwuHpfF;5 zoTV$Pnr##BKW*2#>pO~U8^y%k8I-9bgN|9?HP;V&>Q;Bgr0cJh>L*;GJ_k1Es=4)? zHI}|m@_t>blCI@RLUgDEOEAAe-lG?h+xQ$oZUFG(x5SXn7{8pS!Z_0lk-`TN%_1bFn< zSYKu?$A@RYr7{rpo)S+TzAbb=+%mBk0lrkVf~iY}Omgo8n;PFxLr|bze}mcF)Kacv zs;@GPe2>Amc*E~0V?<;1jKR)E(d$lP9KUYBA`S_L(@|D?)nWnw=ga)aZD=dlTn29+ zr?leO-K^ER+A{31#I<6{$_KI6u}}sn3;f{Xh|{4Uy-s*7k&4o;El|uH5zm-+QAaIv z-nxhocgYr>c*b(;P6u+;?qg?0=wR4mC*AbNYs7Z3$*RBXCcxy zQYjLw7FH=K`hW1@xpDHy2*W}ftddg0KC_guqZ=zrYjJ|Gw{BLZIXe7{ghZOv6Hrp> zP)HRr)t91l(%4*OD~I{lFNqY7f_C#ll*fWw$EG8<@dvXQo_Qn90l<#AXhodH#+J5Q zA?>qXKtoc1MJ?J|(D>?mCL6F0U&J)~n>ysMLYR)D;Uy1C`me92t+dYprQK7l+cvfr ziwdTx(;VLVz2v6SOHs-rH&=#PP?^hT9G6SC_;(Gp;uW{$-nB~gz^WWS?Aa+x=m1%1 zZKW}blD8Co7Qh}|XeNZOqO)_IB!Vbxz)*^0qESQ|YiQMtTmI{}vc6u1)srWgM-%O# z8xtF4&blTgvbbJlN>8nyWr+-UgQG23rr<*k0w*iiZE)sA{B38v4xUdf3Z z&ZNfbNO0d=*{A=6So2do-9h;EoC8!p978lLusgQ|e>u1HpP>UD)EVs0_j#Qm+7%+MOS>D_ zPs`WkYILoFY=RukYA%T=aX5(HX5O>X7#fdQYBV184NAi$VMtz?bgFdWi;-=QSd`xC zPAXj|$*Bv_^7Z$&t2Qlp;y!nl>*@!IFo`V9}$56!Pp0teI3jYA<9;EgF*H%_9ev3AeD72 z*_W8HHiJ|Mp;CRmb6xlM*ZaEef8qUjoag&EU&r(H%rUYF{~pLYPkCp0b{`h6hL8DO zERS=yEPt&;9qUSh%gB4@Th76U@1ed5s}6VGc-T24Wc5%lKQ2tZYD*G-s_`j3t;mDK zYa=`E&F*mW(kyeq$qb@{6MXK=FIc*p2GQ8?(FvWK73)ZmF+K%Zyf;aoT|Qf9($MOt z(3QMfl=k08$(6n3=WX4ZfXwSf<><~%S(Z?x^%;ZZ+$*^J%Rh#V4Hjpd62oDa@!!+o zPuHT=_SYCMZEK%=3ytwXw(zCM?$s6*MHLM2`Y30$v!W|II}d5q`{7RH-JP^bpScuh z_P3&!?q~}Ou%`MMht39=%}>P^wzZ5E1I_z)sj^qqdOhhZd-nvDFS!--CZ8UhyS}=@ zVJoai%oYIm98wCgz}1|u%p|zjV8ntq2{3(TsDLyD~>q#+@U5f5Aj1a3`bzBU+hSVXIuU`K18RnYtr~ik;q|^J9 z3|)_**siA)JW$M4yGuv8R|KKD#xtls3Q%f3vEN zI@9B?Q1yTS3RWH^02c;4+QT;-u7Eu(G*Ljcs4e)IFwUj?(? zQKYdmVvepFa|zh1r*9~vO~ua|CEA5}Wh(PRiVcINUJ2*_1?vWo>XORefrG6?tptmg*?%b_TY>1;)r(d&~j3`p^ONEKd7JjmXA@ zez4)PnB@jH{|6DCy{xC!$s}QYQEF$aI3>kXG<4YB>wnDvDe>T*;Ax&g(`#U+&g0vD ztgkD~yX2c%UwD;s#&`yRLlsHIY1xfc#@RZBmCvreAKf2k#dUP4IcS*MkdL)0=pbAo z8_fr8_iK4>o6aO9Vd_XV0s4$Us`Aa7CShsrO&SgukEsRuRsM)gTs9p&SCE|gPV8rV zdf#(J0e-;G_8v~d@bDa6; zb5Q(dqQQgE9`M`co$**pg;n38)rreVjCL<7yG^@=B(nSH!P!xFR@dAWYu7;Uu~eD@i;*#R6+ZX z)M!E7yQIm3F^1bXtWOTTh^A{=5)iBOM(x0QAgzFUBp^JJ_hP78&rR*3;5>E?YM%0T z>cu7SqVLZvjbFv`EwNjFY;NoUo)f0V1W>rv5~&eAdJ?m&WV|gZlN*c*OL9BeKoXv9d&12LmT?5p$oBFnlVJ$+$k(zW)d^Es$TD(jJs&Nbu$qrGc6g_#9Pl)U65=KID}8RGp|xGD97-^LwtZmS4tX=^Fb zJ)(-J#3Ogb);TATw~$&(ulExHI<`np$}4F7y%cbV$%6@@{T`e8vT0(c`U^wYx(hWY$phX^t4c)SnPtw0S-)o_PNvuOeyB;4P5Z z|27c%AW0}A$}#@5zWHuC0vh5biJVu^9n5$$SGt!lYxO$+A1ZN1jV6fvVH=@iCD?Lh zzri9zI7iB$yl@=q44Unt7%uWUgLl&HixsU)3i{LjklpONb=2X|2h8S2$&y~4Z%lv? zz+*qeMs5LJpy%53r}Trmys7 zK*jER@3~&@88V+yR0b7NzwG?2BJwr4{#<7o5f}@`2n4n8t-$H7DwHcQ20au>`Stfq z@IueyAFA%hr?oe}z}~oSuUDXmK|O!^*RmAQ-gTfhDxjV#r1{?6qUW+x_@_-4vMsqM zqY24kJt)a!*6}fGb6z~{p^cq&$eS!F(ZAOMANxE``5rsrs6pOI`Bhebw~%@i7*8V# zZjruM>+5a8KGWL-@SDEzQhq8r6saQdI3Ert4Yp9)s-b%cK zLtE-7RW1UoZMW2(J?|*pQt%U?7USCh_rBApoOwOP%rPWHLr|pAWMm6b;I7@9KjZ)5 zjNioB2mDuyj_&kYMQebx;-B(+!p=KAMPXtC@|yiuRLVvP`5fpLF%lj7LBA*?SAg+O zWswGVcUE6iU&^6cCtAygwX^Ttld=mOqx$qx)uPE0JIt1=S3B&tGj7`C;h@Rp&i8y6 z93VvEC*LRE=n`RQFH}4P4PqpkXI@d8v6IlF7X1X06;oYVqWPrJZG|dW99$8x{Lq+UGPq*oOxTfxIp`LFA>O$ zClXSdRzlSxO&3YY0L~aGJFORs0l1Q4TX=#HkQHzl4+w`d{09Nla&!lhT2I-uNgr#R2>0Idd2l|Rubt(R#gKw6f+VwwY#^8fGc&P@ayBWI zK^tb4SP}Ozi*Na!(T}R;(i~C^+ECjP5~55e2b5x6@tTL$M&{{qP4q#gc5TW z0qipXDK#3F6^#+~DYf03VGhbr7Vk2-y`esih3(-*ywO@{SAC(;9;k>)FyxiSNn!<; zPC)p!vXy@H#^baFob@kd(Im5i9izBKu3N8Z9%{!ea+}0ly!i0vW!vNRLdwi&#I>Z= zGB*|mZ?ZdEaryj7b_UhL!qqSmRgn!Sy5>^ zR&v>!)m`Gzh?HDIcIWu@`#pB5~{@sx{R^T<&UeRw~ET@gsXg0pk zE6N$JIT36}Hl)ZCSbk0KbzFY8Tw!U}S4Zv> zZ&QF!eAnHm(aM1e$ZB!#I(f>Q#R$xqME@7oU}h%q8J>6En2(-6=I`38?da4 zY7i`gcMjHFd+jdxzGY>1Z=*QiaWu)|bBx&wDaQK^V!Oz^M&Fj?@%h ziEDgHXrkkmqC@?`=;u}sf{xBlAT?0ee)r2H*X^S5fc?)fz=Y2>)w0p&iTmGT{~X!h zOpZzwv6x5*#xAPww)lVG&ov5wqcMHkv`Lsq$@>pQ_nrOIW&@wg18_OTxrNT~Zr0a* znFVI&`O-i2Dc@9TAyc;@Rxf@$VwPz?3p8f&HLRCXj)nMtv7@9_w`0 z&7tFJKb8qd7_2ucQ-w)^a1K{c*~`VvLoG%Pk9jjlanCzR$BV#iF0wD5H7X;Nqx4FP zBFvids{h|l>;Ej;4^4=$j{ATWwWVF{uQhEJSq;J!Tib6qOn2^@#N|udI5&IVy0OJ` zE94HYn~TNOrdL)n57~m(AnADkIqDm$=HAUKNeugdFbd=(;bC7MbD?V$U7&VMQBdL! zuY7D>Nd{Wshs!Yj`V5?TlfQ`<0)n4vkSS}|Do$>KiPoeUq%^4rzB3H(n0ZbFm@|VB zb`Se$vzQKvl>e-GH$g<7ova!Z0p#GL5A0U@L92s7`<^${>UOabt>Sdx8+A$f(S=IK zzA}t#qywtUm(S62D~+Sx_G5*+3 z&%gV#18Sw0%&{!9-ly6`YP`M--d|K+V}G0Z9+fW-UcA~$zH9InOR1UgyA|Z|jrAA_ z#FJ@Cv>CX&r={UldliS-%mmC}&o+ViS0gi6E1gK2IqS7u*=09YnH=z>{`C4nIG{`W zzBY%#tuys^{8?OiN4ruvSKNjXQul?4vEy1v>K5nM6SMk$J|wkS{X_L>jw`w_IHd7* z&12saH$;$E+etiLA5I%`pMjBV6_ADxU?`;dG<&Crs5F<b5Pg5xmiJ|YS(Pl^w=PGqH6SVKp?N{ zXZ0_*XgU~3xnZZ1PLubR_h;my;rW%f{H8m&hw3VgSd97u&uT!cw{Gg=iPML!bTuYENzGh$07$K7vv$3~gIZwGt#a{W|RL3Rh&U)opKOFM}bZ5P`z_1Q0t z)Q+fsoAERmzH!-0#%KSg98@(CVmLYV&fas$0M~Hs-{Grn z@+sS%0V$$M`LM5HL{+Y`xuY%D!;T4urGgg&tI5=ObEB*Tg#>eY*I@N&^8@zHsnEs#4k!Qv$Nt{=bvIuA7sF*?oP?;)_JoK*LBF8 zTEZoe*_c>`_Wef-P5fQ8|`!kR?XHu7M9*r_z*@^j@ zGQOb1;8CLhNnUHZC!x9l_L&oBytzdfD-GLPRi`bW`t_LzAGQZFt1E zvt%MoxIeXPAsKN0iYPVJ?s?O=s}oTON}SJh1wgk~Zz4d1f2i2bhF(xrOzx{oL<*{$ zdOh!`sI7X*++ke75e73w5?sRt!_t{9Y18BnE2ofq<(hLO-NMq!tlAdnKz=~{hJ*!|R!pXwH6~Efd z=`%=mg(cv2FI9)%=?T6L-Gb*m&h`~8@c z=hkr89>TS1-eW6b7cc}zkUSDbnR#~Ka-tmr-(5sTh`!}r{&T4Xll5x!!6Mq1+1XrF zLg$U5nM0zN}XvcO}zEsn7*9O5N^Blo=1zU&^-J!v1}>p0#Bjr!=~T zI=|Z8hKU*k{ANx^`a&6fG9_-%VtB^5M+&9AQCg0E^d ztLXxQ&qvwDw!O-;>!-5~3}E&PX-@ZhP8mAM6CXJ*l~OBL&%TV%{n7m3YTs1NP<-cleC6i7)f3dl9UxQme*3NJe2oCy$ zCkW=(@rk>fTTu|_)|V^WjYgOJXD|!%nc8KeaAqE$XqH}deOc&Y*e+I;O_i6qq@7K+ z^D2a(whz<(mea`}^|K+p^%r}}v0Se8SILtyc5Y9TSSPk#)Fy4t)Ga{*D$@e9+(9Y% zp4Qzbip%KMSp-5{{n2X7ZvD>qUZ#OprAIb*{V6?w|6t4bcevFzt5zURycurb`T<31 zX<~N#5&kp{+0vk$FP%}Y-T+O@bYWNURho0L^X?YF-pp{7`h*KZos9k~kIs?GrJQA1 zmEX(n-yE9P2^wdM7pZ}y=q+O!ROXkXW?3$LT z&XlV*e-k*%Oy1>BHX>| z@maFfFkVfo5zg{G_pVFL>9G=m0ipg6)kte7Y_aKVMgG=}YZ#xFv!?>KtpG<(s*`aZ zrq87r8J@vP3~{H|c}re*Gv2)=zRO#Ga0}R4E$whMsYahJZ<EGfxEq01Q-GA>7atZFm3WIrlmdogo&@Flt z5PMa8l|Rz4bD{x~AO@gs?^OqV+cAv7i*|W8HvgT{u?RpN2M70OkY+zND-8&^G{Hfa zZhkX_D46S=G(kkZc#r4Z*pS^DN6n#5%vrLYrUx3B-P@)O)c~^!+o}M|adgTYS{eBK zC8KP!J$gxuQD%H1uAqOP*azggG5Rsw#D=d@;CagJun$+R^NpuCe52CN)q-a{L`&OL zaRx(Sqq2V`1YZy*8*DrpmX>N7q*%^!4$Z&{k38w@nt1*=s$OR`QUdWswbjsVZ9QWG z8Jb&vt1^)I9551S;DH@_?eCM+WO;s#9&i7-`t^id`!29C1v-PFyMmVd zc6PBwG1##_zP>EjlnmD4R?ARLU+O!4AhTGx#?PInoskUkkPt^dMCluGf)m`lm|XMJ zWFh|n8^b^{={Vy)KieW#{>&>9@n!Od4S$MRCbNSywn`8XB{=9!Pzpy5^0ps|Udo|w zoxDNFFXpN97GMD59569~{Ahw2glUp_4kc^qxH&6$`C;q& z)A9B?7Jp|%h60v}NBcAGm1ABb2=#Nb`_;m?$>qw4$8ihkP65sTsi^z!oa+`hZc=~V z{Q?#Eng%OWLvHXJG4 z6v8GSo>frUEhD_pGJ@Q&m8A0(9sM&5YJc#^9(}rUE##7mSHZ{8`*fH`5+~pE0@9{t zB*pi5GAwbgpNV3DWK$@~6z&2!d66M@tULl%o>HV>6ERI++qYDO@h$HS9GilS2`$NF z&WjP{0R!5#Y*j!2-t6)#CM=)f7Jxalg(<{_VZh)he&f)w|Y+9otNRD*Dd z>LaqfqI1kux>@5+*P@Gj`v9EL(3C3b%&(GZoc{efM3Rj;d%tZo+ zg8>FYx$57fWtD$%*cPC{y{(&MC-{Wl1I)6;coaxVlF$C#$Xw*jjXr43&(;dW$LH4_ zb{p+@sfQE@%NBs#+*=X>5C7grX#HJCcJ;5no~~loDP+(q*`P!xW(LgR!DUwZ@>4-7 zOLzHiO3C=DHl952e?k^XIhvb;KCQwmQ#Gx;{_8nq{!_de)ZN}TOtd0Y>fAWvo}XqY zysTF6VTv@4(xCl`!w0b6YjvdY-k%pJNxwy}Ua%GbwWgvL7DZO)hO))*?;u-lR$wNx z{eNrj`$f59*1hXQrn1=ZaNN}zPYr&-v-c3wdIUInIVTEk`;VMHH18IIYw(}r1t7!bQWE3&i~{8MLM-u5`F z8IMy5`F6lifkdKJwr(!oPheuCOv2vv;%=o~W3WGtex>~*&iARX3|kqGFUMZ|c!8dq zw21iFIfymFY0Qar$@5W-?&eEWY>d^I;TGF}sa+Z`3hE*TGniB3yv15t-ag*~;k6@o z&(P4({|=Qi)`Qr+tzP&3Az`AOX9i_DyBP_UuYxI>%FZ(i7q_~Z{s=i*#C;dSwUE)# z8QY=1)0u)YsWS^gOh=?i;FC^xD#?e%E3MMMQx$le|EX-0u| zk)_gR+R~xgWY_RUv!v#WY>U4u=n@rB z!O@R}twHQNul1Ratfk=-|CL!*xU%R>cHes1%BmwUvhL2RRt^Hk_CF-W6TjG_N?vCI z6~_?I?Z28uM$ZWB0fl|VXu?W;&xfxkWwHZ4T@B9DyB2&|9}4?eZ;q|I>H7XMKq>c#5J(XRIN5e^E<(U7zb;_ zl)92-)%WufZark6Kw*cGTyCwwld=G08>*%=*ARkALVKNWvISIoR>RtB_wcvX9e#$f zgq&t%CJ(8reNQmVW)h7QokCEI5fh)6s+1q+t_qF%(FI#D%GOLKKBV9&k`7<(GnUdu zh;82&`*!vnV|oDEb zCR?y{k6GkYjz1c@SL5NcUXrz~&QB^0#*1RK7aMNmkECt)DZY$wkzu;6i%p8Hhu1=u zfnkK|Lcd- z2A#RAGWG6;zTb8J2OaC%O;Z3VQ*(XeiyH%w3R#!8{tCm2WI9}u&JO?wnSQIy2O5j$qnSEULA=5t~nz(sAf~~*qgDxmT^>S?exWOmJ|ZY;o{&@T~sPy2Bp)H zxnRG_m8X;qEUH$2xcOf%qGOW6N{e%LVtq}9iQ$$KLLn|@E?3UyUW;{2AN$4BD~o3J z+9kT3DNeR4Lci0}h7xXedt;ZLVEbBoULp{!oYg1f;`;C27PjX_ny{kioFdDbq0}!p zoB@Pd3$<}SF`KcyxpSBxF;o`qzYl849M(c2A!pkap=V|9auv&|8JcA2C#;D3Hrt~& z5MOJ4MRKA>bLWsV8fMNQhON%h&EH`r?N_ToO9(&9mG}e*+Kh0J-OPdf>gqRC3 zd^2u5htbij^jCE>ak6K}_H9VDzLgawGUnO_K5hirbVs{rR)!)6Tg|(Vi$*tum_drz zs(s0ysrz}E@f4RqONe4op$W6NNZ7uK5yV?fp>U0NJpSD@y{InS%)TXeV4i^B|MV;B zR%E$L{I-Vdo$zm=NDfXV#oh8SBi<4cbLNBCd;?3GT)n}Xfwm3WpQ&QM&rj^7j;Faw zGSm1Je2MobJ)9q$$TQid{X^9Rv@sv0jl}Nu*EhDP%L52k!Gz+L7 z^e!o!sn9iL_67gjx`UC<7A|ty6;{9@HA3#O?HrToi6lpBoC*DnjP(|T-5vekT&v>d zKFTjJf)8=EQ`C6vU<$}(BM;N9Y8xm9te17Ttwaqq8r9z(VKUb~w0$T|tDQsIvk9{P zB=S}3t=m#9X5sm?3h}7AA(+O5xde|i+r=L`pe+~F_ACkLp5Fbx7M_9w`Sd$PM_imY z@b;Cx^@Lu-5sy1lAXlGjt+gVH{CBJ`pDL9GkMVAn>%u{%>rDY4S4}b|Ut+fTOJG5TBBBZ^C za`X16e0@q>UPU(yktE+)kCL=wUx7?&&qLwgEoB3*dnvV5i566VzdbJGi^$GSOKYCH ztoD0Mzl;6DJWoTs%#)=*V~4rQ{p!DF1$$DvKV^MrP7KT_`@3lL=|JLU1PA>5#m_nJ zlH&Z&yh%gLuWr~y@+$NB2b$|DH7BAH)Q?=cQl&A~DX<9Dk>p@Yr)lkE?T@=%!oxYe ze$tty0xb{IY*jh<*48mzECR>H_LJN*Z^^>Nfoj@-aq%(C-Lj0}9 zqTYgu76qbZ$81)8Ky|5aIpr4t17~00^O&Z))Az(rc;t@@VUBQXwvw&iYJKGnU114)jm<={)mxqCj=3HglHVTpOu zi4fziybdgLESV)8(F3k;@)A$TFWsfqxVh?!Rdt4;?|SqG=ep!I)~%FChlJb)BugMs z4QoWq+2NE{T4o@79ke{Sc>+6RS0@ZqLLrr?44B8?FmgF(4(+i%j?}xJ=+#s4?U*BZ z6y8CA{K`5->WtIEsgR6$HZ>6m)*Tj-h2p9mo;xxH<++u~BVrBy%w(~8&hsC5%Fa2i zJ6ftFQ9#*as$eXp{(BJT)A4v1y?#sz-qLHpwU97~Y5|Ab_UgtFd$~~`5ZlpOqeZJ?rl7z?KVO}m9Gv~j`X7Y%nlCfA; z_UXE`j5M_MC4oGWTlXYbY3)iqDd6dpVO|2`Mz)HbKtNTWjabVwqPm}?c3GBswEy^m zHdkCwtUn9Uk%2!VJ>rWS)^0HOsb;SA0$ITfk~P->p%%N!7?NS= zr!Ft%fn&j%C)Xujs0u9gEFSe@R+f5d9vl>N_hoDteKANC#&TnD;T9Nk!)oVl!??o#I!bWHJ;WOk8+?!0+ z8gQEp(h-|Oks6V-kA{VvqW?Rax$Yc1)j0lnW1&Mf%ry_E`KBXr^b!-klb!PW|EyBE zVAU-W?XbUl^dS7*mn~2Jijdc|r++@>H*}cdxQvu#ppOiM1x!n2k{N!CXTR0J>-7Gp zst=k=zivppB0twH3vhppmSu7h+C(UBWG$fmLT)jZ1wfsb?pA3gVDQ#4(&m5f+Gf{@ zzd+BAqPm;dg@+1uEw?!^Fj~ccSAE2CSoG(={5nYueSM3arD3PL zXD^;rmvkB8-t}6(F?F}>?SoIqaZxb|44Ccq1-C1AgMNGG#k$>kaE)pw#&im*6YQG+63A1vK?e_jr@MFJ|w8kZYYVg&v(lxf+iU>TC zYA@j|@g(Gc8&)Kd`HiB_{HYD@b+78xXsA!kdT7-R7w>u%K2n@H`P#D(&mOqW!Bye6 zKX&Zz;G^j_i*9weaJ4#w5*2u44u5M5E{vzW$~fA%86eL*DJ+~awf3n(2R~&!{<#)xS7L#%HP-toxfCiTwF!-wiNT= znye#Jmci|rS<569S6Yu$Adr7^_fN82y6-7{!`Qh+u^3RcmZN1xIDAYhr1mOj^|F{( z6YrE?;K##;&Cc{d*_Hk4H}l_Ua-V#H7I5-Wp^-1twIeExUV>0qW*cnJ* zd55{iZcRM;h5bmm#*;m24k$;+e(5$(BZeJnGxxsj24=WuV{F zM5JPS>}sq&KTbv#nweVhlaR{BNB^gGl1mZIkz%B}-XLNI$8=jfegCUPDu_8E;~Ro& z(!1944s@d{0AD!e^&k%VxI4k!-6e$Jl0a|HIeogitGcVZtE#IXS01+k6bil$wg7;N3OfJ`@L%ci2tXw7W$ok# z00PjSvY!J0kK3p`_MV=v#dvsJJh-iFTw!o-YgYu1uhnZFK5kwfz$+==*H+d}a8ED{ zZs*`4L4Vr&o*wLABSCKBM!-F- zz`h7)7Y{LC3HpCkF81{PPc{!d_+Ldloh0aG{%I9#sG$v(b9IM>ZiwTH=|0B^qwdQVPE2b;2_#bUOeM!*&2U9*i zKHNS6+^+6+Jba>}qCC9(JpBAzPbIiK{9HV(e7Rga82(*@Jlw(%p1Sb=BICa;?V<1Y8qT8&_i*)cw}w9z zXZSbrQ{VmX4gFK_i5f9^S8Fc>+{IHxUV{E9hug-%Modmr@Tt>eG|0>Ii@xNS zf1;mH?jQO^`T1o<WpO|6{QKo%JL^ z|GfUE=stb?r|`pFo+RG=NwgnN0QmnBSb)vo(-Z~2+0^pNg285U(j>0 zG0@X9u!->elSE|1|CMC^w*(|1BLh)_7$_(h_!vM8d{TVO%zRQZQsO+~QvVy?fBt(M z1Q1~X34vRvKzaZQ5fGIK_&5xR2LMn|fx!P-0000~6f|@o2Jk8UpSe$bpb!F3P=KgU z|IyG;F;KA3Fo7sUsKfv|G(P(0GWmQpGxm*~Lx(TNMuuJ08svyP0y;{& zoL2_dUmY5b3MWtr%9JW50G|NO`7$567#CCt<-T>-v4+?&C;w1wit}c$ekjPWmQt+$ zUAxObfaJ3RAv0-*%kBP*A$sG7HY{#^vg~NDgh;%AYVl{Rl&DwaIK6Doas40srxR_ig3iDJ?c21ubk|d6ufv4%yA-q|IRmx78ehQB+%XAaAK30iJjGwM&y_ zS*CAzV-hBl34U0P)hYJdaUUdPF6Lq~UqpGCeLlrF_rBt>IG`me>8rmB@STYqUu=Gk zU#=e918oeNbL+Os7|1};Ssbo+tn^}8p#46ZpfiW@)H(knf6?!HjsVKWoxwJyMPp zc1ihYLH1wHs~A~RF#s*RRYl%_dzmJjjj%3=;%sgX6D$EN@uNNhZe@$*8? z_^rQd%e9ZM2@}Vno1%LwZW1^p^iuIi$}Fta==Xe>`0eLAH|FjpImW5nW)| zAgJ88jR>vqH{!tZ!*y8E_ZQTn6GZouxweeBFHeVCX(}D88L<`)i#Z6)qN#_lv@MpO z8D^ff*{A~K$F<3Qr14|k=vu(Yw%L*`uWQR*zn(U~xe%?M=MEo;-fE9~}Qg2vO$c;5-oHd{w>|9i!QS;c47R$a@-jxa)2bCd&Exkc ze`fvasRSKc1nuXF{()UqE3`Wl8i77acT#*;c=dAQoLewK0h zVXO*9dE7jwqngny?1CiLWSS;9Os%FDbGW#VH`SxYc}wbLv@!DhK*Hq_@bP(Hc=i3_ z;W-xsixfloBurR*_bX|y9J(kgKf(9fyTUdcgnwGhq!$#9Pi+ghc$hf+dnlEq0l9X@ zzpRf-nULjGfQ6!_Jpxov?NP-3PzfO~-{WwLh#R2iFBaL^ge&k69Md&nQbZY^(#Q3O zcG!&&`pwBk$k!Oc4Ri3mwiQyspBBpK;>UouDpUsZ0^7Jo_=`(M{B6 zaf06M`97du81^2=8UzA1@O`ZHte31c2V| zm*0OmI1*aciZ6En){x;MBH#l9t93(#U_i6$fa@CFm%gcg5}_7F3etT!P5n*hfU`k=VD9scI2cJJ+6C;!3>>@ z=802zx)~MDRrmz@*!DDwchgQrAd}RN$cCo7+-~7k54P8Qw#Hf=rB>|U_#Q*s)M4rQpM2!Kg@S+uG2Q2fAKt#x+4Gm2$(OU zJ)3p3GNx}&9BkrxW@r!0@z1jOd2Qc~r}<~kNayp`GyE@ZsZs<}P!P>pt>g8FQCx9_ zvJkh+)klEY_r{Ofw=sDq(ySU}Ulkh2$ICfQH%sB;4G-)iUYx+y~V-<FIDOPTI*3+$=wN;AMazD6skJXAKWQAdEWm?$t`J#8CsRbn35MnAZX?XOt92G4jH~DlWKol} z8*6UQkOOCJ?pyC1LHb)RI;@TR^|31zs66di8{MtVMNKU3{D17{Y9bU9s8F8(Ux0)X zD_Le8MeGiL>|(jN^rTHyd_(oh4U~0xKL|~+Tx)1Oidd58jru+zC9~zVhDs@*O)@*e9`!1MY z5@Ru{k%0PoqsZ`C=E&{_MKuZ)zC0P*Z5VG38eV-P-WzvPTvxLx*0E@Fq_+h~ZcX%v{Efk5){K6-d&Q&in@LSBeYI7~Xj ziQ*eS|Hj&%myduo(-4Y|UNgz!s)&SEVc&(zZCWzwl=-UlI{biVcM!cDSkY447`f&# zn3l!-8z1%Q`-=KUz?Wm=gu7s_Lq{=I6K!KkBXdpW;xCwEjiW*)C$Fe{+w>Rtyxm7~ zvOo!5V$l;(s~6X)V!(zZRQ*3(-V14Fm%aQeAEeovx)x7_3C#0;M4VWqUGAnBDxPIF zL)*)f7TkWk|5Cz8C^q`dve21~fXhXLPHj*7FP|RXpJkq~lc}*EOB~8L`{(R8^x=lO z*)!24S}B`IZib$hhrgDV*CkhI({3Z%DwvPf%#LY<`-&-v&KILkljRFzaD%CI?7;DA z3)N2O9+V{2*_w>+>Y^yJg?Y$!_%xX>%*dm z*uO%X2z#Q8TDZUw&b1Li^gN}sSBOO&!TBB?Nh(=cx zoyVukZSadSa;~US6U`Q(bi`AnN`n|+$A-LdpO)nSWjkBgo(y`-CbIJva=ZM$bfACh zLjQWM;d2uVg=A(_Ku+!n&S#y?J_uoh1yKHmmH_nZrj4~OS8hYb5Zr4a&Tf{{KRLl< z08GFik+y{P+E2rMk?vtDE9jxBaXefd4Etn(yH(T&jqG2-lDmX`pi|&?30XE9n3Jlv zN>``|R2jq9&R!;D9j~`?j3>e=Ga0ppLd@K*mvqZ>I~7*=SSQ62djqW-8!FaKPOCYM z&B7ZbKW?NMZZ#mI>9vLv+&^)x^G`2kjEPNct;nII@k)vZ=VH5EH%gy0YcoJvp4ZSq2k3|e;z^YSANL*C_Hi6>m^;CXVXq8VATrhIg!Rb#)+I^t zoP~GpPO6a(PQaLsrc8jeY8KgXghqdS>1}b+{nZf3#%tul^&zaq|JE-8D1R%>8dVhv9xE=lcF{g@Cbd(gGk)l0g(p zU>|~}FdAvLkdKFm0Uwo-X49qf9sqv?QzeG2n~Urj62$;u-cpNjd;iZ*rXR4Xfaxp$ z3$+RG!Gefd)g7)jt{WuJYZgSOr`pws_pek2`K> z_-G5(A{pXE8Nhg=#pY)?b+%NH3Lr2_uK0PeMKqgk?D*6sjdX*dE8U$1fqIr(%YHA4 z+4Bqsuw|F=M)Ok7>RW|p3jjBr&RrH&$Le1a?H#W#SYdo%ek3@Cp(dgkQTp2E8D=Ki z-m|@8(zW6W69JP*{+ixYCAT#3%mw7h(!<6`U|gkGQU4e{Unf1o8i8|N8%3tLeO;5x z&xQjnC)3d>ie8$!;bzHv&C(J)qpby=Zg$4dOX!=#rfJ|J!gy;f-NLMcLcXQK`WNtn z82%Ubmde0$HsfYA>o`9S%wljf471S)vSwLFU5shKdfPt0fqBCHd9=6x-ekg}EwG87 zW=A>gS=XXnccW-;djiGYwBg{NG%1jR$J0(y73A&CUM*@*SPq*+i|^o9flDYY##~Ng zP{)^F$-p(XoN*YCWY8`QmqiDimXs$Gf_8Bu**f5jAL^Sf62}it{7w)`@g^JeL}c!< z9)M%VDp5>{xwrN=#7~w_RNvMkG>ia&oK4>=cyGVdw548*PRVJx-zy8HJt-EF-7LxuFhUQuHq9E9%H-Q22UyFV}@UOq8c_hii5i+oUy zV&segtHk^vmdd`na2Ze#j(Xb-%6Abl*t2xR+sJ8F;Z^G%cI^rk(#d8W4;>_0v&Fv` zj<~~GTBd1`I3DwWeW^?sM;G4+l?==YfMM*RtV+kQcyQ<>Op_YUcu|ttiU!dc(;}BwZtykd>$vb1I6jxX`#cr9@uq>yl6}|DSVuU*g<7J zfUX_YT|yIYSCz4n2Z%#HxE!(sStcjESm5K>YLB~&x}2wkB-rH+1;5*MoO;Or6Piq_;lH2908iw;g^C8bRQ^T9iO* zC4s6Fy&a{Kwpyd82_3@5QSz?uQ}g?nV&;W2Kl8`pGF~#bHJrI84pn6Ov>9{3zV54! zc+zA|a_m$D;m>#PWc5R%2JwahaX~kPLIEk$#fL}20Jch>DiM9f^4G+4Sxm51G~FFC z{=kF#IX@CEsctU#hy1<{h7acB7Bxj3jC}MsSHUb$hi~qy4xRWS>LBqXs+P&=t&DM$ ze&rwf$trk^gfn~RJc??ymY6=VYfi>VJNN)O0tn;qIFq4(v-`lVLftl3CB{o1qF}p; zZ)5i&6n_)vx@k_Mq}ZH&RJ)Z$E`5lPjp|4xzYc3fyKI%^M6?{vZe9kHb|4Mr^~hFu z&)=quvy)&AG5icA&Er}$l#jAI!8!l3#GzOJ(he>!Mi)X~oEw)+&M0$G#QKx!z-)3t z%|jtp(O2rk2t?+dvU_3{?W&BaIs!R3V<++F5k^mLh`oAFiDH9JL5>!s&r(rT=)S|C zKa@xC1_tc6N^j-E`_qX@Uxwi5hv z+P&vtZ5c$2b)dJ;4kstSHqE6c#WoWE2>bQd>0?t%_!PJn4GoTXI)ItWqm5D-+pv&&&gsJ3*qK1T06U^%@9KSyKgoeQw z*6}3-fcXm$2v`s@dYT@y{};d|?;kM#I{3rQPiLQ$eTCRf>Qo;m#9dOu>T%wop&Yr z8l*aj?gDA%8L;Gptx{TqC7mDt5MGQms+O^)rLdsEyj*O3(Lz_={7}$hbC`&zvr%wP z#&^t}Jic)XQ_^!S7wqP|K=gDMEY^w%9P8r_K!rf&V4P^ne zY-DhgFinMULZwUYN&dK;MFJH+=_xMt`pHK(hBcXc&wRAQ-S^-jR(tlBaO$=}N}}$F zd0lgHoeOv4(if(po19UjeecUF)wg>%d^$vo6e`=39LX@(2rlrOmo-ZE8j?u8)mZDE zn|&q7{o?bQncs+LSw{1ZD;>0z*|N-V9<7Cq*l>Jhkmc7q`Q$^9mgU&=LQq%2G<%R{ z*^P6{%=~Uu(BMpiu@*dp7p9dU*4a3mEZ$FVBb7E2fH$=_qw$f%c0x5sGdyVEYreR0 z1QnWF9rn1K2^xLxBBGE+Q+M2fkGcuM7||r|N$q(KohnAqVVl)`Yi%~&1c%qEk+W-q zBW7b*ynkPk*Bl%dxr~V!c(bpPqTY=ddS6VUB}^U&{^l;J`T7Q8{7KSURd6-M?dwD< zKylSyvt-B*W8UF+wOW7&x@yj_i=CgVn`BwqVY#E`YVRxb@yro4*0foIw;y#DWokoQ zyc*N=x^Zd|@@Y)~kwp#uEFmXkBq)bMjqqii$oFS-`F zx33W$hw}(oB-Jg|A>YhaGh|dLOVvts;kg4(93g9}5o0q8vWV`>@xWs$b{ zu+fE~5jCTMOiQn>c6}?R^bNdZ7GLb|ovV>WFbWiIgM1c+ElZSfftb&EeSWslZYj1k zjQ(nSNrI|A=R!uxy1H^-_vtVm#VAJ^gba%zZl~l5_N-TDEM}sWilCeu&Yp8zb`)Xy} z$yo04x7azo#2=F%mg%tS*=+chpS=YfS1AtN61LCOJ<_k~CbaowAGe_-44-xEo_Tpku zqHnp~;(L^&6WvYh*hQH*7}>wap}jGciPTlWTO#BsV3L_H8>Y_nyBdY5L}I2svA*(HZt+6P`-=v8gJV}ww~zWcQ#OydoH-eS zUZ2L!o4n4>;3Ysp*d(Sv>J&m)sB$z?ckr!5O59#T?<@5&xAjynrwqt5)z&YE#@>-H zYR0_3NDED6qMI;HxN)Gd0Y;TlOV{jea1_1SwxQ-sYW_U#T{jdS zA!x}oJL^>)?{HU``3{A1kdNLeE|jaH1LlaXH!ENh68-G19nbiCdHcDu+R^z+CApt% zYOj~QxaYkv65{pWZ?FgyXVkJ|DeSw-zYfMew6}5B+1FlonrnDFR14>M4xAd1F=ejN zx*>Dp1v@4#c{jqfy{${K{Vu6>Lp?+J@u>X{2iDf&cPtv3pv2f!FwT<5Ge^-XaYpE6|{wY z_tLo%fo{&9<`3Dr| z`BQu(Scx(bsu`L>(@&t;dh=uUb-0Yt%DeZ5G4~RZ z#MagGuR4~xqeigVV$csgco~**Vt`w zkBa3$vwUD`lpqt!Z-rEqAZ*8vd+&^q zuXjeUDmO|O@2KKEn{QR>D?4qUHwI62majq-J(k=kGD%r&51;@4b?30de+97P- zWDgshc7H~a;-_#yF{#6X1-Xs>h8;mRLVfs~gtdsPVfF{{vGWD}Cznx8*!3G|2ZoW2 zFl?AD^i!|q%<<0?ftG9*op0KG0mtQbBtFtwhPsLk1;&*$<+!QsoemYfCJgW>Y^ybT z7Qc1E3eD~-7q$1yH{xjGA~+#g;#vK|-IlV?n~s6|btwbj1EV z!YfX#{)%e^Voi?|zQHn17g3$$q(W7$q2(2uF=`W!ijCfnv6b)%d3m~lqS+zkI^A!6 zD6*8gAICvQNX-D_fo`nQRO=G$-8CF@=tO?%+H|wkBGS&ty*fUtQr-;FG8>cCGP8I4 zOU7%mRv>b8=Ev2Xo{qiCLJQ_X((B+RyPZ%etsgc+JNrSLdCvzLX_T9^$5c)@aFikX zIsojL-h2(#8&oFkErAIf3JoI)B`5V!s~eGrX+YJ7;^* zfpv+7uaB+|MI9a6UsYz(XB`C6Oz|&^e1CJ*6gjf%fcS!!=q%Wx z5-VnF&{7rGI%3B34ayxSvU1CRzLaMINmf4sgl_}E7fX)-`rJktNbk41GC(!Q#&n&^ zTe;@3;_E_X%X6k<9!L$xxtS5?(w3ZD*F;|gsmn@1{ldHKgX7Ay-Fls_N?SX8nv;ZNcXQjs-$tLrhR1h-oY>=}fJDqxD91q~0>~m5r-Jxwig# zoPJfy=G|iPWJHA4UEgK8L^H?w7~&$jPgUob)1?x}!)DZ3_EYc*;jg#-SKQG8 zu4Q*t0&5BGi7|5M4A7*lh*R8~r7f)Emwvcx=X$+bw>Q!V-7M}%g&3JXS$ue=b8{gi zXuoJ+R(;aR)J<7jR2MX78|tPZ26aD^<2L7Kr&-wzmVanO_j>iDwYfSa1-piL`Kl_e!RAX`bkde%w+TPn z3~poH%h!fk>)b^Q0K`ZR$!F;lUscmEG{dX9fUzmP3{iM!BvX|SS7Y;Lwsw@f)-k8{ z87F`9wnhOg-wy)9xB{)=R&#mnbs0AG288XbdU+XPYe3PQuh`TzYrQmUhgd5ymIr@1 zY$}ONId`Z6v>Y>!tvIn7GvGL~N6c~|YGjIcN;f8W{r-oUrt9G)vz#=G+QnL)`0IeL z02DcbkD6sj1JE(lQ+82p!4}PEiNZf4SviJSOtn{*tY~jo*yggOI%l*QNs;+ZBf0m| zo-?Su-WeBqz}!A#%Ws1>i}LZH;LBXMWQ1{`EGT(O{4!@ySnk1e0xg^Gd9Q0)I2g}H z=Tk@Qh)Pe?1Uw#p&(-x?9DvCIcC=-6hD&WW;;xY zd0%)oU+q6@vIi!PB}}CcjP{}EFprW1M1NH{v2GOyd%Rhziq&5r_?msm?ZRdl7IoJp{0*D8c#*Bw|)0{2t;Ja$_3uFzMKlR7lL2^kRTUG+}}*GOO!pYr9dIjgepGk z?9SpEt7D^RTe$uFVD|_ZeFQwjwZ(Pc^%}0vBs#k}j#9L|OB6}o;IdTHG|I^&CUQbr zk(rvs@i>X^sYbysSia#^RsEPNg;1sYa_q3VM?VO|b8BG7FE6;u?xK6Ow42wl-frZ+ zG3CJe@`2=hV0H`JtyQ zC-qZR%Wwx~`cL27Fe{+sA{VQwr+pV_f`_|)wWujOj!Qj9y6$+)J^GDTPG(VPsmRYR z=e1c=4WF?%Gu}W)G@!M+$?t+b&9NK#0EqA1*FG*yqh}I})T+v74vl>XU<^n~1`NR= zU{Wl;+KHxB1((^nkq`RXv6BVMBbMr|4Ho-}ML*b{mJCSB)BcL7l&TaPnA&A^GU*-t z)vltW>%H?ny87L?p_yCV>&05kMP){8SE>x%CVYx9Gpm*;ic}I}@%X{bhA$zZVw*L& z*XiF~$hZWfn~8Fr286+;kt)I+qV%bybX{Q_rY*s{muDmOF0SAJ&?wm~+vNvFz?jPx z;3?!J;l2`i{s<^TZathvT90KKJ*++X*8<9{+mvR+&K?2YtqEpMqh-K2KOkvKcn7Nh zmsi1dSa?y=;5dKqORo9Lz`ViX@#;DepnE@MpBBF zRh;|Dt>o929Rj_sXim%SQYSo}l^|_Chwl0tcJI+`mz|-?9{*cA))mEwNe{`d@7NET z-x=izoAXP5q}s4%BvcLwLq(Jk)id5UQpc(BkbXs>Yp4jwe6gL34$@EZgF(cToEudw zJoj`$Xj0^!$G|POIJ_5C)iDr>{8BnU#gfEx#=f~DgaJf#?pgZD*LyIizTlnus~k>i zVmZI}{sBiiCOz~SuMgqVhaBtTN8twaEhzic(tNdz@Coy~+h)@|CpNB!7w?iZo7hLfV@`1cuW;w64os&!ohj-A6-TNTDbpVMa$VG|FkI{IGO(u>Uf zwn2Nz^<~Bl%N*i5IkL5x_1fx&kGnd-i~*_!8KJU6A2`HuW%x02eN9i>H=Vv<{mPz5 z$IVoMV$CNX@iaNRP3`Avy>W1n(-~>xcjzabfbI8r)66w}m38S2%VZr6tG%MWGuqhc zf@Z>b)actf>54v&YgE-?qo?P$(O73F9lQ8rrx~%1O2Su5f8|6RynG7LTuiiw?5zb&nGVBNxEeC%O!zi6rIoC|l6Lj(+cUDtBC zb7u90vfW%7;P+Ee}Y% z!{YGYf;C53xT5_w6!%tl-0FJPJ}2b1{A59aqPq6U2YP)af1cc_mjT7{-^*P?h;}^wAwP zeo>MbDhkj3~Q{SwE7#y_FaX=7#7m?)=Ze9a#9DjR2cScFEC6NMNmS3Ga6$&qe zAN(7~YI=E$kKMO(7^|#PY`>~me*6u%_#(3#c0cy>5rF-)>+}}AuXxPYl_DAGfnsrAh$E7{66yK+z2B__gO1YJTKqwOUNaj zPtK+A_S`ogMQ~pYDv?P&V%<6rS-}T**Mp)v@T1F}Z@A1rdZd5qkDhhYy8n?Bm)^4R zXw%-PI{W9X8j_Gus&CPPlkbP*KP2?~MBF9qmmfH;)V>_F7lNiCSf9sCuyMh9ngz0T z9swxyB#K#|8b`KulT0B;t?SH4|I0@6fw_+SsYgI3GP*-R!r2KH$__fKTXQdTwOkW8 z;bZWq+gb$xlS@f|HjTF-uA3JOJfBR@xI5a;MK7UM$F?l*zXRnCyXcrZBiS6vSw{y$ zobK0N1=Q|l`fHP1!giZ!*M^r-Nf$2yyeR@@9A9W^v6qPucR6$ z+Z;Z>&RU=CX%A{82L_{7R2vRfSe6X!^Fo45TzF`59k6c$oISaO zB_^^05@Ljk00eo&$`Ur}QYSQy9?pslr|e1G8~5FY(-MP$<%*m0Aiyl=Hu>HP4(rS6 z5~p!kU^B8AOI&5Ohn00hkkrqV2{*=2sCR$WD~=*Dk@JmgeHYQa`19n&0RyCCuo8Wb z{*n{^L>ihb*?ygm=%#ZFY{;SwnB?W!W#z+KvJ$6*b6ymik=xD{TQk1diOl>c@j+~U zfAKb|i$+5xpKKk%8E-*t>JmREr7icuDiMeB40k|7>G)feEP7PSG$f+>CX=Ta&Ok_# z`1ZAund%8byV?%)syfw>b{rre&c0IY!>r8;IFVSXhOv_RDfeWkaVVDG1yl?3G7ldJ z{4v{?P5mO&ef8`wjT6V&vm6@d#x&Oy((HZ1D%%{JQux_-;_M@CwESuSBLOe>6eyH3f7i-&PCOBZVPRbQBVwO znY=4O?3sS~!Hy5zjJHYE>kmDZ73Z8z2p@0!>FJTd(BXo9O!I!s{r@pw$y(w@=D`@6 zW6=9YYD%U>avN?~2c_z?J*mgI?^R@=b=ASV#$!4@k60=5(yc0`+3scy52^GewySfp z&O9}0V*!IdOru(c`?2)G9|1m3@j)A#`l2~K-HfHZ%q}N3J{j{C_gZ;3q zfnvuaQ#7jZQc)Z?ShB^|d$>uzPWpU_#X(Y9O4n(byKz`tQFUWLFCyUqGRCC$a26Cs zF>U`myin#&@T;h5L&Ff5qm&r4$Vx&;EGE*l2JNV3L5)J>Mt6RGCnT}Ql$)u~8>-CB zQHC0&t<3!7m9~|`KSsA%RoWB!GDyJ^q?%jTB+DTRfX8MgZCB7ry`WlEt$ml{+<-cY z97jud5U1J33_@vh3YA7Ro7Jq)_j4G2s~4TN9zReP7%Y||beZ9e8(Nd5ov@nZX^8Y8 z4A63&^mMyEoe0zx1Q^8@+eb16zT`s<@}68umNBsPtA`xwTW+CXZESwiiymWJA7qe* zlJelj*BXlr1Rd3G(D~p@d#~V^`T>Z+8ELwhp7IP#jR*e3-GntC88F@box#!z&iZ68 z0KfnxZ~3Gcx@;B9KufKP*jn6efAv2H!zi*zBT4ovC;l|K7;z?VCwKd{+R@NRO`#FOIQ)Vw)Ml>#|l>8ScTR_7Us8Z1m5i{5l2(Ms+uw?jkIn1# zW%s<@%@}0}@KYfMWQp}YdP3;1`Mv#aUJ&u=eM}7;bCzqSN zHd5IL5(@KJSqid+zAiBpTQTV_WrjL1AkT)m>sK#>H5}vXG8w>aM6j9$cYni4A9=KQ zN^?j*NUPiKhmNFVllmp5MpTK%2l|E9 zTCX|xo~ODD0U=uJe@Xj!bXr;t?2n9dsGMYzq%?x9*RWTxi01XxO>~#;au)%ZV+o0v>YcmDY(oZIUe&yMOdTl6ul0DIU( z65ce0H=~t^tn=EJ#`{D3W!;&lxc>ROO~>NTo7NB4e(^s7%8}a--(&tUyMi|u?oUz@ z=V%2F86LKOUsF#NNa`f&(L5-rJOa3-PIiA%IVAD@+Y?LFx#m?AysFXY!XMgi4!YIh zR%)VV@r9r=Nc7Ka5PBS4=3A5&7~z<>TV^bcJ;fd~WfJMz#lUL5?s!MVfJUL+3@IZu zJYdagrOMRm(8GqUkkaP1`|=>rsVtTy;V?8A~7Z z+c~>Gid(!vp?i)l*gLfD()-jZ`Fr;#X>ZN%v?+E8BwXpShxMzKR2#-UDTbW|#r$tr z3ktbq+NrGEa}Zj*u1vuS=iclq&%j`6zD#D2N;GGIEYoN|sdu;$`m2mC_LrHUqs)?# zw3V`*y(*?RX{|W3tiRuVeZ7|gYtC?AF?^;T%74Q1BbE}BE2%3(=gbs8sOL&ag-i&3 zx|!$=hT)W!pvFamy{CDfT>9^?NWb0I{Ps&GJWd!#Wp9tS;kKLaz!#^#A;NVf_1+A5 z!Q_P$s!**rnu%MQq=Hh9>O@Facdp?uYXmMd9Gs}?pishP?+*{^^CX9r?_zS6#_&=O zZcNEoM;Ct^K(^(jX0-Icp(UOC?jYI!VIkn&g-9O%t(c z_1|`vAQJ{OmUV}264WtAcHEWJOjg)tL~E#3 z5W#_^<3?dX#o#3IcjGp3xoujWx;rreh{!bL!TbWNRVFE4P>bSSMu z{3c3{O_3cYlMu~t{m+$+A9FS1Pb%R5eQAS@_?P5A;YEn&*@?aX#1}2DAMo&`J}+>( zpY5-hw?vX{&R2gq-J_1k1gbDk4#k}Cbg`U4`Muvg->x_QlBut)hPq8S4o>>((p#vE zJY$&m?_1+EPPGqrJ27sii(S0uI2c(HQ@O69!eM2fh=WI)&m}{>#|g9ty;w-8feR;E zMu&s-j*~NsaUA2~q!P8)yjOCp!ze0?pIGoH8sMCq>#y}&=^)K&v=H5DmiXcFFYf52giC~qQ{peDF>de|gRDsL;>#8tc|qf9LS5f5c9{KN>NFi#-R6F6 zZ$xkWDb`G>%>EfxH4(iYd7ZyS`{w#$$q8doTB|KbP@!=n>U>w*-PD4bLr3(n1GD^eXO2_PshJfpoUtT>xj z*(JAZ->Uy6v|At-m;+3=^v`?*tX4_UA+TG(5O$Qz3sKiJTHTPuh|qCNvnL1mR|&8F zx8p{NWHLGriuvaj+jBh>RQaQAb@YZB3OeDYSQf8wp)ZnGF_OvGEQsY*QHD;Mj5EsDRXK_ah}e`GxZZY>@G)kP3U#CSt339C;XEP*2i{KAB}&^)0zr6bP* z>Egf84^<(bt_^GtFTAdhWI_DNbruvAT7kO3;lT8QQo&6(2DcPhTolU~gOd2q%f>e)k|{Fxnt8C$0XpYlA8 zPS?9uyhY`8eSccWo%KvPN&BHm%a+``j6TccI*5C-G_f?XylXAq@b2}(N=bUAo_(_g z=}Ike9GT7ZArA1yH_8I^RtMI&uFv&B1{XchEje3C;pJC?GgOG+iS{!O_68g8h zGb+rKNzrmNJihW%tV+oB_*472qYoVfQI+Zqz@)0KeW9S#3?2PIIcHXer8}#h-xKIb zlXXHqJD#&%T$mWw?WBHvS~pdaA@RBUB8u;e`@qpp_!Qik5@fa*%3wRNdjPz{-|!+D zErS}>;?xXgk(a(O^yy4(A8V??b+f*}3SVM0*kf|A6>>F%3{6|E;HKV&WVa+ia7cU8 z4+PDhVvdX)?*|IBiz&I;%iQTOnIMWnd%YNh?))F;zX7}q)d`ODtfg!sDTNpvDp@XH<)E>f;IiSVu?PFq^urV@s}Tj4B@xEa-BbJfuFnyRMR z{*|7RFk8AF7u*vxdl8Yl+8-nvud!Etnq}HyarjJSlQ5mxXd>y z&4GCH;U9Ey=`J#jEQILx!Uh(HId=fW$`j>|ocD_jtvQvu4b04qw?v& z6=KQ$jy*v`ze+mk7f=Z^;|DFmKmGi5#P09f6kg}y(q0-j(Y6YEzu@FyjI%4qj`=DW0SCo>B+?PC{B>!i8004RO3rH`Ri2+ zOIw{oFDs5;HjGabJq3J|;Ak=4ThPGD79hrC*GePLEFqt|--MQo7{O0a~oZrMUIx_rEg6 zmG^!)Bj1v7M)o;-?KS6omd9}YA;bQhD%h0 zUIfSf3v`(S*pvL5Ne<2e?SQ~8-u0F5Sc0{(mK`LsC&~k;5j!B$`?h^VuQWPvavRh{ ztttv;#By|Z8Z$u9Ler&&uzaE5iO%$Qfjh6m4a-q`ucNWav`^PQn`V+g-T?y=@$wr9 z-r$qN7E;{(qU;g%PTW1S`a#mMz-}?|F26VY=4O_|6x6#cf*3w4k3I$xjGr{V%kCWE zBA~y<_65_<-Xp@tH`zg4)qArMMUpEe5jqp{qb&x1>8`P0kZFmJ zpIOs2OfZ>Kbw{YUf+Q~m&m3iY?Btk_`wqE(39Eo4#yMWJ<;a|Yf)t8jl7~6L3n%2o zYw+N>i6gpisfqeY%0nP5563fFN#YW@!qNhvla zEp|`SahF8OXkD~KFKYi6DM*)3BaqGioJ6z_kyp=V1bU^Iek|w>!q^r8)XWF&UC{6a z8weIz)~Flf%nsQ6jM-6dZZAR4MRi>)ph!~-r*J&kILRDQPCZc=S7=g|LRV{O>)tvhPy3h=dj3I1gr>G0>V!X( zjkdi_q`_q8ciXff=|!K9Ct?}~H0R(OOrE-Ka33m=ETGHn7+({T&5yCqz>1fQ!AAlN zbmvRm8hI;?DKG+mHIqML(ZN{3KWtFHw<32j4%)eI$JU1RRzisG2t|AQur1nVjbqtm zz#xkfZgcfE^0=;MI7gYvWy*9yM*Fzz+J0EX86COf1Pig}Z! z_!vSplea>5B{*!z(ry!NPW5sJb4-%yxpY48k2tsfT&`O9i-*7K zRck5A-D*$1{Y`pI8YWl6rS$1w)IKgfd|GDfX#qFaDjs&Re9}@Fty+ro)b3QJ>5yFo zYVw)5b%4%k^t`<&FX6&hIp`+}q;y);pswcCFhNit!Oq`UcXaGVpi%Gunu0qbCEbzZxIlFGE5|4R zmtu6&KK%_Fdd6E{eovixKYT5(I6HZE|M)+6IWCveCdUtE2AS{uMD~1KZOsY!MiSWw zqkFu%9_>DI3brV2)d>MdYKUf{gjyxASmgwtB(cl?Qza>p8$Lo>Hdpa!WZk;sdlft_ z#>mu`uhO4O)nHbK(hxDtH`uBh!cAOKkTxsffK|Dr9RFkZft|fz+>O)5f%{fLC}H=ubOe7(k7pXXK&tjj}xkIt`N?0Mm%V$neaFmU&kUD0Q%k6N7imYX)T zI({G2s@PzO+7?J>vS$gL`DU)`$z$`UduN(=gUp?lQO)I#F|`2MC9-+^UxghZ`k>pU zas?i(e#fcr@nr)RZK@eBhbUfnA4aCJDLMBBHY#R-@^?EyMKel_md#v8U&ssRA3&et zh8l47UzhdpXsfFkNQ@ii7Wi0roDspa+H2E{9?gcO!Cm{h0H7-k`itN6a=G-3sg>bMcwk9CjLRE-jKj25!a_P&j6Eml3-x_z?77cgfnC*rS=ELyO$Q zp8T4V$x2o)EO)=U4*veeJSuHK$Wq#+eVA&qiSMZ_bl9Bl@sObUMrwH^lsqHm`?P3t zfGSUUl8s~2agK#AOivJ7{+pq`<42U8$uc|J)e=ssdyO=9im_uvz_w%dh}x@7)>woN z)zi&9GA7N$ z0F<~Brk9<*8A49u^O$R=>jnp{v+n-g9xa)+QpKn+G!M+cqVh{bp1sdzp=~?;@4(yC ztrqWD#mgy8TZtAWgOlt&HebvC{oXbn94&ixK`7nhm(nE>VZ6|M_ zyV0~rdR&v*2~xzB)@9f&DwyrtL>SY?(x>VEYyecZPC%7#cbj=Trc_swh~kzi<@}mg z>ubp4M1`%#E4vY>zRjQj+e4{8DSkkBwn;3qZRE(L1R}Q@wvC`7C&*JrzdeJ?@SPZ; z|25bS9Kv2b=THR+seXqO;S&Yphr=_8c^V7G6x%u4Ke$#O+o87?wSGx^H2vBaqWX3W zGykO=eL7gPo0eAHehpB}H>%R2w%bPTL7vq&b^-Q)@`}#dCUUTJSTpli?=PI~H!Aq{ zf9mvJTr$`-H*Y3qt_B%eTFpN8#vfm&y~1RCA8Rwx1VGgo(Iy;zFE>*7#`oO^c>ZWp z?KWf>kzlrgI5SFoeLaZw6Oai_I`sS2*SeEgWOdZ<6p(jV{iZLb`PjebLq%?1oP_QL zay`wr{hzp+|6y(*n=AkG`F~JY%J;K!-!q^+w$YfqWRgd5FZ;sCm=VaMZU5}$|2z*6 zZTy^du{Be~Ex5{+z8Ac$?SuM~lM?c`KWO!Zr=Q$~$!LkA>)8-@TYkNvP5V1e zRIs6Tofi7_mTx^UPDU0@Lr-FRhcK7keBdVY3&jmvc^6T4`>@> zlDrz4rc78ZU6}B)SP>%26m7c7MLWZM9bJc*HoaRl){dU8x^=vZ|L)#$zT2FL0?%w> zf44%4_|fszCvWZTi_#z8Yzq6tc4^a}wimWB1CxbfFlzm5-1#mTRKKE$IalJDUQeAS z6t)8yUOFmqb@^kJ70dglx-g>2Slo|Qer(03L&HJ=leE_t@WOD*uSR3_{SRK_=wyW` z87`AeV4W?$C6!P4;7EtKG)C5T!;y576Kn_tv|(jbhw<-^Uvg?SB3gW0CNv`HSOWiO zgTJA!SI#3d<}dOcAAum(vuYG^Nd(G1 z$DmA=(@J4~mB%)4ap!4<1~vKuQ^kgo2*-2;8SWZWVBN0o4Hw@9GW|poy9Wp`9}?!s zMNJk)G@i)4fxPS)dD{sXAt=m>7qZO`$OtUfY5RMVkbth4XOB|+kpu77B~VFF^Adt6 z9Q&b`ufb#m!1Ws+fnO~PhhvRty`litvr(H^8_VbUbXD?PCiDFuCWCch=1 zkY0z;y7Q>ZklBlGm60d)mJu=You=GdH9XCCHk|P&fX@wm$P;cj@TdSE?(}x))1hXJ z3tST#ib~jA3K7_UoV6CXkm@EWs{hrR+FypENGqhyxf}?NR%55|+CxWuwthDK2T0l| z`+N#>+4LFsy1*r>lk2WwFG2BUGPkYOOJLOA{AGxUXnt~Bo%(iUMr50J?1dAT4gZ}}%o`zFLf9*oTxELp#vw}_T zu)J@0I_nyT!6tB}vm>*56Nh>f6r_ttNY6LbSZ*Xl&?NEtz>?FgFZKq%I;jRb3Lbwt zy`Ipqaz9(UInt1i@l`La0XKLlrT?6^V?+4I0^0~x7)(0tO|^k75#EZ;o$Lg2M2(kUK@kyCh%8v2D_??~yy!8j>%qAj#kmUJ9w(`HVlYJ7yiT zEwuBqG3p#N@+f}Y?aP|^8_>f(G0nmvGE}P9yK(LHBP9=b7kch;pvgrZCHi{L#H@t26E&tR3FH2 zFNcE|V!Rjgr(_#H-P&cgJ-HaWO=XUC5e#*B&x324mG37qUR!INyeH zc_jUx*%bkNeCKm6hPM|8BjS9-wM9z8562v$myA+hvvE;QWKWVx#LsC{Ay;s}Y(o!o zS88Fn){ua@dzNr3emL5I=8%XQ+^unp--Tjz`vo>`ZGu4X*v~uik}Y|3DqimYU$^W} zVc{L48?L%tN5@1*Rbwr2MKa|f_D(8+Ra6=(I(MHtiy+$TKXkn`C1y=iGm$CS7N9e@ zvH6;O`mJcQ#J8Wo8nB;g7Xw2YnMwHeeL^Lc|9tQ_8SUPW*Da+@_R%KRs-UJ(!g!F7E(Ov;}d$8{ev#1$6!sa{)}G!vJ7r5k{Hu9WPq^SonaniDS^_8fu8Dl8%YvaNO+IZ(bB=w6*K=6 zvt57RN3K<(JK~I@J&DKxok*_Ak&Yu{`#f?9QLtmNvE2blOEdAdenI46$3H+yX3ff7 zv&Z)5omHYTN77COw35ddWC9hbx}g0(FYPLSBrswAat&Yl5e0dYgeQxN#7@-F?=~@A zuxatHnO5UTpa`RFLt%G{={6E8dtV>O?8@9VkAezY4(ZA~E)QLxjcg#Xg-}`*rN#ig znuWIg0H2J?W`jf#huADUMsX!{;lT7of;K{Julhr1=QlS%fHU(jNwuPu6U#RaM4BKuc?<5;K32 z>Oz+4c}W1}`uIP6 zb`6DSGhc11Ei%lfcQ9m~u%9i_G@LI^m95-5olTHxunMQmOzYY4W?l3OtsgMX@)$xuhcJZ^^&07u`epU?Ia0x3PQ?CWL_V_3s#WlmKsx8L_Tj5NiTC!25g6F^)EGTgV7KaVU5Jb%e|M#eU%KZJ3( zUK3zfv?4^^KI-Yh@S3sQ!?7$|3&vVro*#;mjD4MZlPN5`Tlj>meAzjyOrv#F!xX%e za%aI0+Nyu^Gnls|-!7NC-tB#!<+GZ+5AAkFuMbAECLu^(ex~(UL>#*QFBL?&ooh{aSW;QC^W zR*xx4ABY&f=$e(PuI^%Vu$mXZ1BCjk3ZhjrK6c&kx%v{g!~^D%y7O*#j-QDewZ`?j zXqM_IQdYelCxfF0iX0KQ%l84zfga)?Mt8V5cHYxEaooVBZU5kYieI&p2QfNJk;o?# z|EKS1Z*A(Z1~_Dga&yKwVX@!_HIvi~2(y-tC^zmId9ZSuyf6b7F8!s=^ISS1_|gA; zrhFSs?`I>ExW5bq?lc&*by+t^0XZSwZ$4bqc6q3$T(xN#2PM=T20M1tYlLUz3Hje> z#}^VC-PBFh1hNica_&q4Lr9X!Q^Ve*=7`98#0MAm8Y45w)65;3rbHu}TR+x`X#)lC z9Q9?1kS?T}FgmR+f4rrLI|XKYRuf{Za;nCO-S@R-OC;@vN2rcV&BcCVm&pcwU%V@; z8fRA8^mj1Uu(vu@h=0)9o~6b#zb_KVs_^HHCMvU|QutP|2fXw;lZ!g|vgTIW5K8Tc zl?w$f&9`gr3azG?A7^r+6SNoK@bOCfUHTn&9O$~!e0X=-Qm1PvwrDo@Up>NMek{4U zW#X6snj)`PZGOr6_DWU7b7{L9J|Ri^BX#g4ZE%%&&5bTyqM6lKbV^xd(l{qX9L>WgAVEEj5V0j(%wap|QJI>p9~z1RVsRae}OU`~8LQ$JiZTDWFePK7ClCXQvls z`F^BwS)xywVrpaRm94C1!;o4Ty56OfJQ~w|;=1mpJ%mExp-ASmu49eTWF3#{{JdG& z8R;f&WaBvMdYw4nJA(ybuf9%uOV+)lA`NLKP^PF8b}#}E?NFgoQMxg7^5&x_L4s0; zesL`}xHPqknSsCfuvBGWC#fBBfxwBIzJTDTv7bEH#9tu_Nn^|wf3@PTVnRZPxR6u(}lvdUUE1LH0( zW&Sd%A9E>SnSp{gQ4jUlzR+4iN(6TrW);wy$>L7nJR0_GVG!gW{r)$3bq86SX`}td zpno3S%-=*!hnjBs2#EhkWAg9bIL>oIR!F;!eXHsYc@UXU^~j21j{+8jMG1!(^YF}t zue%#1ra>k@ z+d<#=(pEA_jbPU-C~BC)pnyy*FL5RgyXQ7d8`5Kv)IVMXqV; z0E`?WK<*pzLZPtf!t0A_`d!f{*)Hd|cUn36?!m+wUim};a zDABdzGB!cD+@O?}f7y+^4A? zkCOHAd!L{zq9EjtH~sb{alrllVr4#usW3=wjf?<^eBRA(Ea+XL7Pilq24BL^LdE?w`}a`vvydQJR;3@M)?w* z&v^gAavcSG3$MZGW%#`FZ)-hE?e)Twt7Y@37C1NdZefu>lS)Pa(0&b*F&+B)!mPqU zK1v{xBP!+R2GqH9<(UDcMvn8?2KI_57K%%5MVY!8=hCzYQO3urUw8X$f4QI| zO|Z1O`n5SJ28|Z>zi|14r?Ly0oURBmH00@*;ueJaG`m#V5$$i3>b1C%NBbcF-dI_8 z-mN+GYR_BeeSw$jgdxnq2D}L9)mX##svGUU{gp?Zl}=Y@9C%`L%D{13ID;*!hcK`h zUUxhxv$YpJ|L`&=oi0es58f!xWc4kFJa$iuR-DrD)|YLS#wL7Y8f^f7-Ng` zW$6OoUY07JA_({T2vpy7($7UJ@`7`}k~}riSPoR1s*U?ytVeAOcEzu$=wZ*@H!hsM zSkW=l%)NFga;B5Pl5{Sj%!@Rw?6&;RXK-Kc(sadp|74SGezOO{PRJ`XMlb&(ji z)Dny<*2&-}FY3+!((7MX3xZBm+EM4rwfMA>JMnKMcvh?!?PK@|M9U#JCh zPm~e4Ux#4X-~SPj3l4^$2Lh9@CQwr24_e47^eLU2_kd-7O-rZ|9}>-AmHM_>nnSXC zPIn)F%8i>8=T^*LV&odmp#%k#7_TQMTuW-%)ZuC$Te!Afj9$I+-${KV{;DK~e7p(c zfc6|7s-v3t-_FA=Ey){5tw(?8=C2BZs_y3=Mn;~<4QoE6SQ%vNX$(=~Nq*%6Jed3l zp>w_Hw^D0o-RyQy;y z#eeC`dVfTn#LN8f3b32J;8^+S#QpR^QXtyx2gRy&B%62b5O)CtqC-@a?8y#&G{Qd zZpEzS`j~P-@N@?Qx2zof_qO)ME`KRA1(d9>_N{MOF!cc{i=>#oSEywp(BLuslyAJd z%wGUXE_T=d`UQ>ac{iQvLh{`M^D9arWih>vXjyK|*&{&>xBusG|G%#PIJD=2XNR|iZG}=vIPLQ2 z88#^0nI-W5HK?KcWsNg83x;neGo=KCtNwZB$RR1^;;nI`j{+DzQK~&?(rV)n@S(We zEv$WTO`QehW0~@pS{vqx3!9dnB}U71uuEmnPX7`3Tk~4njKA-EsP*q^OZ$GEf?6KN zdsn0GVCXQ$1UYEjX(YTSK9{%C=U|2$+m}%+z93{QZ2r65i;eu`yk^K-i`u-AS3>E+ zD9nt^z3rvWki73;O)!*#KPg=cxU`K~K6RK9#zr&P80maON*tmBFIKhb7iT z99-9uHPi&dIYt;t*orJcu>mEBKu!43V9d@g=8^s0i}0*`oFhfm4*Zg|b*$?mtD<(akju9;{n@>AfJG(=xXcI7lG66K=OYgQeN<_}Cvh z?ol`AfUh-Quj$GRrYYcK3nu+a4#PPHUqU&=gzAJJ9^9gKf$|EKo{U2k>w4eTS|8$S(b(t8- zV7se=MiNxIBEVpW(s;xcKC;_1e^-^mX}q(r4fF**%JQywisDuxL!;)9WNq()?D2-L zOVH)$(Dk}cmUZvfmq{dTY>L0)^UYE+NAVeL+h9`I+X(_pd$(wr5P)_6!oelwuHq{+ z!{@beY||3uwmNEsdHMA^>vQ()igley!*yR~EpAGFKBb7C;wDAMGfi^~8~`_?<5Q2f zu&r3zG&#kV>4YMQJX($O4)fWNpRZGZ%7)U}R$)c_*>%;QIcf-;dwc7SSMNzXK4*Pe z^EB35s||~3_+fkMo;Yf96Yb>WHoO!Z zhz!9yB2U_8ukP!%7NyCmMK@2~6zf=(i%<0S`v!4YP79se4$X@6sL1a>`B+Es5sXbn z7ja~KU<;}8Ig$Dh=nCp~-gKrIZ6^Q!RE*1Ru0fS<^41K*u1ncSz$M2^(b1G+A+WA; zGrQ$~iZNULVE{I0j=-ro$6X*cb+T}KP0{9EcVK5iZBBB?^d29j+B8yk#@z}iRzNhufEcX(9M4U52^Wv;Ag$8 zV?n%u$T@SboO^7yA}sq~(G6qB$sNVMd%|>tQ|g;41;yJnSR{MrH%iZYhpn8cJ`13ZkdC5O=+xxPJg(Zui)-0Qd*(Z3%o!jJx;vk><$Nq-TWHGW2Z?aq~$_ zl+l-=_*?AE&#lipbf+z2^@k+=Db3pxnpHc1sC}*$z@OKrd(3`(A&T3(lpz~8CSWZg z;Iy5lovuuDIoA%6huPteJLyuFv*({5#zhP*c|N5F7-5k>0~-z2Yp*ZFm#Xyyge^6f z)|PP#_PKW4$RfX^)_;01Kl^TX&b`CjT!Uj1W1M{6^==5QrkHVzy;>^S(k$dyyE}-J z1$AutQLVd(UDT@XECQ z{QzTCMoGfYTXqV<05=MbF9$E4i^}=s=|i)DZHWDl>j=LSg7rfd(l6s7{Q>hLUMK#% zeZ6)1gCZ#_D_u=2ljs_M{E^<<1>pY&ThWn`5~athVjp3r0##s)WK2#<#@x&@O&QDf zcQ9$?8DCuAx#2f9@z%$lrjMHH?u&1kP^s(YQJzjS=P~b(XbUryXFOgo`UiksfE-sa z_0f9+nN8B-SbCSC8yvcP~iF?}-MAsWRA0kceVF{kAkJfu}FPTqHF3 znUUda@ouK=!UKicGP$|HU1_Hx;wPb^eedl-eJ5w_IMMB|96Q`Q;p=Ug5Q2T=GzcsA zAUw>mVaFmtHat#8kL{{A6Kd}FRNuv}_japMv4<`!mdr4681gay0f@!JH0am}jCv{U zEt)TTsu=)M_b5&Dky-&fq|_jlu+0?DLFAfpaaE?plX0~Z_Kx$Zn@nGTx21*&vau`B zT=-jHY6sWG_;p^Uh33>{b#dQ8aibafyAINPvSS84wfPS_&LChn^Az6W7<&c`LwJY} zX&)rA6x8dF9XDh-%;a}uxGDTPlK788q->M~vPp|pqewFCgU%I($JK=1^CBjgjm4|) zt)!dz>2afLjnAdqjaY(S=i@i%RZpqSl&R2`ZL{pI?EvqS9D(?z!SsHoFKg&J9Vyj6 zfL@~wQuD{+sWY1$Qmz+~ezhgHz+-EFpYObIv1B+IMSj`A3UC}%u@3}(XT4ysJlAyzc42n(&35-N< zmSirRAr5`ItRanDwQlkhz8Y`U44);JDZ~pObH5gKQwZ%Gavjo7Q%WE6Ursr#3a~rU z1r+VBB!y+mh*UW9r#eRA?u|(oyrj3(EZHbEd)a_5m}J{RkfVs6+x&6XeE#S?->Hq+ z?+INcR>D*t_O@n*`*w5C`)}EB*k!in_lg+vX2sO(z-s#9R3(~vXrxY+UtER;E&!1c z2zXsD)bZ8)*EtKSB#{r}Fb*c6QpxI;_w#l_J+ECw@(8`LDi)Ti?CvX2U$c;&3P}kH z)FOMAkl~c(>#p$F{6)r5GeXY-<#K6h*TASmLGU9Qr_}4S3+u2w>BKzc&+B^t&fX8pnpT1wk{l~A>|6YnNpyes{g^6J8# z>p7KqPpovK0zS%q8}X2fAzx!IE$ERSzT|d%m@vEilbjQMut7$a>b$4#V~>GK#&FJ+pirvIt^9@sc%DAyPhv z4IiBxoHs^Bw$1@cvQtWQ6YJMlU5AU_PT`L!f9dv28U8nKUm+vgxj; z?bl8|y0pq5+_paXX0&9)YYJ+_aNFhmu~z0k+ROt*)gnTr(o4zy2MGNIG@;W6+g6qX zudD4E%>$_Inp`8g@-7AOm0pbwOmk?lofz=xIyRulYM^nB(R_>K=H@&#q6v5sOXK+% zm@yR|Bt2a~X>+uCy($G74aVI%5b~?`6W^a2h?EDt*iPye9EJ6v3KMr_L0){u<_aW5 z`|&-eu3jWRxrv(dWkM}MBAcBHlQU-=ijK=@!8=0U=@1jj48ux1J8mXvCvPb&O872< z#2CY}1vnC660q^!WCdnAbio?2l4w_c&)6i&d~u8ON5pBvwzufU!reXN%3-8+Aw!%S zUv-k@NPgTeJ{!mRXFHx+#>sf|#ToxBk=jkLAo7Jt)V9~jkO32K`HYoRA=>WVH8^H1 z8lKwrOb1AQBe$-Z=ze~|ZMRs_Ai-qK^&?y1-mg#4>o1{heswisvuizB!s)tM3$!u2 ze?lIhH+{fzdcIWTj1WJyyyi7->Nq&ox0;EQwOqkt5h_elJbh(c`U5<~``cFs0(Oj< zkAs03(=@AR@s4O2jP?(a=dXu1U-)!BQ&fugnTpcs~qWQS`{9BJS%frUi zM5J!fGztiDTFDsavAJ=_bBFV_dG6$=cWqcn^t-*zI{TdZYBPQP(0H6d(PrQ$MdWAc zrFM}QOQuZUvu)3q?JExaV_s}1Bu-BHjNzXMuE}x0^_Tu%_O(hRv8C(FxQ~n+TE+j+ zr+zwbFPurah#g)C!QSA9l~}lb8DUvgX`nA9cC;ZFLFEN?+unB0w6wv$mC_;G7C#-O8B=Ey)${Gh< z&a+&hydE zW>CLA18KyTE#09`btfFQZLoxBgL6tv-AhVs23sy~wn^85l{9Zu{$Q6B&E}wevDWSp8?!BR%uxNXqfAfac0U0<+jUi=p1DcP2r#E} ze}!=6pTt+FHzou(Ag$j-k+=435aA}ZR3+=DO5g|udQT082@{~nD>gu3`TK!CCYMUG zSsnFxzC-RYv9%AiJ#$rKd6XR^S{DP|+jP8yG{sLP5D6*WO^oEZ;h+CA)s3`9Ne~}} z$}HeEVI}$X57Qd!Nh_5j^lhi7n$GLrUQ=T5WrOVvPWv>&3Xe}&UYBt9{;z@V!;f## z>y|%e%qRs(yRLj>SjyjJdKEh5z;i;>&s{UY%z|TmJxikF;tY`qkU`nh+g;M}?-r4) z4#3%f;@~R`zMCEX8~sOnkV~7VhaT5H;rHdx*J^MK+*=kI)P9lQ(!K}-&1T)?b${{c z`Y8O|csX>}`Q6|g?-UCC)R+}@$SQ0P#uO~@AHZC@d>dkT zE7Sqg+-i`i)7>UIGd+b1*6xq*;U2ck3VYe}CiF?RU<>?_4%Tkd9g{=*JSNjtB$KM8 zsy>sPs$qnQ^lRtPdA{w$KV<7T|NMC>Lz1iU{MCOM;kZ#02#e4#Dn60wcIC%PVC;Qn zRKvS5)48|03#2r7u=B1*H=1JB*s+-y4%2LbP}q`xx#6g?GB+x^W=|}bK88v?6RT7P zQhxdOs9{=15iV>B*@8{m*xK?Drgo8#?LK>r8{a`EgO~wbC$-y}E8Jnj0tx+t@^WZ` z)&IL~TU^?VZ@U-F5|e|sHjLZw4qpk|UF`tBVK66n?igXktG$$n#~p=HsD887k4kuJ z%}{W*!Qi#GG`td>lY>d z0TR#dLg^y9e;T(-<)O&A&YYQ(cT_s9c=Xy)*uTSw%53nxZ8I_w0h18Yc0YY+?=6fO z-d!_eULVM_{H1_-5oMy2?C5RIO2x$@^tOJ?udg=H?Nh_sZ4UwjeTRKS=~Nq@1xr&n z!LcA4wXrSJ_?Bs#al0rldz-XE-W0ggy#9Q~m=VBV z1m$-5QKqaq_hxCs?HsM7qnG+o`aQR6_49ln4gBsPdtjlSaNU~(TJKskZcYO{G1UCL z9Os1uG;ypkl{~V#ayD(5o99Qu{-6=ECfwa%i~!;X?gEdhybQd9zoZgz`;T%u`|m6n z?s~i*{3a)7v;geRK1;7}i1-OpS95;Rp=95|(ahZA%j|N6WkPT%In)xPrYo!AJphE( z5?(HTFkehoVLy?_B@)Y(1ba}Kdp8@6ktlvmJwWs54R&@d_L5)L{Ry?SOH*gc=x`L0 zMMtZZ^XceyCD_&Cb!%vcwKt*c;w*^JLxY3WEVnx0>xM8Md3tVStB}+v9LdnFf=)!Q zaG{#!0z5TjBdx-`T^r^@MZ&q2PSdjY}>gU^t`?7JuIMi{unf9l3GPWrt7ED*+U_Sq}!((AJHjF;bWp zap1x3o0D!?n3{>a?g`VA+c35%P-V7NlLB|w8s;DXO?C}7pvJSI$69SVbrhq`qd6(w zcb|K*&yZ8+JFpJKvFD{%ro1q|J(5*!=(ArcA-Ld+wG*S}Tqaq|Jh_%aES0UFR>bh6 zT=+sDBg)#^fnlm?r=za(LzBI%{(d5CA*zwN_a&!sS1yj3DTPNB>Kkw=Yz9ptKUk+-qSEe>CSn)^D&DLQ_6E zws*M>Mvtlo2xtLK$JmcHQiC#u3~BCyx17-$B5-^{X2v0JoIA9Ul)_$4FfO zp%K^1e*jRp$d=k7Pt{{J?OhKtw5{V_io;Y`KugAlE9StxJP{&Cpb7N|#K>OSVa>DN z|J`KF_`#&svqEpXX(_R5xfX838krJtgaR5;ki# z#2AJBA%5Yqc)=*N6H!V9bjW7yr8+HmMhM;CbCdo@w@CJBEJ?v|$sVVEJSgxPN0{(4D}HTM0vs1fB3f(ke(Os}wcR z7M8UrjDE9pE}Z?O^&9|5eh5tRrGx7hPJKynuPaeMrzwPHENqRJ2_R>qI&Q8hNFgg{ zn*2LNpgd3I5Af3;Kb6v>$uSH~`zR13tXYq4K{ogwgaG=G2I>uxK_Zz-h zLEB=*O+vkK+mnYkFEI3;dVFHh`V~>-+MCx~*xM)ASZXkgc7Wj^d`n9uW`USd4fR)M z%-BTZ9g=Tx7LUmt2!!!jYCVl7iL*F7!^=@lQp)syV3x}y-?>UU+E8Qpw1wGwS^gY9 zlO%ZI#Sqh1kVOdq+l;!X(~a9+sScN{czX3fkR_Upc9Er3@5769CX{iFfklQm!j0Ay(ZX2C7Z zqyS*%-O>Wz08E@)S`Hn+B)g?G9|89SZ)tNg;GV!O?Un^##NN{Wf&fOu4~-3A13=U# z0NL-BPE-ewop0&1egOGrd%l;?bpeo_e&pi(p9toi2sMa58MZUMk4@u z{+4bP1(36U=%+X5-@O6cjlQL)UIKSRZs`pS02Aew{)Pu&T>q)zkZ}P_>026C2f&oN zrNNm1#?St~IUXFdB!ChBBYz*(emH>z;C}uOeRDo=&w>GDxm#L$0sz_F(nit%DDIZF zSOh>XZ)tl20HkqCyVV28gSYhWu=)pXX@4yM#CA)Eg#w_QTRMgl04d(m$-V$c`IgQc z2S6mZbio0DocKfk^XvEXD-Q!eq_@h~6#yW}E&cHU0D=wcP5NHGixmK=-qN4m03hfs zJwXH@huzY1xc~?@$8XYi`;}S%x#X7KG6Rs$Z|MWr{5Za)&olw#(?2yloC<(kbxWh5 z0?2E(H0B3b0YK)rG^HW{%Dkl?9ReVUTbhj*Kz@Ep^F#ok z7q|42GXP|GOH1hhAgfziu^RyWc1x?%1E7FgTDKeky}qSQxByV-Ep62XfPT*Z@9lR~ z20(9b<$J*9+t2Iwd;V(&02Fg8KN$TV>x+y7KsC4W6O;f@{Vkn-2LQdlrSp3KF~7_Y zKpwf3UkjVBKj$|lzz)E_uK*B#t_RY92ms#(JKxVg%752=XaEY@Ej@}0p!{5~zUR*> z11LZ1GXkgq_?3JBb>T<(?|L^FK>JzWcYS6FU@-rgj{r&p&_{1+96JEidP@^?04Q#^ zG(|Ch`g8rcsSknS8GugsBmZVSM&PyqFn;#`cP)MaVEi1vAEo|&{ksSL?t#C1;O`#z zy9fU6fxmm;?;iNO2mY^m;CkX3#+u?TW+nh2Elm%g+_Jjf0Kj@ZJCGR|o0?e*fOqSg z!DMDe0$_Cxd1iTAQR5e8Qf?4q6*mP{LpKXU9wV@jAQ`_4uZxwfm9c|9nTwUBwLPzk z0Qh_5ys*zVzh(lHeJ|o*ApjP>IV#z6`KM%}HV|Vn4n|G}Ll$;cGAsG>DN2udtJSMO?FeGzJZOSg8&%T(jTW_ zW&5kzf7@5L3d+m>bx|v;n-2J1t-XV?@t^Jew-wu~y4o5uDI43{I6@4KVZ|wKjBR;E zA;$U+HV{=C8_Pd>@#za22OIkrHnwDIiTtrlqO^l6ORD_k4Lxk-QTQM6$M=N7% zhd*qM{cYgY$!}~8oAD6X)V|&UFuzY&!00{f5`w#)23`YjzY;v` z6FfZZ754HYA;2TR66^)>CLthwPoSHG@+;k#!%8C|ARvK|5Rq=>{3`O-AFkg6SST>Z z-zx+-EC3!04gm}9x)o^s-Y@{+&m{mA1%!rxgbW8DeE<2Cfeb=HLO?`?hxt^H;1Lnv zK<;)<&V(%b;iU#;LlpMqlwwA& zM>x3Dd7ha>6Wqsw9UBP|0SyHW9qwmM02Zt+a%^M}i?E%Nekm&i$DV@|<@XPRV39I5 z_EdvcX)5KostyES!<8dG4pBs^;os-Fo&xT`+6s?_fCUHv|>RHslU7M8g5BTt{rBO5j{MbAlbB;ysAqmasOb0!TMhj|dBLx09!BT<7Mcolm@7I)u)TY0p#o^rGs#!{f}Zw7nq&;pL4k>ms11 z)j?0*;qu9ndUEhaLU(*q&CqQE{5SvzHi7a!OA_*jv6dgJ%jv&vJMxael+OAd%xq3@Jm#=go_ zPDp3k8tDRO(8%nhaBt%$WnA1r@GCiDA`s@dBl%ng+)C*${DJ`C$QK*?QW~{{J7WJy zvUO-ZmuL<{W9zFt2U_+c8ZOY|p^QW#gJQYo9ksvZF%oP%-jdRdH({v_CPdcoHx5Qi z=58IN8jI@I5tc@r)p;4DkR<2q$EwFjrb^c8qt=Y~NLt3V^H~n0cM6Hl*S$bUm z+n5uah1UIP{O(V=N~WvaZzE2ulTfARm28Pu68nZL1T5ceQDHeatOcq2uY2N;2uvHa zt~1uKO5v!{F!4Std{7JhH_o?h%E9P@VX1>WNTTnVV%Dv58sy~FM+tLcWpVyBs< zoc6-D$UN*jdn~DV{Ggau(B{FXiV3-EwiQ)4B?A_lVFy+$`^hQo4In!yC1~9DpryXdt4hW%pwrz5mHK>VaI0{)(b!`?VK;H1Bht;p zP3Vy{=}t|>e5)&QOSb1qaR`>820HG?G3C(p4YfiZney1@ROh7k!-q46>M{PE1c}5j4kcBWG)hryI{2kz-E2GE zFT0Iz*EEQJ2hpf=TxHjSxZ=kT4)|E2ySc&=yXfatc5Dk(89yTln(fRK7Y9C zFbnpMee*h(OW4(Y+iPLY$XeXlCUY^5Fex?!3;hdj4E1Irz&j+nZMKsufYH#NWR&OT zM8xYmb`&7262chxO3WlpAs0&FFk-9EGX0n$LW1Y@Q@c1hGI7^nA@<)4(OfkFu`N=) z3ND5bN1?#N#eGM4oH$usx%+vln*4(g?1p?TDAD2HRND={K+J3zoJ2zoo3fEFs^oGf ze+nI)oqbVGENnSzJoZLdwOb#Y0k=v9y`%P!mJn68`**P{mfD&ZW%q0g`L-kB4(t%# zM&=(5rI+%`H})E8#rJMKp~F4G9a`yBeeNUDIWs#(9%8)71aK!`1M`~oS0}x$(|gmi zK^F&OXUT_`ku!ozXags8)kFDV-Yc$xj3KL8*8rt$^{mpCYtjS10}n63b7rog4zAg; z{>eVk3EnAk;&YpKZ?kuiDxnSxp=i{pGyb^C;8$;beDQffJWm3%va9I)sqjaw16hnR z=xWunQ$(x_DeJvISagmE50MO2-D#KUo~r0$%tSSjU>C*474zG*5$Z!l0~#q`kTs^J zq&n*~uT3zWQray1Mzil!dro)xxnJ*W9_f-&aXU9Jgm#*~sPBc3qlK1sm2{Gh7>82u zxheq#RBC~n2KgR1_Z$aV0+akzFoS#$jd+f5kijPs$1|$v$vFQ^^NDsJ9!6*}VN~9NVx#S~?>^pXQ0YMVc(kF?f&6-x-{LuZ{L4 z^*dA^$d+-kQ9_!8nYE|CPP8@rNvJd*M#!gK;@JiM#eCIHVQa2*;mU3znFws*>S0u} zWL9n6)2oACb3HNQP|eMSJefS1U9mPPx;^VvG%*TSUbQLowg&kGBQ!B$##vDJ{cRK^ z_#B=$#ykp^M6Kpg1X!YRNlN~3rCK>mNG(sua8^Uybvy3MsN6LqL3ofN`6kYhPSAmC zD)yZ(Wll^Km5damXD)&L6?~7k%8c8R0!uy7osmKg?dLLk<<1T>LuA2JH` zzl=>I^YCLrkWCAa3Q!Fc$|-faF9g~ozX&&prtXh_t!*0kSwGhpiwW@{5{)P+`$Sor zLr*L8O^(x-q2r3}N)5-fBQ8;LrRTHCk^;^S#Dei*kUhEp8ytpEG05IIg zl`3Wep8DNYA*^-wi;-y^%p83uN=4&HC1tn2`>K`a8VGy0XjuzQ_A?0n2><@@8F?ET z@xvG2GDxj3M)uZ)a1N=P1Twr z#TFsj=!NbFhsyHo>sx{NBa9GZtMY93)GXqtf_!6VgM^mR=A%Gtf%eHI=Pu_*l@IXP z9JTJZ^@_8Z5U$>5>M0OnlZ%Vn`ds;@f_k5pY?)6@rX36&Hqkh067iNaOyOfb~lbRtrWyhc3a?j7x4AWKj z0z=GPY3t~?X*U!EL|225WmL9|6e6hZynJUolat!0#Nx+qvD!N$6*ZBo5cbMYNzz3! z($_Fe;gxLPIE~!N+9qEQq>8@wdegaqo)(Y9u=Z$u$5x&6(K|wKlOm!gnhUhVV$n^` zy{{+#_E7Nt?VRK_ZJ?DpSHg|6#ruT|7#D05n%lf9*Sa^ClcoPfD!($1VTYYgF{9@ zL`Q?GG~F9^KQ1eFaboZ0w* zLs|DA3@`SrUY@k8na!MDD8D)`6f1fOtdLohS+j77znY%-Mi+xle%n1K!RCD&&QdaC z>AQ6<`;$m01Lay()l{&$d6}6yq%}Fp*M;7f4s9#fM_H~*BACvz#)tLrvGwDD%ymeh-09jrAh~?Lvum)mu#` zrhVM}EFajzyg*8sO5T&lZsZc4B>_ma(|=gvU9JAeJ>G08h8oKeP!?^it_b(&#!^C^%3_9YmOAzcMROW1-{rA$anuOW|DV zM(o@AoA?W^foS=G!->j|_z%^vitjzw3ri1|_AV_gMp_+TKOF1z9y0r+E}KxrMtJ5<^Nz=jp`%27*p%p8<$i^RBiIL~3ohW)^`*Q;!o(0yD#Trpl?uQ$} z>bQ}VJd1Ck@lzV^eY_!BcD!_G%5uTOzL-|Cj>V>?FZy%^mkI9MKcvn->9|bQHowc* z%ctu?ZhtzN9M)VfczZ@=TgS!1x>+n4wwHEdDq$d1Q8A$E)8W zf$(`$E&D94@|VXrc^`Fg7Id6{uL+V~_-1?!lolLb1JZo1HG0+f>HSgdry=%C zcRH+z%8m-_EQpCY|gv0<<^j_?rt=Nq+`i+RjK!X3=U(q_Rcrg`j;f* z@@3X~deNPQ_sY(a{P+SMGj$C1W;IW6+t={1H!EgVY3!u(9)95Odbcmi4{7F9`#O)u zEg)R6b7%e3+*hy`GWt&2Pt`0#^!&AJPw?==*W9&C)Q>h~?hev1^n)uZLy52a78 zwlxMeUgql8dtD|5pBWw<1#v$L<{mY!9*+VKnTBx@OT|dm74k5Qgll_N;5v5Yj6j!$ zOym^?hU;XxYV25=PrPDadne(x_ zjj0K7sXGhr!PvG{H1@1~vrLB(Lfi3b=C)(VNehiR8$v* zb?#OBV6N8Y%le?cntmr`E}O;$otK)Wjng8VS*EoW>lH@ew>e$D(M^l9ag)WmO(NDS zo`m*14fl#`ph&CQnf^SBqZYUDB6wNzYEGm{@k?EH?3WNcj>PVZ&15a!vwGEqt@vwT zz%)JJF3KRwAL9np2zWPsUNu2+*5Q<{Y4p-!EE5^q5Fy#2>nVl}T+Z2vAK&YPM~7$6 ziIuN{5XncJxTpPTh#_%4LscVUX3DDS>x6_4D}q&=lW27(+2f;Jc`!G;{E3uW5a_)SkE+!qEpu`?-nE+??Xi)l7NL!6SoW)$s zR+l>R1zHmcXP%&DvfP-4#<{IS8xwjKX@L`Okqo|}ucx6_Bx4YI(#29&Bu`tPMMMHx zp~bv2<+JA%cEcRhn#un7##KJryyhCCh>)t>qeAKhx^g=+LAIC~$^{ah!s7f$Q^#G) z9x7-^XMSWyV&vJW(+U1^h;Fk=-i7DK4t8KWJgS#} z^fP|8&oFWJ{y1u{qZYA=ygQ^h?^AyENl@gaSIN$v*Rw|!he^2IEkzcXU+%1es}Fdk z@aMCOmLMrlPZ-4uC%;GvmH9ptcNVCn!$vr8d7smVU*go7Tqrv{jAWDb4YW2KC<-wOkPALRW&HkOn-hN!NfIx zXQfVssA%d#c6DRZ>(oxYk<)QK47U^ELk+T>bu zhDc22Op3v^J3W_~+xNdbmQc^6VJK{1nGW3csMPl3v25{;ZF{UNOTzivxi{5Ax-3Oz zKI(3PR40sAt^!ee+cPPXMX8c;^&YdPg2NqqCiEPl<4|2Rt8lFXd z>r$s2B^cw`#Gekk_XT{SS3e}R_Bn@ptyZneWIP<3?cUbGaXeMK}ilPML$-m^$YtPhuU;V*;cnOsxXG&`!!a$E)`(pM9u zZARDC&Oij?n2jP4ty3i9#R(Bwa&mziditYmKi>O*^>uUm2Hd@+*;k}}4(StnI zgHMe3_#?a1QT1`%AEmPzaq(0>ASY)&Gs!}f-2e?;Q{+4jF>)$jF*ivP#@{)$z9*h>6I+y8Z}3WLvE(R2U> z8H5IhfP@NRuN&`2@gU<|B?F>R#C99QOR*wz%W*Y zkt&+7z6gG5=?7Lw1jXnrR>ed?{?DwMIyi)52!mDpg*{eCnY|iH=?5?_9zohavueAx zQ!=a_|0b!&7L%wSV9J-;$rn%5j>LqF=h`7#;kEkPXu*8d7e)UbPIYc zg$)Wa4#cZ!J<6>`(8!a^E7b_{p2SWTlVHW*q+etsN~=;LOH~Eaoyz#1CD<{t%lyFA zFDpcLF@T9ffPKPYbd`NX=0nOTod-vuG`pirI%nQ^!XN%EuRhyn^2c&~`Kx!a(M6=R8x6D+uk zeMsHVta~P=M}f28BWRNBHSoKm)?+JbG2ej7aWvHfOwo8B_fw}ZEOgq^o=?jPF;teV zz7JDk=Aj2x$E=Fh?PBh5oI6)`yO!H^c@v@09phOVhkQI3Nrscqn5Qe-)WLN;oqVj=H{J|)G)&|9Sn6Hs+nggvJW9H;B1`O z-gG;E_pxH1TE2We$Zkq4#$jeeQ#9;ReYc-vv1}HzHSIOf&}{YkSZK;C?bRYlFl(Lf zCi6LSVp@HmJkw{-xDWA#Ggo2Jy|d@emeV(1CSFBmdqQjWy2$<*AH=w!4$q{z_X_qM z8YiIQaU*pUjZ1maq}D2e`L$K$`5G7d8ZP!`rpzj-YXH}c&G)!{sDCosv|K>2Tuo|3~{ zUWY-kxA}AH`DRlJ!QiR8!H0e%7D*}Bz!S6RJX^fZDdVA?dR-ZMW9_%Eze8*E(omMX zqN3GGkDVgr@Srx4TMVcEcWB+;6(C7upn7iDeR6Wjx%Dw2f?^=LS8a*@U|hy`dO1%V zt*>mmmA@@AD$&)}hS%sz_^vzt=HcpW3RvU@T8*pUp6DGB+94Wo_S9}YFPiJ`I3WP|oHkb}RtlqSo9v8Se z;(g4U!9yyKqj8bzwGn`Eyd`19UeuSR^`S)X3+v#~*!ab`U#t48A)O#mzd-KF&hS;O z_3TXk&RZsi{3g@>p!1XMeQ&Gjr!3jT^cEUXn?+unyw$1;GZ8;l;qhgj8HzZ)n4$Mw`G-#AnCV^#c8E(B z)n7HA`C<_g$rTT=vI}=T2E)nt3#nj&Zv0OE0N_ALP&DQ*o*dCLR?s zD`fkZsbFEJxbHdb>xKq8J{b}pGD2ea3RFb2X8152)42YKkpA=h@9HgYMkRYxf;gg| zH5W0)W-d6iREBn_b%{u>$Amm`GVU|55!^P4ODM0crsBlYoM^JgyYxv%y$Ze015O$XLC&^4p^LS$~KF$AZJ_$4e8#I(@}@&U>9p8)xjFSS?00*A|rwC}m&%abYkymG)Yvls$iDn71~~ zwkZ&G^+=>7Wt%`~d#9zoo$z^K@sNWG{aoD^Um{a%;C$~onT#GzvLm%CvzeU`k2IsGvkoYsoU@%v{YpcA z1p8GG%Chn=kyca#q#Cj;D!)K=)*Z*P-TWY_jw8fy`Z@dYNp*(y%)wdoh1bRd?utDV z+7uzk0bY#gcTkO_wxZr(rYmGlb6U>fl;i#g4U_z>oVF?ATd=8>@EkO;#Hv!x-J)_S zZ<#HskyayExs9^4#pG`FV)_aT#`HBnPN>+$xnTfvBRU}wYJBEipJSEr9aMeTq8;s#7{Oib^ij=b?o!8=U~Q*Nd$B&6ASdf9 zWRcCI<*qJQYmvK9A=kM_(wCI^$!6bc}p(10lIXsas}XpL{g zuMxyp<07^0E&RkJ3*n_2v(k{HrsU#taK&tQ!|9959;s(P>kMuJefa8u8l!$;=IvLR zz#9^q+dpg_W+>0y<&=-VcEYbnqcdn_&cm}(#4BN8W0%!nMgnHqau~Wd?6$)2CIKvK z$>pVERrNaDR$AuiAhuK!qWGG~kf)I?PTQIup?e>{P)uct=ke41zR9T>aBS)Z+w@oXSggRK_*uP=2CZiJE|K_72x2vtUJ!$t{H>3+-cm#MpYEF zwuqfZk0-2&=J*uS>QRH%ymSHUQ7$@RoPa^D#Uyy%xnX6f!SU?$X zF(|CYPn74PM#KV63tvMlkE2Lz9TvY!r-XH!QRsEY(|0nyt zg;|(cm|=0zKM0Roj9pk*f`yBljf-1CLPGp6N%e;<+kdqEZ%Oq>eZQ#rU)%Cy&-lOF z_xKRTz!_x%Qx-!Zv;*BE#KqD%?$E_0NP1gId^@^Y44VVL?^c z=5Kh=kKBI@s^a1cEBy{u#zUhd2#=s(Q&FY538%s#f)G%Uk^dlDEO>0#VaQp8S#gj+ zzk~6@djA67N0Ah`d38&L%a)j_{)m3PTi8vd3@ zVAR<;X+tHeO$_c1Jfs~^h?p@osnInL8ceTvGpXM}VmJQuH92)At$*-)SGPl){0JSU zWB1m_LiVOR5_Tdcysh{aZ;9$`#Aa)b>-_2S6is68&xTlzZ?FcShm%*GL~1FUGqj5_ zD7od080qQfrOG}6bXea1*<%0@F(V(@hB9fOeEN1PtCZ!_m#c}Kjhdmb`6eT#uoXV_ zv%aRg;aMp$P6+XfE^;b`Od9&rjX@ z9uO8cS}eLkZH_m#*-7uG^FQj@?Imh9ZTTituBiy}t zTd1qf(-yT-L2x%yDlPy=Jo}=(LpkKZLs0X|Y`t)|ecH++!V8|h zz9_!wp)c+VIRfNEDZNej7j{$u)vDqlomn(~vvHN{{t=x1aYHZv7zkEm))rS{-kF`} z-|BiHr?s)KFU8MfA!eVtYLt>q_(F3xGW-j|v6nfMFx=u&Qt!|1->D2;t={>9E?zej z3$374VaO~j%y4Ei+0p5;?ZFCeSeUJgV#5<);DjnCj3oEH9{Wh5vQ-}(r`g#*?UcI)))V{6@1E>j z?ju|S?;t*Ic6xrEuqdsGf}jM1?Gzt!4Ped0f+9{DdV}8B(2(&tX~>CxaKKJ>sNEW+ zpqk`dayX@aEfqSQfI1`-LRAyoh?L(HXkzZ|e176}8s&Y_x`H<1F}^Sd3yJHRN?hVN zhV&#?F=vB$ggQ_O+1QNeGr!LE>F8{G4r&?KVeCDtN|!WY$k)nlr%a89+!=YH3@ulR z53T^OxCF+VF+8;3vqs)lleJNt2yt*1+oa}X+M18$xA=TT5YC6SfcJdpoffA0Lfr~p zLS09;dH`%{s}54js8K10AX{@+WcWk9+9AEAk*+a3YW!5Q^;j12^wfrKnQV8}N1oVc zd9Luks>A0!_iIfMn97R{n8|F_)Lg2TR*j>$w@gBAj~5nc`Nh&b&hCB=m!#u2R(ady znoWj=7`lPZ7ekpP6=zJ!>~Z%yzD(K^ckh1V&U>tm+M1o(A17ZJX6DVX+N9TSJI~_N zu&9%@9%~`tQ;L8{(VH@F{y9oj4%4aR@8USQFQ{R0$v|-+u>1HW|oAl%4PSs_LFKG z7JZ8`%ZrGQhQ=$HnQhou4;g*FQaDcP;;%ILTtFE9ptIJ3s#ld5+!G{RvLwJOYnK$e z;F^c~ZEs4{vTP}od(&U!UZgTqOv2zr-C(@l?nB7#3|am=4X#V3Mcwn|t>qM==5W7z z%$Hp$wWKE99WGw|PRXOAu4xi?i_*~YqL9t(LMFyW0)rz&mZhv3uNX35ior!KVt;aTYdH{iDA(WGWwf`j4|!6m`>U z7?xY>?A!eA>bUmJo3p4r1bHpeM$$?x%L@HLk}ypm)u;jw%cnRxs1z0F6f}}T$sJ3! ztjT^gF-~pYIhvuZXq(Z%&@BebY~zv_<$--?Lqdw0;=rsOx4mhj8jCrNQzo0SMeLy& zeL974Lv8}2cM%)L=#l4?zop7Vu7?zJ#LWF7{sSwjJp0F-VzQoX7S$>o53*Pekc~U+ zEhQfk=+q6#=rf>ci%44;&s0KBovB+qn$SW?r>%3M4{PN6DgT%w0AT`L z@6y)e*Gq{pa#4nv%2~MJ(7Iu>%lYNDudbN$tdZ4itHYwxMX*(U$W22*%cJYtw8dTh z_N$9woR(el%C#gTCPAeE`uD|XW_nX9oLu_7T05Iz(r%tSsx{thwN14_K`5Sg)AGXw ztGIOQlceA6`P!zL9kD_q1U#Cz-L8sDqDR2imqrr%T2T$G)(u zxVkRxs5`X>HS<+|J?A(k4!;H{GP#qZYn!qh5AX#0_sn+d&x35%vlqFk3A{_s2`5W~ zj=hS_PQQTjM?^zd?LT)yG{}X>My^!Y<}0e*nH0Ti+;w+0)5lcDv)9@lC=}lv>9SJ} zOUHCd$a5quX`qiD_Nv#Si{qfwdli*){#+qUXj5p#Q?jRSLodm#2t_N|=(9A>ozeCc zDP3-PRxCjXNdau%Q{k7$eSY&I@24;JTs$wiEZ!Xqs21&S^Y<~z%szKVb3R$k4W)5c zOA+fO^#c$0M}xj)*llwM@s*@mz8DvHLqf6~_iIS(_*xhs z)I$gry808n8g$xSeTaH_eM8*Z3`qR+WmKKPkNe`bI`v1mdwQ&33$oPD1^HQg60bUR zO>n)ztcQkx!aZ?YJ=P^+@jZXsiu>fdh+17&ij({8tA4o z#-x%oizd|PBeYDATnB&hRi>RuO#AsfpkHV9|Lq5%zmf27B>bNsA&-PGC%ZT-Qu#*! zlADWJR7{jhT$ELmLxh|AuaNMk?Jo@D`Dfez5($6QC;Vsd@}KMbi{Rx?+dqSs|7`oe z3JD8fNO;42x4;htc4IFp8tC66Aw29(WE8}o`)px%1pnK8wzw?9O88(_G+6vHf(?&A zg_24QcHb|I36YQxk&zMa{#fDQu;5v~L*We)3jbh27!ih-4yL7}*rk4e#V%h_d`Cid zu^TA-Mn`_<4ogG+oXQ5Mo&5 zdrj7syUFKV8A=|osMYS*Z3-o8))6gv=?Rmzj}Dp^4XQsM0`{YUpyJ;&E-bQ_muq`a zRSXP#2lJ?~I)iEwD2mQ&1V@t93Nv6>XqT1Z1H(cQ!!-VsFAw899u;v_XG*M2Q?6WU zYo_kkdAt!c_0Mu~4_EELX|bBOd~Us&*If(`yY200KbcHEhH*i>#lv%HhqQTCSOgZI zy1~M)Y%jvPu3{F?&M=x9E@$igR-(TZdnhW0T%GfEj!T%0(>K`65ep?OToBvv&7+_4 z&CX`4UIRI1$~eO@>}vOVGqaH1*~tqfbZVgaRLgt0h3fe<9$reO*(W4zZc1W??)HcPbf7O~67kCX5R({29O83mF|7P~Ygj=glv>1Z_y5xCS06#5`@?9x|I#Uny!> zh_YOkJ25j;CwEV`j6c2xNLA{cd?GE3yYcN@?GuUfoU1eYkEh8Fi=}n5_Ori~9;nZV z_uU}kLR{mve`M!t{`Gf%Oc+Aa)DR|;dfTk-l7i~u`k*PPoV?)Sk+nH)I~`-c2P&1) zSQ^ql2{Hduu#LlU+TL zP@swv&E$mimSo4A_ue?gXe#(6jU?Is>w>9gBcb9{4|P4LdAI(Av^@V+Q+=a?bx3Ytp||2jHy2r5dT z@_)|zMrB+!xlfs1C(?#Gh3wOe|8{Lj(v(TWjD*M(FI{fT*-dqEd)_RXyp>lLU-z0@ zxO|41rDn|`n?)DGouSfpiwfdBuE_cBX^k3c>mHw`^yBfi)v6Xd%oz$bZ^$sv4MT>V zPDUfAPeKz5(%|{Fk-^lmYbZ~?vEJK&=WHvbm=}|3D=3EFa$yHAO0}&Fp$4Q*CPA;*hC~GE;PBp4~!el8(Mk+w&8)5fhf6%J-it4_L^N#p-MNVAE2DFz? z@FQwL-S6G(m#UACx$gRJ)Gy@a`X_a3i?3KJR+|-Rm6Pa9BsbKvo|Y$<7E!hvI3G(U zy*i7+Rtc>b?t&yQ8Q5V$*CbaS`Y%`W*fj%rjx3_4#P$)$@# z`;m1!#>|>ososA(7+%C@PQh+2q5DSEGuu(n8@kkBnd$t+SGq=tXO8-MA%uhd?!0Riv*pzFF>?(!pkG0 z!%1^UVT4RlKO;3-+pdGu4n+hzlTJ*`g!=HPShb$*q5a(%GN%1&Al-ZFikhiO?n=bY z{s_rV5^uabjJ%N0WfOaY+@VlATv7gnjR%9QtMGX zjo9;8uZ0+#{k`;cEl6`f&~8HSx=npi6}RJfDA|%9tt$r2{Z%<B<%Fkpdq_MD4=sKn!G%uK%cdJI24=hRwddAt0<;L@o zuK3ZoFhxHI3MiKy(>C|)qkq{VQz%hU5NL(Uge#kt3^B~eNK+z%PMa&sg@}IzN1KIM z^zqQ=FYhtx1+AyzG1_9>@#%kPZ7W7$enu9k*{rx-$IYQ zv|9};hfS%{{kM%%PHpV&EuE?fvv*A|9+;(WkIT=K5A&)i#CvoX^H~}1aL>=j8@PBq zVsfV*!YW?-5@nNO81@S@qm^bCTZ{VsPPTalZS|4!q_0 zpk}B_iTylEM*88Acjo4W9y!g%*n=QdeOH|L2Inh|7`6GJc~fuw?DZ=AT(w2l`lyB4 zub0**Ej!gUTf|3q=|y;LS6`(OLMuL&H|Ay^xC(VvVANS0jM!Q>o!FnnO|r>;m}{!= z@|4uxm_4kjOEfE%r_9L6?cx!TnG^pOba3hAGd1yCfV3{Fu{oXN_<>R}LT+`UTKS=I z_n5U{$+Q)17;8Fd#6<|Tm#i?&F;>AF@yNB!tH`VIiRWL>5;pZD;2!Lgieip1nOVHw zmGLI6hDWu5uIQ|IJ8)&3M_4&F>an|A2;mItI6QFN$a;{N9hcdqv(?zfcfJqnoPzqT zIG^%0y#6ua(*nC)?x6aTG;7N$xhM9@KOeOU+mEt@?)jT`p!yt&C zVnhZP`J0)^l_~QZJ}k#HE3Y1|A0#Yg*#!f6b7{1FGMQy2URmxa&+ZV!9c*_KT&f6l zio`r^=m~yqr_Z(M|Ix6rs2*DrKP{7({>i&P)}#Ly@1Vc=@NYi+pYWkD3x^0RxA?D{ zAGx`?M1+NfVa&(H!@?o<*PB~^*#5ft@n3BJOFsPBmOn#~|I(Jf3K@Ps5B5Je_g~ub zzlsl`H++bIbPEpw)SJz%H#=Cr#|&W)g}SvYp}@f&3I&gd3ftTYiyq!Q=nC%V##nfm z24I<3DA+jUs4QSyVI@3#eM&Ug^Pp~?gM|QxjP&D{O*jAxo*V&@1qoSL30ofr1paFG zdnztU=>n?=UigPWgIE8^fh})}dhlhyO4$BTu{0_y+5oYC7C2wVtiKg!mLt!&`+g-L z5hq7t`iKRlPh;vH^^g@3Z|N7*Wzy}Is8c^04R8V0@H>WNsG30tx+VWycVcu9S zx)-Gy6!OHHbHS_>HRN4!crH`S`!sM-*Mbo7%$(hd`wadPq02R(7*6%OfT%gH`>Edv zoN2%pt+q>^W}cSbOD_OkPV%^~r?nA5MK_wDdRDi|5#6dfzc|iAdzJs3oo^+EE)1i` zTmVx$?kQ9!aC5&=0ik4O1#4Iw4{rre4f{iHO~J88vxzbeGWbdP(+GCRC@5EBpmm;F zbH!bw*SGvdy9suHpxl#yj96~4=)3$dl~s5g%eN%(W^MP_E!)JPBoE0LQL#Lv1(m$f zQUcqIu{pFD2`I=u*A3;=X5Q{L20YCNcqbUqSSqJ?IZ>8g&I^^IdapAe(|hg^o=Emc0)6#+C$#+PF}Hk_dkVS?B^;oD9VSsqxln z7BNL6MBya9honj@ljoe}<=4^2Y*RkicQ(GK_Yq@-aGq z>Zd904y5bZ^|h5awor0vsh<)u2wgn&G`_oUrBKt|Wt@#C=UMO;4BLC?wx-pwRDUeT z7$CCU;|9vNcs}@Epyg2)$-Lk82}`iG;qwNs^hLtST;{t0VBZW>xaR}a!KMEq&>-DfAmhNLS&Wb&W9v)Bb$4d7MxC6n@J6A zPMF;Hp@uIc&z@r&uZ;KzFHPqS3UPbnCbU~lTs|hJn`0}Oc}c$X>Hf&6bGn%t7f)pm z+S%!PlN@h9&i?k)21ScsOHC)8b$6p4qgR&vKCTt+Gu2iu#Cu9e1g~Wx>MMi29(Al* z!W+KuWYk%qkh}&4A${T)Rl(X#cHIkSWr)R6uJ_---wV;w+YSP`mDjb+T{=vdl}%38 zi^uHCC-Iz1$WvVAO|TKwRCD;B^w<}_uV*jl{GFbypk~-;s$|O^7x!5J&#TGF@qL?w z@qnl<0?MN+oi`zw1X)@plOaAqB$h9NoZj6>8Ej6m&mS2z^%)6`@bvUt^K>qs@M?4% zYB?I5?Nj013`}kx{e*+#V?1Cr7F(`5#t}zR%{we8@WIEH6yCFH)-Kh(Q)-~tg7X<; zyWQiq54bFXuQ^j%N{3dwEvsX~9@)c-2>VAFlDXZ}`F(hIhgM$~Kf0aoykPI!WlD%k zOZ6Ac;#z9-a{Mk<5_Rx$blhX{T2A?<*3RzGM~`cC8Ll$&UNvzrS6TVpjkkJMYTuWd=#1WOcCmsgK7S*yevKf z({G-S?depp;xcCey*63p92J5v-NZOCKVQp>eP%MWB|{csFcvP=gQqIV*lY*MJQ&$d z^#O#05{N9krT$T#qGfRpNg(+Nb6uvq%VIRP1PGGBnb-r*1ew%LP3b$IQI{LtT5yZo zeYPd0H!8nSH*I`#N+>4`eo?w_!Li8ix5OQN;M%zp*cwjw9u@|9yFs(Nm?PWG^fAls zqoC-((g_W}J|X%`R8)9z(hw9zk|Xm1Q1XRo)xOr#H%d_XGC4UZ(1s}NPDx~BcwyDFa6Gm`v;KxY$h`fEn{Yr+DEz*t% z+g$CWVjHmC0oGkTLhj!zj>Mk2`C_@uCe;TW_>N46;~}Nn zpcym0`rWJEEySYNrkd1lTJY_{{r<8^t_B&$tl4<+YJ=mktxxR>57sg5RTxx0^2++J zvo>X8j7{5OP;!>=F83mAKJ0yverYZspyP&N-fOKQ?Iq?Q^fEQ4sKPjMUW!-rT~ib9 zdB{<7Q8XcE0d?m^knh}qod>n9&3If60{s{Jh-u59GF^$6YQnI`2_R1cmWV2;ZtHRC zavpY;%;%m>qk3FBU#+|rFAba$D$Zi`UrakNgf%!t+f*2uoPcQL+HJ=8tL$yWBaNT? z-Ago+E|=s_+_#K;--dxA>9Y4QhRKr8wKT|_6}ls1q71q3{}MnXz)%-zlT5b%n#Dyv zlO7)Dq!i514$u6XHX*h&SU70V&#N1+in_Dc8PgfMedltFwC6w?qpN}PS(Ja@8MqQD zIv$Ba6*=xVz#~BY^@^H$RH03$^H#_(r>pw(OdMnc7XV=Y9)=;Z{o4-Xu#e4M(#w2( zpBN6x2t|lAFWdw@XTiqtt-s^=Eh<>bR)~q1sHH5TNaVUoD6*d;p{L>(eAW_(hTI8%D z;7>2)k#EPUIXa-U8;_MJcoKX-zH$u|({tzTGrlBS=eK0LC)=RllPk0(sbemV!ZA6? zCH{$aXm|Qb_=27HUXz0>X=b7~xbrdAuI>JdW4Z%!mWb&@^}_Lc0hCL@IYso~$h&0j z#8el7Y2*D{{6?bnq-y_%y|)gFYHi!bhYkg$Q(^$=m?4Lh?hd7;rMpBylFr1BUn6QFDfwx2=Nyr-8!h1gW}VfrCWru5qYYP!5r)qIawd%j`! zUWl9bu+uI80$?Eo0O9ZDFaUC>m1+~+Cxd;>r;16D&ED6~RMY!f)GVpNH&g~K9TV#X z6%xg46tXv1#97X4ZWU1zDs-@j$1@2S4}|NkMF%%8EnHFhj*n`=pBLf-DgYB%u*iP2 zp8+VlT6nOPql*9G7w_Ny7XF{!!~9D<_@y5F8}$GpCdMhk`K4{sm*uToEP~KFV|Gqq z7FMtryXgN-$?{0 zaPUZ|2#CnA*XjWP>G!(;P*DNea2f^XT0QtC9(?Qb1bZzfT<^rdB*#Jl2?DVdaljOm zc-QK|b$e_8$~T$et9k&!gdQxYh@=O^f~p75j!%Qw$WZ-2|2YosAJu~~ZMj@b;NOo* zdPgB~zbp(8Sy19YizEdEz;hKO(!0g*8Nhr_Q-bRr0A~j&sh5|_o32-0#T}d~FtMI7 zwX-DQXfms|K6t}6A-P{+H4{pDp91t)JiI+f(N8Pb`!cw*z5yXVdCwYYx1jH%JpCM5 zC4LX{(F)}o>TC<4aSyNuIioG3V?Eh$;(iiqiu*m7yA&69mlt$Ab3$eKCgtG!9Ydq2 z7G(n;=y0muv@O*KK6dR`@4b{STDWDb^=!E=C0saM{(fH4 z=6XTTTIYlq#m$0e*<_+ND+_oo2d@ixcM$kl1jl7^7xy1|7U(Z?>GXmmG%`St4zWkO?Z5V--$bDJ~;CsW|+mLQKT?{PHjbgl<=?1fD zD8V`#h*`h!))RfDoaA-V+0%UM(1n-F^_p`HXgodA*8)NX8^map`XONnIvSiGjYe3F zgx~K*z0n9$h56Iy$!e@Sm75S*YlPQ|ExkMX0%>>hB3CjS@z15h3M>%0I!JWX)Ar`EE)$Ly&Nh3v!1EEbLmiaW`gdl{|> zVtTj6*k+VNWhUU;-yKyuM+K8!iT1GL##s_-n?RPsE+=8{r?bX=kq=0BzsLvU3Cr4V zDr1)1#Z4;;<*PZE^~>+}g%H{5m`AU#6z|Ck(_^*q5wR}?NTkucM=_5(D{YniDB^f_ zewMg$xL{%@+QsLQrT0QlbhseTZ0M6i@vvzs)3dNGOgRnZe$j4lI=z#jy{?{&UdFP80ReTGuxeQ(=Bp`1BH>eEJiI5)O+_{ zIXRY;IaE5Sz4C)mPhsAt!4G=NlrweZFz)$u zQ(F<3;2>muTLTQbGhd_XEB57B&c2ZTny(51(ia5*q8(UT8Xc^fTI412W2hqq)gtxq z+4Y$?=`iI4c8iy(6lgwbHTv+z7`O&F3iSe+p2pF%(lC-yn=4_D6>7N#y+|h5V&XQ)*2TB_p9HL zdg_3vh<*%wm7wo10KeF>wB@jK~>N6n050DKjipqLS6jwVqZth4$qq`Qi90CC( zv|7Keq>6&vB5fr}+s?k!b|4&m&8^4$HpF)Wo9jLyc+wzamgPggw~ZKF(GwW&($Eo* z8iOILdT-FYHS5dXncGAVhG@SEN!XG$!(aU?1_2x3IOv70AqN?+I~|g!WKRvf*`6 zw@f22AnkJbbd{*(tV7VXIfJW*S-|t6orMSr`v%Np@6{(~6Q^HI%kK$?4j5hb?HT0y z89ajBi#_W~q;2c6^@J~7HJ-n)pYd7T)gYU=8;gQXl7>eT#h=VgjoFrOA9U=7)qeUk zExT@8nASK(+G>b{XJYyVO%u*@mV`Vt(0N)hQRnWZ)e^t%z(9h)tzEUgB|i8{X`7cJ z$6YisLibw3VC<0b{gEsRwdZi$%#SbE{pLb^c^%b61Vd~DVPAV9y+%l$U2~5d zauZE%aW5z1Rm_A>^bMeenm_R^v=f_)on*fZ)UC8x{|v~DDLBnyv3op(B?mrl*GVV2 zlhTj09~$iNL|WNI6lJCs(!yJM8`v7xK?Bp|(p~r%(L~*(gEvpJZn`?>T1ikhh{AJ% zU!fdPQS^0gvXq~&>N;@Ve>(KOQPlUt=5$zvj@ZnnwfNvH<+i~ti&^W*J?s$4Qcdz6 z21XKO4Q381=8L1ez{c<>7++M=vLF;^|F@3R+pq7~=3tYJ-!)_UXvS81bSZew!gafh zp<5}GAi76?zGrxXyiK!Q?am8Qik{F;1k--Ra+RKzBrKN8aICA;jWx9maHp>mSCN;r zuNwVI{f|oxbVCg(u%qjdRq{Q0VW?n|q&Z3Oc=>)_$zEZK@j;S#RZOKOli*#oz$Up~ zC3#{?EQuy3f;h?62ihGSF~<96;4WUGo{Pv}jpTw#1xq2L&K?vbW2Yp;wm3|J34R!b zN-I#M6(;70X0O3Lt>?4ZLZ>&TjjaxQulAGqLJb>0qWt&T$@HGzvMyvnhGl`l1AD+S z?rnVr(v)PFPFUTqdLJkYaNjt-B)tuub(w#c-48(40JYbbx&71**r=2ZL7%* zJif2cj58mAoH)iM>V|!izqMU4kBAh=fP5&1ALp*@|Irbll2Vdvo_#qzrWxk)3rhhw^AL7AZV*jhe zgY4_o%71E|g@S~PiU0%c@cg9%^zUQ^1VngbSU4mY6liHWBD6XI4h{+J+wQNcl`)W@ zK2^vdY!t!QKt-?;;rXF!szP)b*LQ|JQ6(W@A_)NlOupIp;7`C z(sc{yd2IaGzzAe;>X5QQ+OP@^o{$p79|eU)FKL{IzblCN-6kt;@6lE!r(kIR*cxO%qdPo&2GOg+7_W|jDg-lRRW9%dC7vvELLZNszt%Rj{CVP zM-}06>!d6k?kVL&iQda*td`=Ek`+~hqLQns_oe6x_w^fZhFp9GRH~Ds!JSiRXa5p`02_fh&#R)jM*FjOm#+`02T5l?1L%$q z`gr=@B-L8(ZM=XTusz<@>cI(Lwj+KlFY`WVw<0z|EK_X(JDR+;;D%5zon%CWv6vWb z^$A|FwbbauUOzY6fHpKqCfkEaz%_iIVMaA57O~1{FqdsuR+U{$w4I#pcW()St|^b- zT;a^7)%FpofDW2Lgt!@pL<+SwpMOxh#;i$lpv0cWip7jBu!}NvMG@mu8b#tHcPx)Z zVhr0UaoJ;P4V%HtGTKYM<)fYvj(Ka_@`Y@U#r)LaCyy3}(^7K_?%>&RzusuAjg9si z-V(cVMsD93voaPCwhS}~S~$c;O}A?%mv^LhFQ$PYLJcKOB1CuAL^Oh%J{2_D$M9M& z>)coE6qB^0*&Dqdu-JOhyRXA1KwPcASrtm6W+exXtft-HYfw#Z6o279ta~Y3%CvK& ziPP)6|A;3x)Zg+FG$`U-*3yf!zPWK}|-W&2p_PtqkmPgd_ z`e(sadxdfm4UEh~rpF_7t~jL*72DC~mVM36%st7q4Gas}kr7(qrZy@CPpR3}eXJ9$ zbnbhkY>5eN-A`JM;2o0;BCjf_RSw@9c5k-zHNkt2-#Kk~U9GGEVejmL) zw31YAafv(0!OK^QiC^_bZDU#`NYz2L$Wk-UvSL=#(a=U8^VN^f2YwND8m)a+Q<5#w z(&vFOht0d8kD1u_=Zt}*HdB^eOl;9ukJvGG`MELTF+S;A>#x>b_AmM{R%@9>r&>jC zK5a$+3>Z0gA2-$NsU|WVi#Fwy)zIFkeatNJG+ve$cdu`*$7JpxLaoFc-RC9_x9Ld@ zLr-DCf^v~BYc8mqt1+g&UQ>s0J>+TGvh+lf=D94S?_y}1Y2C>}L!mH0Yjb#LWFe&* zx9R!V*ya_M??Xq-m(j{zqxVNtyCO12$vY2=iF~G#IU=THjbl1TOeJv};C0|;Ic9yh zs&+~VtD5QP>K;Y2vxmA=+jBClhzu#!(n=0{8%{eEIE>3mAldLJ2Raj#S0+lwO;0E* z=<>mwaLupW`UX{?2gUW5sODq);$FUer; zWZ|T^<|m_(HdQSNDdB<)<9STzVq41L7Hw(WnvT80n-;X%P0>BE6rTZj;=OqVG%ni>d@u50N&dM?TlH2-lI~>l5=z1JC$9Z z%&4aef-wgYV_~x1Q&I+NU~pw%;MVaXo*!fcPEKnF`O|eTS3y5wEoFzJ1k;gZ=DphB zb(X+ouVow^HYL-iKEUl8RlJGDN2GWAowk|@?eXn$(}sZtM&!{+J$DUiv{{uPq3Id% zw)2?{O$z%j9D61zh~i@~?*kWN!MS6Se0-`5R}UPhg2!Eb_@&&jl&nHRB`V4f-(`ii zuGck=?G9X6m!WZ<`LD^(U)}OAOOZ=vp0(e7f+o{ndeP!&&k$-`x*FWyvo}8Nz9!5_ z<>P3~s*oT=Bo3c}2KK`9|D+`|;J0V>YOcgtrfb=dZA*4^Q1MZOijG$VpMl}@scwP5IDbO25wGvaC?B5HUVL0t?nhkRjthNFkBComgW?`39rC@U ztQQt;y}{)IYl5}YAj2FN`P^zwrETS2eas_$tpI22)iv|Iu9>@C^y8u2XmqFYvJ#J- zWBDDd>p^abm`}zI3#!M|X5CzsRotV758f3z;t5(#r_;I%xLtJz=$zRcaHsMmd1Upk zSgDC@Nhh5Z@Pu`*RV|?&S6B%)dC8IX1`{6x-VI4qJ>iv~GJYb0q<$J$yM1bPW!b?o zZN~njxX92zL-cX^wq^XZfTZ3-^_>k-QKuTZM$JtMk6nN3E9o>3(K}ZjIJe>rvrZ+jU;ugq+piB%R#4*%1@WSX?NTHls!%Rn6bz{a)g{&92yI(@Yg=ITF4F!Ew3axJbNj>9h=9xfKzzup zE8T-44+}TMa@()`oAoZ<7;I4h)aik11KqTL+ohKw{i*V zZcC^(UdT7BCEVCfQ!&jEkZp9>?FLl~0 z8%kjA8llNyAz>Y#!POudAt~CMN--!V-Y`+k?>@=NV0r*~bRbu@0p(=mbv?uNvEiED z_3cA7uckvv0%eZ|+p@$(RW-Po;U80Od07S}Fi60v+tVXRC-wjSJ;_p8gRmIGS z<)@W%q<>sa!`VBur`YP(AeSzhU3EciJxdizbb3E})D9y;8ds~&OB7+t3}h)xNhu|$wkniqMHGBdyI22MTREm6C7p<*&9_2d7!Mb9Hqk6RpfF*) zpc?k;=tk61YO(bsK?@EuIaXWT6rGQR`2L(3SVz5VXsK!lTb5j! zf>A!i%UI+w{`(DH69N0G`9Q1tgc*+#Gu-ApUo8=5Sx*(v$2(J4at{^UUConjiz!ls z%ER8OqGF151R{CmWf5g|#n`uBCHka951Lszj4LHSfxJ|_QZz3XU?j4uh@P$_KA&2Z zo=MWYqyqO{j9SY<37I;SkZD^EPeBP;6Rx~hQ(+U!j5JbC#706LM+t(eg+HpL5^<15C|#V_lg3vM)2T zN9_u6Oq`oz7{_UvRmRu~gZU4}ojvP6%tTT@oOzuXir>A29ifz`YsytKm^E=B)dKC7 z{*I~)~6oQU-JsB9PAaYu!is(cyDXA`zNO?3zy5rtP zrk(cY=otd7YCC~lho@5YBhsqV?=`j%PUAa!W++VTDy?R7?r(PF@-aoLu0`dhm^jia zRelsK&MAJARh=IxZLhRiY%UM-)$b14Q<7e?&5DSoJWwRCdDq$5qXY&$*xzAZcpsfN zXp`h%n#;b$SU6Yppr@2*%rMJJDkn?j%E#7+AnyCO1E%U>?O+`dsj0nvnX+C-c$9b` z5qTgtoe_AAtZKh_M8r%mLjr=1K|n7|MUpX}zUckfyV?RPshHT~0P1d=CpA2Of0vwh zc(}eOObDY_$z9Wmk(_JIh}*S{&`umlx|zYej_QI_6FeGCo$xX5>94$9U-_tr!kvV+dypG0Y~G zPGHJB`j~lYx$dgW)oof2%7xDW?-^@#FI^dGn%tv7$&54PmYRaYu8K-yX1m$Cl-s4a z8KYvEA{A#F*(>U-cbZrCDdM`yX)at$i{6r7z1gaELvOJMH%l#PDXpn$bWvvwD#@=p z!xq<2aDDTQH`6Nm++Lse#%TggN{h|1ZmyS1b(yoXx-$OzTNxWN;tyfsA z3ltZ_BeHX0MzyDvTGN)D$eqL~>* zp?)W$a<++LS!=Px`!jo#PgWtPy^k|Gc#nDg(ZfH2zCFw>p45@6Wj|owney%qMZe(- zWp%=ra5#fEVtDNa5l#n`i6gj|)_VPj?|px+{~NcznmGM(pt1fpj0_^iCL#=GgM4Q} zP<{pyWfc_@W)lH%fLYmo#>l?K3jS^EKV)Rz=KJB?`qy*$S()vZ*YU%-^)Ipis~H(4 z0P_!SsZRlbKdiz90H9u}NMEvNf4CYULF;b6^lpNO=EP9G?}FyM5RhOn5Rn0xC?F0l z3T(qx95GHvJd||-pq+u?zAnp!9)0bJ3XcGQHu1$o#L@#JDZT~@3I8$u72nA(*8Kr} zu9~t3ljl`1l{iEy$jn|8&5}vZ^#%*58Rsb<@(hX+@Ltg1$YOomBc_@M&Q)9kC0fSs z9%!TrVy?u`xZcBT@ngY2ybVdJ9JerjzxXh-!8z(xfm(`8S=|Yuk-GH~MWQW`>g_^x z1ex6&A!3!q%y{{x8#(a?u1$bS+cfZ^ZT(J&8fdX=yy%Iguy6$N%xgN4G+H64Sb%Cbu9WL8Lu5Dwu`0 zIXCFt!w;pf1)D<{KuW8ms@Ls>EjB~Qx~`;)EEVaS=M0ukA+o4ZFZUR%Si9%KM$MGP zI^FuY_GYGBMY+;IECD!DoasUgq6B6`AIcBkchW`;59m^{rgS+Y$w@is9lx8`p1b06 z3u-G&jsH;9bz3riR}cSWg(;XZG+iYwxQS{>mS#2^3*OzE4f?~kxpC;8OnSVB;d`?D zOWb=KQ&q4C_|uXKeTuKe)P+}-SPp{rna$o|qb(QWt#P9uzMPS^M@niYYb6~OJn}Ph zq#nizyd_bqv#vDn0mDm4pz>)jCckmCvuh@41m8#!PP{AuO8`$$4o<( z2iIx+cyA;5j?Q)q;w{||MK|%EH{gSQ34_0c!G8rqqGD`ZT#z4P92Ywamk5UthZv`j zs2GPJ%THnGYwQm(?k}Wj({lN#lr9AX8=qLED8=35H_V@s~9KOH4a^Oh=Bdp9^x8@Fks;TAb4_2 z1R%6B1KJ`&NZ*bE`;R~rb1CQ(Tw|^_zj$Gd|6ce}J}6vjWFkAjTvBpqvKr@Oyzuj9 z*8bStNa|ph0LnXFFqol6SY@v*W~^isp4lbAy2ikb5v{Krc{!rUBYmM~IVYoh z25z{Rjm=;JzmieT1YJq76#4}L|dzcql$@0cVi;H$QUz)^l@E5>PwL&ZRE3z>h zb7FfgbUeu4_IUf>j*$r+AGv1^S40u3L|{XBqY`*y(CVY&@oG%X=IPMETK~YF)!MY* z&V+3Rc9*wrx~RBp0oN_`Qa`pKRp?UgnM%4l^$0Y?3$S;H-`7^#PIoM=l`Qi)0TiEc zRjai|-;1fl-l{SX(l?=-DuXm{^zryaFyZdIsi34rKa9CZ<+=!0p;bAepHlAMifAEQ_p-u+bw^ ziN|(E%8%t#3?7>sKn#Hb*Vh?t7fTyUBL_V)7t3o#;=%{~GC4PN`}$#K=!NY15C?NU zpy2hhl0A@BAQQH>Ga_SW;$SoYv4P1rAxt0+76_P)feg$7;$&vwWCpP^vVgc*IJj9M zWZwo5`fO0gO>QL-v2V}y%YXA9`)_gzah=_nWz?>kEs33$D%qhe!$SMMT<3&YS ze%hkwTde5c#{NUt`8J=>-_G|F*!dPK{I{|HGq7{r&gbiZgWfjsTBthKU;OT*}4RN7uYoSgi2q?dYDd>T48`+d9Gn?NHLnB%ql`wiBf%Cx51B*E>QTAMVi%#6XnB5*mPw`ghW`_#*x>tIarN>2 zR#b1ZOL4dg*m9z=ZTi?EC0(9y?xemEH>;3TLFh*Fq|^cy+CZMI!aVb-%ewJ=e;*7& zB{xNp^pr@ygN^Yz?6DIk91We!sO$soF7?MMq>9QT5udoKcW)wHEGwQE*Q;N=oE}+x zGvrpKP7=%AGdmZuSulRdgaujNB|q8TC`riOO{XjCQMK4h*fu?|y}&gzdyTEomzsmu zWw%;POrr=iLsU+6xCAlbJvd8s8+LhSmJN$07W5)l?_%a{5KBwJz1|opl>``cHpRFA zp*%Obt<-#>+L|phDg{#qPeOXv;4-T0o~;030S70vVT;rrIAJ=G04j1x7vg&vH25Mc zh?rEgW+)P_y@cj>0%GrKWHJf@kdtyY3JRFJ*(%*zba#EKb!!7!^v=1amOoOelMp|x zPn3;#ti}oQCHZvjTtURLaEV3jcsG^07jk!y|Ni3KrQK9|gOc@qqDJ}pa)>}FcnJ&L z$a!OD)l|MFBTI4hr9%qaP+sYd_0zgBeDlu$c4vc|DF*0iU7SEjERe$5*R+?eZ*t$` zpCOgTFQj6$vZwftbs|Rg26m=44yM*tWY^fIr*G}(zz4i02VcO}(uNQCGgSZGfwHnc zKh)Cl8mhlc`$cs6`O)?&t~N%@N=Ek9j&=q{N=C*M*TFX2!gfY_4%T)m*47r^@m}H4 zztibN+1c4RKtFUkE(oWv7?>T}eO*|POPKAal@pM!u|IUWzr_ASr201B51sBW^Zf*= zzQz8~>HZS?KZ8_I&hc$r(+?hFX)3|Ig;w6(e*0wM?t8wf@cVx`2P`XfP#e(G1*G=A>DgkEbgaURj74r>To zZ+^blq9Sycg@}3#VY-FVjsW*VLLv5pmcDKvfaLAMWz)2``=|Em;JK<}iDTkc6m~d4 zu#C{vqw2a33$->KGj$AZ42PV>R;%_=sd!FTz-<>L zuKU2LH@1ZpCsj-{*dyI4oC-IB{P_$G{d^!$HVD&ISfIE~ z&i5NpG!o=NuvUh!P&l@$HipPiv^qw3^O?1$XZG|YflriWj zSk1s96bHPnf5(LmEV}0__x=L?cz%3ZzAzzH*CK*mi}Uy;>0vFusQAXXC|KSj=W$^& z(Bd#0%~tcW_$m54>5|71RF!i%ZMgqMl_M3o{rEHBc@3E#{UH1=)cKVi`d6p}Vq;|& zZR|fpop1B8|LuG~L7i{0(1h0C zypI3XsDll_{zG=?IaD$Gk;C~yh)}K@u|li${tP_Op00>U*Zc^|>Y!zO-^kN7Kf;D8 zc2L~GK>`4AQONP2Rd=jkWVvgA`p&VgTdzR-uE1fDgA{R~{3!f2P@ff>5()W_z|*Jg z{rL4t;_wH}&RU#+dIU=~=MMHmP5vd(M8BA)%1Q@rYo0+q8mNe>az?i$2GHT2(yf8?tetkoq?4_liWQgrH${oa~D1nh0+$#vG1$Q3_8Xg%2LDh zTqP4c&P@_~+(DjIZJvkrz|qUgw}R3ebB(YgQ9o!e6ea5LdU`(N7tJ6O+(l$~;p?~SJ99;Sbng;Uvv{NhF4p1m z(kbJJap`pLBTm_#^wpu5%;#xn-#OPvv0pMvj$h02W;nc{S3A}Uee{0vqQ*VZrzn!= z%xqzMbs_J}xvLV1g!)d+y*^;YC%@oQ3)`xXK3nfzjQMp`O7pw-&f1yh$!KFR`8EFH zE58yt|0baWVinKW4T!VHuj$)$JcWa`P=z^h8$mGMgKPTzX~~$q2d=5C4M)Mq0UgyNB)Q> zNQl=u;5B1`gGYvkHum}!0QHK3fk#9FK!F1r2N#(fh=;FF5e`;*E_yeU`jH;mZTbqR)|waGu_VgGXOjw zw=vLECJ>RuJ!R6k%}ixknlykP3Ar~0gGvT~ix|YeF{O=t6*tvXO|o;&!0AZ;42{cp z#h%;FFHV}A2o)3N4d;AtWfqO51LlyWp#8bo8!z0FHxu_(YH zd57<<;NUrvd-jTBHkH8wHg+Gqkksi6o|c_`Z+fH&2MA~D7QzRpq#=sJ*c;#J7ONAE;B+#mefw6a%r2{@v5U64 z3quiO*Wq2gP4%9O^G1yZsr5w(afR*2`)V?D@=Qw+8Mc-&2dvO#zgpZmMG9t;2`*Bq zY`gm=kxtN_CVe=Qh(Wb)vI^dnLn1IZ9bDqW^jlCdK~@&tuXkefBX8wbR0EE1sT2F9 zGg0Rl9R^$rJHuva=KDDD;>;^Th*CL-*TV*{8l})?Yb-p+?6xayBDtwv-YT6x<;IE} z@(8K=7RU4OF>83P*JBzn2Nkb2PiwS)+*6aPQ#VL;LLv))z15zkr&nKJIB-WXt@{FJIt#YK1Xpa#0pyhx|K={OIeU;wT z^_4xU3031#9;*6|wCfLT97}B-`PN`0GLjdlq)I6ZlBhSW@YG@H7fh$cl!bhxR3lWD z>FwG+19}>R=QNaDPv$-}6tXqUW$oL-9iP|Ec{ygDw`7$hGq1iie1AC};>-7X{kW-J zehC=slS~TXSF!TAG5Qi0Z&+1cr*N-!@E3Oe!p?t%oh%>-Cnx9!c0xcbV2Ge7v>m1x zn2TKu^i%Bo5)1x;oqvh_r`Y-RTz+8ZU*`K6c7Bchft`Pe{a=lp_yGJrur9a1U?&nX z;#bb~J3NH~Ae4$hkrS%lK{dSZH0?{XOW5mfm)Bky6j1a8C<4K(c=%Aryf)H+{SAPj zMR@=?1aeGxM35jB6eod7e?-QmMm$?PEE_$n{E*Jcp&sRcqXK=W%JHMt*1Yg;O0zB; z5%I;1IcV6q)_#Exo-r&BZvhht#8g^NF!FO2D zm!lP=t|2J636mqWN+=CmM)=GW12FWu^oi_X3vn_BF8y&B%!Rpnt#($>sZ$5aX~fVh zw|lL6yjUqKouRnjSjJ3hTc>J+m!KUFah5bw1^ujO0O3T+%rItzI9_-tE| zm4DWKdPYYc_oTROnJ7SQ-bR6T@0ACNDwT4&sM-jB@l-$iir3u%k7)yU~FG%sphqgfw>=Q1AbOw_ot~Z{UqZOjwu|BKRAm zh(RrbL7bc-!qB2~VX>c z`h6#QUjPl-xEcNnzWo8-pcUj$c>CJT`G=wi_q7z`+6oFl4#dVmfoh5HP)Peu1EGQ? zR7-?|CkJ67AS!yk{v)EzrxB+nMlG>%^_d#Lc2FeZ!o$f#liU;|(VM;#!W(am|D4T! zP)7(tII^sj?U%O`aBeo^k#ojc;1-%&OH}vR*!Z&lmIf~tr+=Py;;25qxWEw*i$Uhe zXF&0JK0Umzcs1~Bv{_|ORERdP^32q9{KS>(Xr(njKh{VQ_cNeyGMV*8*oSkb0?K^T zg1p*-y+a8?UTgebc+vS!_Yt1DH{Zn#%^(C1T;z81xM=r5D>@Vt#C?b%W0vNk59VWd z9(9qv6v!YCqVgNx4hzOlqN{yQHCIUJGi~!}t50!$;>nX*{U(mv77wJt5_tid1gjte zT+O(AaS+jlST#gM&h^xGzg}jar6|}I^No#ViXC(cnfz!XF)L&oW0}jyoyXNQ!WW~`4;VZk7UE#qXYVua zLJJ?V*b{xK*4qg7*zYvYC%>5FGr z#Z7s(9K>7$DfB2kpJaqabV}$2D8#MnUd55`9D9ET1niB7hGYR5=JqtpF_*cAb*9%h z3vwkIY>tCDI-5I!xv6>2yVs@hBcA)sRf0ZDU5)!PGC9`Zq8I0*ipz zxS;JSzU7PrIYmICP*TPL5`ln3er|97Etd6fWB(yceVgwGtNZJ@{Qb(PZ?T}iJ(vI0 zFl7i(_yY?IgCYqOe0~EK000FJ+CvZ)+DqcvfZ$KvDqxVHT?7$P5Uz^^5#Ya|*0<0v zMS{@63}j4sx*N3lii%7kMi{ntYXVWg zk(8h|qvGI#DaQ&&hPG2o0gVRg| zNt2X*yRwm*<8s}R!!d^t)+k4!>yX&X=-Dtu3nuB%DHg6SUrW`kx1;wep3;4_@!5P; z(BrceV``-lv*A5yBWaI_d!dP^#2ouU5OTt4oDhJIs(``b>4s#RpU6Wv&W^yX$Qs`% zg6ZCZ<6UK?b`%w?u^-HB0Fm(XJfuV@_b5Cs;;kR2d2q+G5%4o0qiig~!s*u1 zLv^-$1-Leo59z!V`7=di^rPh9;ch8nV9bV0pmn>c7`VwaLkrq`?vf!=+AJ^h*EMe! zj+O{}M9Y@E%8|<+XQWyrh;Rhhk$ncN!>Ug=iC;~)J+GeMTJ3$BcN=x~HuOlArVEI)LPERcxzdk4N7?ehz%lyMXc;5Z=>TyMq=` zTWheZ=I!=iW@|4>rX|4k?K8Wv2eAUJAY$n%OmpLhq;@eO4U;@comHh1cME4NFp}cr zF&dt%?V7;6lUsEP(iInSohgSJI`{hL7OT)?>W4|`F{@3vP1X$NkG9fvM4Ac+!98tq zoICSf2$h?e#xgV0>?@^|gT9mzNe>RPo828xvnI|z12|WeHOJ*FJ0{U?zSZ-s!PbAL z-P_a(F`K8wbjKtS6`;(b;p7Bx0=SY=$y*O?4t>t;s~k=W%3DW{pHjW(CVP>G{)DTv z>VsO%(ex_@r;tK6&dK)B!%JJccS)XzB&jXZk6)CQl8~E=^H^zd1eMm>tydZ{@;v8! zCQ!MIUla1g7Yx(YSKB(Q@JingMMQdr$J-2HIoRCHC;35~j4>s$fI+~4x%EuJ)+%Zl zHDOf0l0PQW8p@5Fe4~UfCTb?*1y5dw?sD{SCwJi~-vAR@4aWrpCP&&tiiw76DABGW zJEOzrq*F_#zCr{&gLkig><5@h4t&qBQJEvPVw**v93>bI;LlF#hXdH}sfc&JOlp`p zb7$K$?M_cq0|Ut-)5Q$P{o93^`B5D>@EBNPMj5u<^z(|NyU{Fpy!5Rkd<*7)5jpL2 zNQ&(7Ny{sKxAP9;q#k_7>6;qCfNokbjaR}ZNQZgd;pQoBU} zd&3O>whM8Tf%uu)gqHuhxca5HSs8IfllT%wt-*c+u2(2;aF-?Tvj$_vcIz~Pj=Lte z;u%H*fXl$J_0(6V!U;&E9sB7pVFUZiC)Sm|IVE0xqb<81Pdyq#CK^X6lq-4E%g>FB zj-*DaKw>oA`|sr6Sly{1tPPAcI}9}G`$*LeI>pjXV1Bz1K}M$(uiJs;c`pe)lWzWI^er z!(kyr{*fvYk!98RnYUri4%c8|be)G?O6%XJ(VMoX8_0p~Qrak&gwNj;RWpGq7Q!J_A%+ zy+Pp!7H(-=ktB=t51;!7M2Kx0#1dYu9BIiQJ*wHu$Fisu!pc67#qLDLN7}ec>-83v zS9l1$-+?MQOHPP|f5VER(8LoAz(0jq<<-Koh)tQDTjN>3dL1pgr*AMP#hRk|; z!qr}il*RWxOG-s0Zq&!isX_)EWUU>PZ*n6RNI8<<)>L^VqP2801n`n{9misL&0KN} zd!9>5W`pu(qCWS^@|+ z9#lG1ZpI8{lqVaYsRzSVeps@{7IdJA)7byq#78#b1l z`!3C;xSD050oIzcv2CJVubqjr330;QQ$;KEO{gW1hXAi@oy(?LQ|D$#_ea^-n9>J} z9jDzNW2*5=3}ooof>EgNs$`$ah_t4A&ts?c$vHz5n zf1U5Qiqt>P_Y?6L^fmUkiqt>H{#UW`pf4--e#pVsf-yWY3IY-;be+Z*N`C#ww}FHV z0}ltK(uA>!qn?LC<2s`V_+haV_`!nIke~$7xgP6M}Q_%zq9`Dj9d^C0m{g2 zk@dohp{{_QgV?Y2o4|icmhLkr=FQ*5VDa~o0qS8P$B8t5zk>~_P#t~6^kBdk&bS_? zBN@^A{)s5N48t=ip_0N9Si2fG)@g)KR^U(EG>y&Kbo0pMGR@83r@&FfP`#f@y=)V3 zWg|WwN^S3qU*8qU@u|+DZ^kgZ-61k>HfFi>?p)PKyvXz>_Je`PZc@*TQyV^7%MH?o zmS6BWcdEO)4(!GwJtLoc&Gi92KKZHHTsYsm-3w|4hEGH6tv6J|A}zVwx$X=RF2H>_ z4R_|R;x$`x$7)!St&A-*b_`rs%*q)dwG%-Z;%CE3x)`UZMH{bu5T=BGksW?+Izu}Z zPjQk`yv;SN;jDlWP9{$A%vqm}iC+rl7_uzKS*2$#9hz$*2ULnP72&P$dyagI#*^t4 zKN9vi>26;5Y00tA(R=bi^~vpApM@-|r`0$+x+lW{SUX8!8y)If`Veuqopix1=0`<# zi#>Njox2EGE1pGp0@ZKcV2ylburF`nuCnO%7*C}dH4}S@f(9|_MTboo0Cp%0^l8(- zNlDK6Y@4nUb#l%;fN~{#dmq5+NI`sWoT4cGa7Cmx000z3v^+lxVs4!4qe&gbb!wcF6XaPx2 zbT`Gk+w!fdU8U~owQ+s82eD?5PPy=*P})KaG2`dGY+Or1$aM9G=js{IC8+RYnAPHJ z!!qufo*x9#Ns@ z!#iChyKUT7qeN9OgGJ1V`6B*LeL>i)Xvfc20a0rn!aZ;Nh|Unh?|@hr4Xr5B<{DR3 z(5r#F{609S({j^h$j4*a=HfYV1&J^u_1lwqMKp^GaYhr92`P2vD2~z0{1>4h_aX=O z7+^X1eosR#`}gFlmnBwms-#$TaY*1<9i~henZ``F(^fG&SBY?T815|&yR_way^Kws z`;|-Ori`q~nXn%f)@%-gjW%ZJee=IinKYlD9LoE()>tvJm9QmB5JP8%9;FxI#;m?7 zSxauDr%dJ5vICO1Ee4`CSbPymjzZ^S+mo}~$;Xh$8??+z@lMX>1t&ZB8Fk#~p-P#> z`-mt7obxT`+1w;? zb&;w(j(%KCdQpi{-<-Y$c1p>%6R5OuPDm=EzgVN9B5^YLbs*~#E2g#_D>0Ts7$ZT* zI&o_EmY80+{N3(q%9@$oXx2QZa$@h~!x}lR+%Bu-znC8{-8RbDb(&n|q@3PvIvE_S%s*g76g| zFs+f|MV}I56XQ@lm1pc;-jQbI*a|W5C$l4MGUqXcLK1I5tDzS4a@(1x z^P!NGxv>qLBpG)AEtgOXSY%3Pi1OF4tx4sG*0?-5)ia&5M93p?-GThM81S@S|BDqVgV5uCQQEZ-&mUljO ztG6rWELt~Z5)wV5QW@IJWGVxSefUdIWiC`iHzCJ&P5VDd9Li?KAIT|}i39Y_H%6ri zzP+Y04du7nl+3lUOg0js{r+DL+vPvWA2#S-eXCxbLV%@Cf4@Jb5qJKe9AU8sHoq1J z(rPKAqf!A`g<8t6QyN-hU8{Pg;_lIPou{URA1xYl=?AsL2sldCv{7vi<&Ov8d25CN#XR}-m^xGkX2_p)FA)*3q&Xde&G_5i@ zsN4*-Ki3@*pY%64Q(_3#Pu8s74KF%ZrA~}dK-09=tvhq;xKQ$d%d|>9kj((%+d^9*Ifqp=ah~;1_Y=C= z=lSvW#pv04t+U=c9WI;x*JB~Zm1F6fQ;|wS@@@lAI>K*sZ9F@?J=M#W zcv#MH{^4p$zGj|gvwhLo#X76mdw9mMcCYO{Zn1*UYZgn{K-*iojnI&3RF7(-b^IhZ zzAd&nxAx#FF3)}DW<_|H(BRlG5)c~Ay6%I9o$TJ$?f0}&mq>|s{-LCS@8mP0-l)qD z*frrvZB1db(L=fKzTWe$8E{Xiu=zas9T4p*f3qPpW2UMRl&`+1H5|bLU#=NqRVSmo zqN;2hsB{x6wdy9h>DX7uhuhBu zOh;=wzn78`R4+Jt{h1gfL2i*)M2~`EHHmscz*Ptbp}X}82|}~%-?k@~MjV#S|2hx; zx)}Y_%Jg5}(f>yx|3@PK_at&gK@n!4XVI^=N+EV;4h|7f7Dg5kprg*;j@bkHj6TQy z2R#4R*nbtqf9Crw*9-mEe18YyKVyH(^?!-|Uj^gE&k{LMzy1Z>!2dA7J|58L4pE3_ zjU33||LHjZkjEjRfUP}0i7maM}AXcFS0wQ4;ZJe6B>H&7DwHMU{;w;9gNGN30rWDNay6lqh;Yj0OTi*0~ zuN-G6Wii1QeF(r7Hkm*7ZpsDP!6lQ8+w2LfPJDc-1B;KI!)-c;zqPw(y@kxqx(jYi z4z+(<+%253CDBZF+k$+p9ZX;F7R`KzIEiKvKlu=3Pjnm**A9Q+Xsto^dUlRG$#fDZ zc5zx#M$6@GfFrOT^6w*Pz~*TRWFO*8&<uVw$Jrbz<$;_h}TOHDH6 zVxFEV@N7Sk&y?#QeSmX-qgty%TLXjkWT7}c8Fb-_53PAqe4AK7v1BKA%t`fRXZ`1T z4)wMmv(Mwr+MN6B%&!`cji7iCCEkI}d9>z~Qz5vh+xY^qQLIIenMvEMMESJ|HMQ7PdPZkuBmbo=)>k zb6M_+)j!HwXuNM(_TV5F(ShR1rT~w)AK-tx@l)p-^{ki!DpjxmQN`d`4=P?HML_`HsI& zxbzgK%bqV4F6;Dpr32AQC^VuAq-4FT&KXrx!}3vE-z9s@5WIl_?!wtR-S*6;B+HAv zSG1e{Tbl4<9}QvlYRATWC|e3@PVI)dd0F0Djz>l=>^u4ah<3zy+ohRZKX7G@F`pvc z5h>mxVXf+3uh#F&Cuvj9atQQ=0T6v?uN3e1^_`}?an9(xoRm`=vHNr+oIF^2`AbWK ztDuYGpDSTRhd-MNCdyg#*3XE64i4zKWTX*eZ$qA)qghcA*G$(IR2gGS8DUl^w{66+ zY4S3MR$6&Tc&%fVMc#7BbaN$hKoGvu#pdVp9&C^X38uWwR;wGrb%_Xel1H@%x%Jm2 zuDPh1zQz}O@F+~dmrMbf;}{yJg}bVLFcQn5@p!wG9TWvNT$A?^cSs(f!Qh?A)673p zRnDgP?a`OvTIsmstC^4TUVF7y7T9+{&4UL1F7$W6xl580_Z@=b-u}S{;9UZK%4^FV z`izTy`UGnk6aHcy2n(2R-NWchQQFEnstb9?aNu74rJelHt*&Nr(W}+0R^~PFd|e+{ zoFmT)ssz?OsOs3gJyaS$v2w;Wl@^UZ4cGI-h~Oimke^C}ukV)1r#u?VgdAtiYywp1 z=G2r?e_TrQ+YQU9ij~7n8Q|w(i6AMSKtb^Wzz$i$&`HB>$b40@A;}+zU-pmG~CKfv$KDkIGJNQUB=Ql=>h7yNn)l@)nwd?KKkQ zVIOGT076F{JM+pxf+*ji4@N&yL{S1LLo}i34gL6Ln*Apb;;(ix7rK?UB15fBG$O%z zp6(si87`4kxs5BsHFj9ggIqr}kONzD2s| zh+%ZtDK;UiBCC((Q|?>3G(Z=4>g2>8fMqg_ZK?#fS5W*DP{FeCK^#*M(<8>d&oKJD|mD>UvqGcjaGvy<)(R>fI=3} z?Vg>5B_`fpnX0m+5l+xyG-4Y#XSS|dUb#wB9h(=|r*+HG+FNwTnY3PS2MqaGJEoH- zVq$GNn|v#5-RU;2@N`#~NNcab=jTLq``BnOSF{o@8T$h3F`t*+LYujZcQCG%I+e2E zsWT4*3A*)5BttC-4m`EGi(T`z%Pri~XU}U1I{!$(P3W!#8Ac=;&O*Aj|IeRMw2!s* zwBG@tbdB_tW^Cpb{bMU}rms;khuPL3QE-Y%L57KNx%~WYDg16LYfSCDrR^5N%h~ts zYXhxx80>d=M7IJhFPqLfM9Y;QQEA6Fph7tUyPsZ0aHt(rgO9(!WY|+9g`ABHtF7M| zCyA5S57llHHtHAXTQm^9M5vM}$4{k=Xf0&Z>ynIrjaS*W`bB3+#@arlzlvva{&+=u ztnuhOVAM^V@^j$VlA3_qiL0C#Y*~fm;0Dk`kI+w2oaT=K68W!>0Wdmbr&f126>)7H zlqJ3sMEdR9*1T<#7a5QhY3YzxWtjLZwMJ=CmnIbf?l2?tU#O&(h_Pv!i)xGtkDx(R zl$i%+U6(!#}WZR2JO<4IGh{Rqm^)W`$2StIRvAkM* zF=c2?|3!?a-PApS5Qiq3Ey3mh7mW|`txT>G3beuv;3a6I2%4AFyy}m2%JZV7Fdw=S ziz-e9p^~*+PzAX(E|3U*hmBBtHCL4>NM~Oc=mX`41yx_(TEnXH|3H&X6#a(-|KY%Y zivt;iIa!5Re{&!Q2eS}xpdSa5C<_D7FX(UGyBUAR{^r2H#Qv)s_%q*c4*W~LzvIB4 zvA;R+FR}ltII!pk2mW?NeMUYQpsNFr*Pg9{{(D^(0umI6fxsCNKtDamUrsG92A+a(l5Cng6;Is1{)F1Enn*)DfATpHyGYIw&IWj}X zT?#1$ps-v_8v;4-&-K&SbnNOPexcC+^%0&e(;B;aZz^d^t$)DLn8%+U>2C}nFeoTY z*=tF=CP|l5U^8N3`8B=(x-vP*72@i5g8Gv1HMy||(Ky*JR;WAJW|8lbop8=*2^SL| zis+tRdf*WY?WLngY0ZfR#~WLcViv*1y+M~Z`=|^TwiiEZRmZ{Z^BCe7=rOf0DoZJc z@qui99Lb6e#Fcs5j>Z;r5gVMAn5mvm!R>B4DPl=)%0`I2!qGxzscmGt32o$Hui1kZ zncl{Gz}3~G1(n(cs@zkt#6oi3BS&TrYUURNc71#@gxuFL=dzlkwccDiK>Y=Q*li|k zpxB$BqIK*QAnv{^B1PVx+zNV|EYnmm$~Q`uUK>9Z#XMM&Ik7+~4dYT}C< z$4)sGTAb+`-K}K^w`@o6!!lj=2}=+mrjIhtQ<<42&W8$4-r)~3Pl;tv5BLN-rOi9=l*4nf z(k}RSEx!Z$-fcRv$xUlB4|~0jX?lzxcUc{;zu_5_x9}^VzE@O>Aeqac8FsCENrf5L zEFv|pRe3xfkIMqB@tQYI{kT}uIE0Il;8jB;hxL$`3hQUkEjz4EzbiB6+DWAyrt38* zy9@c-_BA%r`FSuUn*DWQzYx8o7^y&-nK4U!OT;TB(<&9I524sjV5VUbJi^T!W~sANR$Je>+q!+7SX~Xi=%iQmaF#BuFPV`I;S5XO{fq|@ z%YmI0O77S{MbhCes@oc7*3p2*^n>+p;lOdoNAqIG#2;^^>-Wmc-i20BHtznclB?^4Rk2JdHN9U zRAsqdW?ke!93p%EqgJbj$+w; zo-m=5XWra!JX0^e1N;_}99Jr?A@DMXb;7I39Kev<=Q(+;5+Qh-PR`>Nw`PeX=VEHa z^~B!$1gzWw+xCyND4qC>HStD_@vcxw4ynP{%~Iu4u7=ZI@E%Rjoto~VPjDnz)iQ> zspC?SCZ0A@Rfv#yamS+}`hjmfBWl+$rUnyFw!Q}CaW>hGjkn(6{yc+gU~Q0z2X}Rd zaRge*npjgjvHwP(fh5B+y08p3I$x1`o=n6@q+^YCsNZ|vX{7$O>#f}yYQ`{r0>_3d zr$eY?j?L%Vx7TSz_&qcVj%9s%60^ zmhlxSuU?ta;sg@TqCUizwe1tD4!UfmN$SeNT)NbLnOa-3{zPLoEk5JuLXJjptY2f- zq%yozk+oM(vEb?$OGsH9)>GI#KAev5&BUmbh-uk?=Mz7u_^y1A^tL|ci4xT5k;Pvf zMMOf3h)L~(10Z$pV_M?X98}Rwb3Os$$>Nbp)HL zF*s~+cP<2*-lT`fPMbDv1WCJR)Sf{hy5Qqh5EeTwnzK`}NN7Jcg}~mydcLw%G=xxQlTyd4~Zc1eP3DB^sl%FscV z?JhTbmHokccBoBTdtDA;_kwbwx^)-nKJrA?4c$w$^g^hXIpZH0sWW5rTdC=^D~n1G3Z zejhIe$EXseq{38vSCJ+Zu_HkcFvY0OQbb8a5=Rp8AtDd-L0=GfRr~+&f&LHv{eyr1 z7XC2`vk8iE{_ZdpVqp{(6%_`~5ENx$6Jq^aZ*s<;vA=QcFR}kB{{6_u@!LD;FZuos z|9&3J?=IWF#Qv|szf>Up{jRP3srNxagTsJ8!ai$&K(7bj-`^Vuun`sl6gW!onf!hf z+y0aYpV1Eh0R{AmB?Ow3GYT4@paN%P2r1RGpf$U4!v2!~fJR5Zx@CXLe?avQ3Ml{i zE9Sj|j;murL7gTdzWAX5{+akLfx=(K&ps8RU;VCs+__}FCKCI0pzQD&IE|}$p$!)d;w92u+8AQTrOs{4UpSw zu_}$`?`7Qe9-J!HO}k66RoenhVB2OWgNs1w7Pokr*uF(5C?P4KH=Ex)se{(JR%0*CN#UlapiLM=vP);{Z&n3O06=JwA--v)2)#Wy#0=h)@rVd0f!Dx`Du%t zU0ab$O*8(Lm2>Ugd>Nsze^I^+<^G!RC$R+99q)xlNyUfT8b_DIy)^fm!$L!_P>|ev ze}{8aM8N6Otmeis$S`0q)|XHd=v@k`_bw#SLjC%b!TjY?*Pmeohcixcxw)< zViKlm-GO)G=Chi_%hoJK2r*ic>o^Gvd|B3!1eXLH@E7p70VfHt6`=^dku|MSI+lIAr{~xcA`xT2qva9U#TMs7?<%|pQC8OeTzQtAq`@H^+84HY ze7A(P+a1cfD1afZ=obVK+(BRv&qEEbuG5*z|DofUxmX2PJ)AgdOyTJpg=xtu>9$*G z45jNeX<;$r8W??+aG)Jh?+dP8buH0OH@({95Y16;XIpY*z+Euu#A-K{EGbbLV@MaU z;^bTquMpAUqSoGbbwsbsNX1zl%xR^9r0M$(kfOgUJw7x&D#eWs18+s@rfjuoP0kR+ zL4LRW@r#?TYlRA*x9idvLlPAdSVSIvplD#Gn)+FUZQ%zK-^BE#ITdjj_9nmHNn3(= zw@@d&QJ2Lngu#sqFL`Tk*GN7_w%3bpIYO2l!P_hq#}Vb3b6N#5-S6dntP=S0(oWk5 zZ~gIqjr{Zq1Z`$lGHrHuh)G|hEV%}7jo;b zr}MSzw5d6U@0jpXv<-WbWo*Lc0N8}3+J}08UykLo^ra(GoBnK2B~}Y=2YGF9RoRxr zQR&ev<#@Nty13LU{8L@35ta381SlbXC^!TTI+=Uk7A33t_oGtQR2JKz5o^P}8#W|} zZqQe%((W3joBpn(@t6DI9ASmCq!q>Ck(`7Xs>^wd#fbcGT~YSld}X6bYHfFD)3aj| z7Qwt_FQ^JJLRz-W;IAk)^YDknsb%@&jHt&)Mb}X4T9lG$ z0`Gb=opQJ^$yY4Uwqg>?=PASa;7~QYI&JqcbJjg^i)+W=0kmy%ZJ+w!sCm1sAyr<6 z9-j$SV_gRG?ricLDI!%N^{)1v6t0fj6VFk27RL1*4bL(@YR)+?^S;?Ft@pQr7(+vz zP%XWM$>b+?2~GRNo;7HE2K9xM0r@BW&%l}G0gU)xAj%uqz5|@Dwb?;FcqN6b@$J^4 zEiigN(w)mwXyAzg}z6Bc~(i$ng`Q zNuNb0T{W&2IF;~3r)u!MuCh}@YbX41?Tx)eQ)u6oDavE&%1e^+6_u9>Te!i4O|f%t z5=rkSxj1&@u8@-4LlL~Ipo^NT8M&5JjY7IvH@~!~>uV*$nYU9vDsvyyWQ)4 zcJOZp8C7iEL9J`9K>wTx-WGk_4&zm}wYwhY_qLv}=D4)EpSU{Ihu>}lg?7=FEY%Tx z#6%0T%;D*}Dboz!F?@rHw5~6HvZLRe5gJj&>x0Adg>LHcNYHQNHJ7hGe8pJuv8!F% z#HYO!rf=sBs;l(J2V-IN;+a<%4a=Io&8T?uHsQ(nLKeD(&P3c2Ckn^%hAA(9*RL?m{W;lh*;Z(dB;LBwgA&I(8=AV@uRXNrGnPdIZKkyMm}mc z99PXRHk_A^+Pdh*Fq1t#w@Z20KdTJK5v;-ilnD}R*apaZLXczSM8p^GC4 z+hj^wIODNqVqS{o(b1(;e?eA`kS3hBKlY#wgQejT*ph&tdKw`CWy7u5sGO1-@9id6 z<`|e+vyO?7ZIw4fK(r1b*RVO)&x%wQ!|WE|(MJH~h+*um;C-_eJj!%^(q)2U-^E&1 zc-=1VxXzeH&v~v&FGt<}sW+wjE9}v|ZSbrm{{DC&CUewY-8A{P!v2mj|GkD4U4(L` zo`854GPqzukmWo05v#T2(K@)JF2gn3F3GZ8r=}^@-B=e=rGYFM8l7mK$%sSK5o1 z2#Nsjk~@K83zm1FC1O$AA*dQ4g&2a>f{>=fk*@{7?&=OKgeZJ`Wi?($Jr{C@)(rrJ z`GwWbf=pX^SP_`23XQ69v@)?}8)vk_S;G~9^u_K$<(5m`BNzSApGk#e#EDEj6j4cP zc1fTFBH;kNCQ+G9%aDlQ4t|n*OLH{WD6UPG1r+DFLSgU-Sh086_9=Ix2eq+p-F3 zm=tZ@PJh0AJQ#k!^+eN?v7#dgCH#q1D>8vj!6fkxrhAKTZaN`2^%uHd*U<2AC50qf zOBg9ZDn%XuR2WG*(Wz0TE=leFXY~h=Wv@7`M~T6x`@0UT{cm%(GaCSf3@!r-9Stj} zM@j3VMG#n6At|BrvsX=52eZDe3>+lA1Y$^dbUYy2aI%*;j(ndy-S>o z&E{N618i5=4Vlw~s0B3dGV!@JVZD68UnlB!M{@|DZ{ppEUUh zObPuLn#8^HEKJ7Xhy4y9;F^xd4J z=$RB!5ce#s>eH#R-#cDM%Mghef$Yro!!tJOzv}gDULua3p6gtO^1_;0`oV8EQ4E`H!^;%IddY(Wx>S|^Ib&aqzbNTsf_W)nG8NLyNv(vVZ5|I4g@<= zi_)q&vEO^n%dees>@6zqyj^chQl*lh{Rck8^yK$UQkC3wwIG{2zAu+WDlLshwzDFJ z<7^F(+##Ig_I0jUDp{Rv##`{FOtPOhQ$G9pN$vH6>X47&r*b}-bHM~7d%K2>^s*fL z{yQA++qZS3O-031aWUd=tkL-w zUniNk^?A~;`UA2Uq+njxP=d)1;=Vi>IyM^gD9ZjvOB%GI~O z^fd6sbh@p%dHSI4e$~lMmsM{$roc8~-hLkY?FbsR)#xoovwj?=qmmZv9^?VrN`{tr zK*~`L!o*Dr-t0rMy9u3u{hOiE;eh6QPf-`;F;@&fzA0oWa5H7YEh5ePup1U!}#(V~#sA;^81O8ZQs67PLy%GrX)gT5-*X|HGI zUAESxb~@Fz!QaqMS*~98CTNp!AjP~fACzWX_h5NbCZg$pwk&4EE`~7~rLYz`Ug!^$ z;;ZV$sj0oRz!*d$Y1qg}(CO-N7gLUup=7?-DJrJ+rzn$P4B z(2TUA3KO*{$P}%Ww(LkL)u1+*oM{F`YuyBFI(7=;H7O5yA_cB^7q_L;sOf(p$p;pzhs*$ zd)~@@S#Ic#y!G+r#Lyby@>&+&|1 z(Y3GLNfl>hN8QRtsMFOa^b{cL2YsNQG+ivVBD4Xv+}tICsUEO;Hj{018?$ zubBTgeWrkSJP|3T&T^{prjw;L@Q8l`$#N&Rn{2ae6WQW?+NQ16SI~`OXrIBr;DuoM z$FIk#=O-I@vpftG4i2stsd&4LDHUHgt`G^oPK<}K<(7~Ny`b9rdW=xT`U515{xe82 zPq&-u$tR8eCy>0;@yS1y`SJZ!@XJ-o8|DL7L?>8yj4(UIoXP54L;p&)bL8NO^3iO7FPb6Bo?~OrNq;Tmzo(4kR`K=F74oVJZt-EDX<@#5PZSYIpw1f z%5<=&*nEOWQGryo# z*lIyzd&GkiC8W%*JIx!(rx`=tx$Y~~3A*5UPK_Q(?pF|fh<>M!P{z%7=;c@&(ylg6 ze!Pjsbunyhy)TCL8b1yfs|nSg=&KSZ+_3h!N?SC3y4tUQan!qmaTxgclOmI}&{Yls zA#_feCUz11fi0IBo~7KRV`eru8H7{yaIerbmqmiJb+g`|6DAIY&xw58 zAx^jgfM^Uk+?LI0_OD#iNZk^C7Oe#Uh+Y#}H+H{KM@ya^A1&3C8bXH@n;lPZ1+nqh z1kTb1^Wy`}J=s+KWfP=``ZhwfS@A%GESo<(_9a0Zc%i3mJLLfn*)o5)0wp*}#eb}N ze*BjHS_1uF@BCxk`;SS`zh@G}#4g0hDfC;A6l7&*6XaxPWfEi)V-ykw`V<03jr~u< z$9~5C79{@?`>%53k9>l^1S3DImG7Px@SG*UXRJ277*UQBS(-u5i z(s7Z9+qeFQ3>n$Md`7oc)eS*r(`%rFjz;VkJ%df@+$|Ik8z0+MB5ISw)$04`1m+mX z0YAxO><%_k#Ydb&ZoAp~LJk}EOJzJ>HBCmbfL;gv8vBvWx_em+-To&O@k1&HB?V9UCrGW~#8W1j#5d)>o;gG6?UAs}Xbx4(w z!~Rr!N<=jH1NtFT#<15?dnw5E#I4xGMC@yJ7-PzOr)SM;f{Gb-sY$es`D`HPdA%jt zfYLGxSm;aE>Sg7kkneyNdiF!+*z>+Y@>HCS>BXc^7QEet4jh~FX7)FAuh)@@&W?N| zcV9=w5MeQGbvGO{Am&1I1YpcFEw;kA zm0qY27Bi}(@kYjxc9=ihu4rCAS~^JU;zCA17}Zm3>PY@6Ll#SxR2W($mkUI4NvZK? z3J<$eN?%QncusDgSFQ)t%InaUFPkpu37SV&ud?g-E54$*2W5e^CAK9k{vZ~nZ-4v5 zrR!RwGTF?rWszJYnF;S`_Kk=JSJ&j-65ByE6wOnX!skfgb@Is9XJ(p+l01FRx~{L^ z&vpbL0uhL9`%2yIyzPX+u!ON)gN_3?e~f4kQzCYc!WBpD@bLxZgtSc?9wuQEMZZ;H5lyjArU#;VA)G}>)=mo0KO?d~{sLXdje^5vTo!~ux z3yZ_D+368v|MtoyjtP{NM}Mr~9)5lV&**Z7Pw$nqqBSAV?50vPUKxV`RYD{lZA16 z1=Jexl5%Y2u--JBs+bMU#hpsW#KFn0q|bdUu{Xtmpn%_EdpmLBYAv@g$d4|Gpk1EwEe{r22(8Nan_|SF zMTlOXB%Yu(Lz;PLjx5^vVbs#_)L--E{wLjU*i*C}T{m%^=9Tl=i*n`9DmTMfc7oGN zXP?+g6EwiHc%N}ik{2|TPt|0)J=vYlLK+kCTV@p=Bb$UPc#Ep`{1?k?hh){B$tfio zgttL;yrBrw)?=BgNC>_(F1D)Hf|!*rqGyK3&kz-KllZV@U6wM(B=K&6x}TvimuI(> zfL!Sh-Ot*olZCmm(j#91{jCjC=r#dIJU=Ep8ypVmiD6O9S=7Qdy?24e*+`HiR%z$C2UMz->WI5=i#K z`pZzHN$;h(PO-{x67)uWMWi5MevOm&;d#LtWU0cDTSV!a#zjk+H!81eG0DgjB?Zs^qhjoRf>P9nw_?hS|%gq27wd;rb!W>#zi; zmn7^b*4nqsMwJYTE#vJaAJ(m_CB^+vkMaNk2nt@JLNwF$IEm|goa3D1RH+-lbTtPrLG@p?F>DYBO8CDYzt88W3aZA zt6g1t&y8Ll(d1{qIM4}wz-JVv@eMvpa8%B8eT}EM@rxsL zs5U^U&&GDOhGb;d`Ipo;T&yQneZp66r(6L-g^#!Z?2csb~A$rOy$-@h+ zf_~0rIphM_qKfb8FZZxI0lDFGEJcq*+_Th|rDZ_D9|{_YI9!oV@&Cld z^`DMGn|}!H-y<}j{R@+bFz0XQ7&Znm5q5TVPF67>?J$Y_EusC475pD#|5ZZ!neVsi zDD;^$Uqxu~&r08)2@MKp4g(EDwC8fs=j}h(4OkQk0`aqA^m$^+ zAD%JKelWm_(I4G{uYiPx!f1#J^IS4oPYjFk2cm&N{W75WVdeS@(H#7N#)=n;Ktw}9 zeU|v*0`mW?@LkjEH+hl#zOVJ4?^D&LIXA5izdBdkO1MDaS=Ap8rxze4T(@xr6@g21 z@And>XZv(P7Agq)Eu#Ndg8alpQfaLKrC6y%IX{rOcv+-3Mv*!{6uu{r5wAFH?|Q}p z&qv)T$8U*$Quw~aFH2X0qM*D@3|eiJTb!*3eq8Hb%bx^mi1CUcaAz%vi1v!<*vMnl zuy);X9UgtSg*w%RzlNqvG|A^}fP3Sv&=w{s*Zc{vfs2wHxWIK3+Vhzez0+lz>YlHjeMW zOKg+!rIA<8E?1o!Iw-c7BohfuIt^2G)&Sq!bGc~GbGaye6vcV6cxnzkw$LHZ@GGzm z82BDWK43~Ap3@v`AI0WFregU(W7=n~RjZ?!KJRlqyJ<7R^^kWzC~aVh_WZ+_w*!U_ zn_*Lg`-U5bap-o^cav<;!&ig_bT8oeIcEy1D78>fk^oA%&fs{t0aQfo+iE}kd}KRq zR+hA<->o{gqy+Q+lK0AW8&}ep@l1S4f{I#?A9T2!t0vbhh7ZyPxR?|X>AUu z?s?0^$SwBI(5m=jxB+QRBP8~)c(bkeY2EdeqwOQ7RdQ>GVm(ds{@r+QhxK~R4wfl( zD^f0Pzm0`OV_d%a39qkQM%3B7a#i#rmPwhC8CYi8cfg(okFFFiolO@Gyyk;c-X%sz zyF5nE$`s}^t+~Cgvc~?Je9;a`7$r8vN!^j)6#RNXPM04)&2PoJMn{+u86B2%47FXt zB;cT^k(+WJ{1A4|V-7Y+vt@4T?DV9@EU5U7%S?Z-CFuI%YdRami0oQWW*4NA1I#k` zIOK_m>7J%SbXy&5YEiZDI1~#VVVNvNi2_=}LXzdgyW}^)Xc;RfBkHU4KIa|IZERVY z?b13`B^w7ij(w)FHQH(!55Z+&XFk&uhp4ml8g5wE(#X{OkUg%x+zFX4;%6MmWsZ3g} z26aOsP3G;5WK5%c5+}-W(^t)`CmP;EvvH#h;fb%Y@XL8gtz781soqT-e@Q#YDhMmr zD}`jfOtki?e@Q$qq#CSp^ZX5saOT@sBXFN|t?now%6>G8DB|c^g(?Z~zh4;~# z-<_=s`MCe8eL0h zdD-0;pRts2hYc(dH88X}F}NS4kZlC!7YRBy z4WxFHmy`{kS5YqJs)h76VbLp1kxx(>5#f&|6>PpT4zZVZtDLN#Wx0;5u7-DUkE?ww zqzyY2IBf|`!Bzxwr@3$^ZYVTGFFZ%a1hB%@<^nYnVir%>2yXK%f< zp_b8~MOYgLJ3wYi$ZA;Pt}!l(rg(k`co zOgDebJOc_X2_(kNKxcl%KvXt22%^kySCYSFF1IE+f3|_EgldFY(~xmTFjqtZeun1G z!4b!mF5h#g@S5kE3MkTwHb4p_yMyVO~3#g$-e6&u&vZJ0X;c zfGB>3v%*;EUvL&>a9jKX&ITpe)2N}^iH4)Qp)R#~v5PJC9&~ANXs>oH?uS>2*AkYE zZd0_3pT8L4Zy`XFUJ4$HA{k@bb!z9-G8b_NwbFl<9hkY@gotf=hO=94Obb|=R)J#y zO8zzyKhYFR*B0iPCc19eB@6T-S7#uhigBJXOB))kWohcsgfh# zRCLD5jJ8TRbYGS`);Ymw-7CWc*aMPjT6)iVGNJ}yaarP?W=iL@q2_D zH4IvXbwOpQERQcL0T$B@a@?8AVTr~?hVeH_fdWEO{b{%V#L1(skw zKLzx1d7fnn3IQZFxMy^GrZXg9MI`_@VFQ(s2u%=O(SS*an8bmZMFq;=P?$|A-^h55 zlvUM)j2-DY7z_de5@;CnhoS}wh6L2p2!SRr20%!2m}WAB1RA>t1>`Hn5%(xL&M>20 zDjOA$u!xZUncSWvI&7_?6R++oIBPm}Zl#Lk(u|bm-qd{%B+A4LvB#7Tv_`A{@S?x1ol3ATtT z?28sF>Dav#u|fr1s{boaxm^FyFmO40#D`ltHq{TcMXxM`jFyChoAj+dEO+jX1y7Q? zzNI}0xUb^3lhArBZ!RH8kG6%4Avj`cdF?0H_J{%?5ip?v1rWyyFdUatnXdX1GM*A9 zuX?u5@xO96j_?1Rw82ig@1?Vd*wlPdb68ZvFE7st}f$O9W0)nj3A% z2z}E{wk|iOsPqc2_l46OJ8XNI!tn@yf8~1yuKQcaMyZUrmTJpDDO_5nM&o_*YS@A^ zK;n5alPQS8aXM4zP$MX=IE1*>>o}&^OjktgmU8OkBf=JS(7ygk@15TFZ`M`V63dD1 zsW02EN_A10d3AJH7YNK5sRA4r1q%HW0XTzTAC^>E+d^mtt~1it?^cEu&UBl=n}ZwLp}_n zI>EdLQ;J0a^{XrvP=J;K#S~$5e#3GkNk}0h?*P)IPratu-jYJ;p0q)|r2BqOYhSU8 zEzRk@fkF)j+j2O9PVsy$9yv>)%sxOC84%jd4EP+4RpHG{YY2S*V6`Vfhw`$X`8fPE zO&^2w`CA8C%@r+I2oa2ynUd)ny=v8RE0pfkR+W7Y*br60;X(XDfMe*k%EAKTa+QP} zcc^*mm-w#5u;O(cI0WR5K6cVg2c_($yxIcCehKiawFahfBTvJsXONcu1_<_3H^7_29a#gXJucHdin!0&h->dS=-tbuq z=u~4xM$UeTf&?*0=odL4bpMCFvyO^l|Kt7=yMQ3lteC@D%K zAf3_;2Av`)A<_*ZB_K!$2nap{a=kzAee|4r&w2iNu5&z#z`VZV7hTaA zRVGDCJp5`B<485EG!t&zX{o3!$%&ol^2>K<%o8Xk`*3CP`X!F1=jicB6|>Y9QTly| zp#ei%R8o0l_G1M8FP^{f&uY{h7@#b4HZ_Y@E7{C0chcpU;=gmF&a$n7-6?pz4o%6$ z`W8wIBpsHJVB~|2kp~LMGl(g3TBem%icft<{$Vf4Z_tK)i9s&~RJuc=k_ z5&k`2tu;H!2D=bTPeGv_k^3~AU=}&_POcT`WgV$JmN82LMxab7>d3AjA8uI`rDx)L zU+*hOspKF`eISw8FjK)+^+u4=d+Stw5%dh|CaemhSPw-S>&Sj2;S*f2>r1Z4cy@9HCgfYI3YY8bum$r9r=L25wu6ByKq6>} z7YLf=aT&&CQz68CNl`MLSt4GPKGgF3ou(Vy<$W!4Q9h5vy3}F~acsK7AkI!xGB-Go z(uH2>I^z{AG*%EIRPcOoP9@jsgM32NNs)D-^pf0LNy9qrX#}+`@RKVrH*tCe5JmBy z4iS$6LW<(a{7{!a1t-4{P>O-#9WjH!jhQ5MRdnJx8EY?P9{Y*_&$Ikw z+FR7;3IdnN{5@{r+vJ+$JGudbHoY@7z1!{N7$t1@aM=fHhRRuWnC8eubx zJ5B0d%=4Mq;bJ~{Cb($Kfe+2mX{dBB7W>I}BJC$dY^L){RQ)GxO27d@TE_+}YXi=G zWGZ>DZKUR$*v^G@DPJAxo{dyzwjPZX<&Te`$IS!zOI{Qi)rHpsk2C3bl6Mp~mrgE2 zB9kWK|#9Zihw&wHJ>@&L<{knR)Q*Nnahkx8p~cnF z^W)B^!K#|)H|si^r?JH9IHKSMQ^d8gnW~w6!itL79Q*x&gRHM*&?BMpk9{J6i-0a5 z;)wy)5^u_jhz3p~>cE{+of(v!QfBpJo%ec~u5U-(pFFi1 zJzhSzj>kfP5Fr%z#rH7<(GA)SX)h;O5uIGc%t1bif_R3r$63L`j$OXi_;}oTX)PG~ z@?bf>M>Ul?717&-xNpxh`CwXF0v}8fbh`p=D=g8|2bx8-M^t?~@IccebBmc43ZBwS z+Z#9;4sm&=<|~K`NHX2|bi6mR-L5=jyC-+h_@KA>x!q3Bxrf`tUqLE}w2-~V5HF*} z)tR^w;AUneatg*479CqA;(b9&&!WxhKrY&~PLQAuxhQ!*1cdQ(7A26R=vP0dAyAW{gG6w`&9IZu4Ee{MI@j?XSEh`;vk+ zG@m8t*(MwGe9Q3B6OTxRT>S>Zs~)2F=*lyqn@XxMMP$v;P$RtXxSXg|zJjzy?`F|S zyz1}vg8SZF8!PAT%E|I!mn!4w9*daAT?z0hw;^|84rDfWTEp+;H*tJmXN`zgNbr-P zTm!NLOe&)Lx{L(5uN7U38(Fn3{DntQ;HEnON zT;|i9y@Gt5JhZ;DAIC~m(0F6;Ip%=327*(KPkf|!_wydcY=x=r> zZGqcImzfsbj_r&QQ@v1Es}o_UNo=Bu$%uMUdNP9f?(B+=I>q_cq<{}#XQu@7c*Qa? zBZ`>{MOBuv)sY%ATPfaKE@g)C@DUW8&hO_6DEl}$SLaJVJ3YS~W@!ChiN)q4;@kxS zSoG>eG!h2VHtI+-*u(M3NM;Yr7J+6`HIER+F80UPd8{r9JErdECTzm{bM}!#L{RG$ zT1HQ&8m^#F(-!=TQ2g$8JGx*ZK`~MT{3K z99h?t@K9Bkdpbe1s0a{kGDrZF?Bzyy@4PJ}N?<(iOZEn~4zYhBoLVn&R3-BntvtJc z*11~*W%8o*vS6yE8_oDT-5`%!%i4@d30m>GuOF{mqNk&MaX+lvIPc0$tye|L?-Uy9 zQi<+p6fnnQGI2T68NXH9ZywCNufpg|8B9?UPRJf3z&(zoOtUuOj(zt9i>A#JnVmP} zz7tQV1Ix^XQTSU{F!UZHFmK&tH!~eYuE?MMDHcMb(KggZDxbap&*Ekab%{3-r0jPv zXm$APusMjMy-~nh#nDv>Ykg!A+o#dinexb8>jU<9SYr9riHsakXPGkbU{ofqpfq)L z@+4|nXka&WdiwwkmA{>O$g8q7G)pUDHALiHB+)Q2Wl2pE!!$DUrm`kHF)#F-pXfdn z=TxLDG87Xn0w?`J%`=lc5+ep~*`oZQg@j#5L9bd(VfXkOO4&C~`LVh@rl^qx?s#p1 z;*358_EazGy^`7eAF+44$M@ZQUYN(&H+u!Lr@F|(I(|>VUa;OYQXJm}VUvm(lu~;Q zMjnm|{tUu_QRxzzq1}8A)lBr`W>k*yqABpbU^9{TMjkcBZt zF6jJm=Q6w+koSTcqgnBqPD#bVCGa#t%q)^a5725NXUlGrJE7nq8bIK1B)^H(13RQ6 zR|p)z$jM3j*+-fD{3|Vwt#{6F!8{hVdP{PDWi+h&uz*7&NWwYtE;6Tk1 zDFxzshCa*T)s8q@Rn)n%RHCVufIDK~4;*NvrGs_TBMGR*-=W}y-iDVw0&ZKOat*bU z+jb&-!my-sA~U&{dH6ATAsrF=_2Z2E1-m-z9kLZ1|A5!zxP+2{_}^|@SkQwl&Op<5 z%*t9%pW!JHsrxpqO~1WIP^_lrLobd4+_rw8%lJM!D6Ps_lUh|?FEll=9t8OxO7cM0 zRxNHmm1ohkMKTZjBYemEWofD$E@i`-QSpFhoX1-oK{JzmX-agp=z+8_EzC*-k(}DP z?gY_hRf;qdUZ|n!Ag(BD33}#W*sIGCp<;Ouj(o{?ub%DtR#3;A&*+&&?4`te!z#am z*oKdmzk-5}jY>ayH;!C1i&H$@xRlmg3-oN6eORW}uyOfngIkH!tL(z9%T0=3L@Tcu z3%5QT$WN{pw3}OUQhpl?2D;y!&&2wqXa9L+MLzGP{5$(NC*bY&=pCA>4Ey9SuIDSR zuJb(%ZOSf9pULHU8nC-Seg{pAhL*st}gh~`)Ju(-E|n9-adwx?1hZmA58jtbL?re zyPHPojnUzx-&frpZ-1L~w`pezJ4PO!HN{kCs5kt%c1_5;bziMIMMyYua``yTo^NiV zO&8&HT-{D`_qYKjwc-=>UMCK>tk!_u^YP$?+tm~gL)`UjmB|ZrZ>ZFBZI2+q{7Em%tIsI^s3xg?wR1B zOXgCqJ5GCbegHgn0I6=iX}xt0m=iW$J+*JM?u-z$fmwShj|>fb4Bb}bbiH8~K&sR~ zJK%qfGmkx6+GG#@C#Muej2N^HeVP^cj=F=RY6W9ASD1;sS3{oP?BG3YKtN*> ziC%e>vn6o(;dXLc`sW74hvQbu6#BE5Hh{hVaoYNDVd!XH&||lqWJx&FKVph2)Ct!yM9+LJ3Z-+ToT}Wr z<63FQ9-BkIJ;BORqT^RkKrTnJ*QgX&rgwQ``KU=#?_M|6!R7%qS-~C6Osj1wpxX{% zEB~>uRpsDCtxCbepzM){MM7>87X%6YBWJiK+~2D(3T%DwkDy>*vklkQe(l}5ccE&n z^kQ*G&rHK`m!3@7{8|)OCs__+&1ggF?#opVQs#IonHoj6Sl|S?2H^K@9=c2`2w!|< zKR$Kn<|TNkW^+AY*HGPYJew!Y3BBSI2XKC*-Ul*ZObAKr1?^*Sw$=4b+E1jgh-n%C z^WI_!dY8#O-WGoQi=(`J@)yT7LGS68lJ;~w+Do{DrewmRVa^3Vx#mt7?h*4#a}VcE zeorZ-eqnSzd9F9!w%gxs$_F-_7WX`H4+$S+HtHP;l@|vRo!{RTW>R_HP zKBizR<&OAs`A1-%o}r`$@77Ars-x12r5){!p2e|ck1SqI&>KW^;W(b$l`FVK?{zW^ ziW!#$=LmNz+bjjHeFcSV1v=K;b!8~cKCo_?d1%d3<8XB37*1QgcGvjf5DNaAYQngi zlm_&oc|v1bws%!K5UGgu@TKs{l)2dGv=N>>rhvJGLu@OYyCvq-PyB=E%Rgvg|79o)ahZJT}9}s0G-P#@9`H zquenV%B|Wr>-3rp(m(SijxD#@7Op?c;!4Ez5{p%=vabJha%1AXBoM*PUNapYT12dK zhH(aMe({z|(-V5K|CZT(Ih;W1Zc|+9eOjYZjt&`=b>RcyW1xI7%^N6x z0|r+BO>qX>fw%fhT}Rf(oC|y5Gr%ysuOQXq+_(ep-ra}4+eQ3t7x8b}Mey?Sit5o=LUhUjIn5LK$9IhMEM1 zBniQ*?&=72Ll7&Z2`SDKgi6+#7S$1cOO9Ao>?CHx$VN%pT)b9YRyZoK z>S^!QljxwX5zxK?u~N^AXU2qI78lx`VtqCZ>qQ++F{e?EG_0woCFI99 z9J}IRm{7XX8Y5T&CtI(`8i8EtNqOETC%==uz%i6=lqFAWiH3tM3+Ww3M6?xVbIb8$ z(Y~UU1_@q%a!69~u4qcDX#TyBM`i$)$sB)`54Ay{53c?pXFU%Q8cSRjdFX;2xp6ig zpX`!G5yon%B&l$LW>QAZ-~bq zq7UZWp=2VeDV%NPys&!r*^2OX)ax(o0c%|y*SzizIW6?qU}*)1rkWbpo#)_HedQEh zsxj^y6l1R<)AtgRD!FxQ9Z&0N<8PMyX34){i3AJ@bg<=u!r;8zCoBPGQ*w&}<)TO^ zFBg&r&i$*f_n8*%{67@Eitt6)Opo<>~8cmT|kM`~kiT6UR#apU{U(mo>8vqgEAcPMyqqM|2i z!W7=HVj!?WaP!66K#ukzXfGJt489-hDUZ&TYX8(%j9KA9=T28&rFBOSxFvzg@8jDl z7nJVs^ua4Pp0bTd`%_~v`QW2O-FaZU@1{1zxK?ORp_1ZN5P-}TsHkujycYVLv3nyf zj@M??s89c)qpAYMxEx;-2m4lweu9~lMtV+)Jblt#f}V{V1CYztB$I+aghNL^zZ;#z zScu&qs<`UhR9P}nVnITCLro((4AGi`JvirsIcetLn1)qTZv4zG_k9Kx*&3m3p&f`;01ROe(5Z4VBQ;(J@*I~`8>2Sr;> zHCi!nZZuZ;G(^J2tGEV!gPClhUhSI#ips$j)^$-m4cL4E;d6@e!}$^o*hzP5?QS~6 zjTZ=3?sAkWJm%aCwadwiJ1mFYW!swNzVz9%{^_dd!S<51U}?A~g<-HtzS+$#bx(bq zRFdP=eUI7(ih{z$HJvztt3v#E9HP)8ClZ z!HK5eoGfE3(!m{EVX=vkI7*^r5_Y_%a6+#(ySje|T&%%+S_I;fkWKLWp zLI5(P^8rB&={is_5Zdol^v%?qVP0eF*dB|d3hjAFad^R}g!$xr>Dc*KjUqGy~82$M&ILs%sC51n}m zxDkRW{nnk@K~eCT2(bVxM-6T`E2eFAFSxEa zCGOfBAE+mc{S!I_Z{>3Vms#LlJB~sY-2S zli1&s?MouzYl5x+0axV9ouqK@4DBzs_C5#O2+IpAiXXq2yKHi^cPrZZ!lzHYeLWP7 z6<7AP>^JrGH!m+Q|Msf>P5}Q`3E&b?aeh7+P=@=51t|&R={_7A`3w~s(oE?@)y(0dnz z0ft}#CAlX_-{^k=8%X-bz()rY6A%(XPOV@PETAL+MtXu{V9F;j5%g?j0LLc{lR!{W zLNEkIgrRHzpqQJO#Fvy-MfFDpKRo8yEQ#J!-CK=X;>RkxLMWMB5Kic4q1vlZ2)|}e zU(B1tDvF|KZI20ZMFsf;;>fD%?3N5FH~^hY7gTvvnM37mWX13=vytvx$h*GG0hf^+ zf$AzbP5<5nNb7m%z{kl)I&Z>AM8)*P&$MnmAI5h2ab5*XyO8P0T<#*m%U z*=DK$SIvq=LV>a*c(5W_W$*<*H3$@gQ5K1bY6A_NGPX4@)GZ=u{aBMioWy)kY-%GZ zsRK1N+HA&buN14RO-L~2CMRLCcbiag3^QKrCcsZcmoytyex5YzO5Ia4u^3|Zp{?Bl zt-6JerPkRcQiw6Sjltwqrj?E%X@FKusOMabDuf*E@QXQ6&$5M5aioQS|eBUW@+lGyi$FC zWzQ@CdYl$Q>9qHj`|>2YDDkPAYl?i z%4C)c1U64y(P%%I#b|`+KyZ_m=wy(ZJuxtG8<@2%_DIFg=pMas7K2GPN1|=&R(XNsl>H?4o{RwrIjLZP`tkxlblS1U~V;>qC_pl zLN9sM(QYY%0h>_sXHN!0RtJo+&xz@OK)&x#@GTWJ)Ap*>IcBn9&tP zJ~`@s)3lw4;L>vJ;!FMelm&w&F4e=4`TAk2$f_+`B6aoLz`o=}`t$++jTZzIHn&93 z0?`d@^Lce(!yD3N#<;g8q)0LAe9|)05oV)=Q8fhAqI@MyDG;gUyEX2WYn?a56esyeSw!aFB{qhI#{*f z3)Jp>7UyWoklnORE?{76jbUt(U_jlP5rH>vZ~eLA<=jH~{MGz-<(3E@U)w2?sL#A3 zahhZd>{ryPXI!Rq(?w8`k@94+Zt9Bu3cUQt4EmN1|Kz@akR%U#yX7!f+~*CfPc@>| z?+`%t3f_${Iu0SO+Y;0~#q{-)Zvna7qpXeOirn1}uv@#>s9WniRciTuPbJ%5JP&gpSDEdOklDTZg%Eq9qR@{7Kc%W8EK{>{Ts z%XR)8SM+vn4EhRs>@nt@b*>knl^WM`{_*YPH-{M_f{pas(H-*?Y3e^u;l_j=VN~gp=7@4eBD&EBO ztm+domf0EU{cYI(2J629s|1(0I5&(RNclN4CPk6r;&6m0mn6`NibsO~S71HU^8Hl% z55ao29+2|$vt#)=SkJUT+S5<8|0%GZ7`8veazP;QiD`Q>SLO$U7aaq@=!tC$w2%63 zv7Qz*1Be9S1I8^0CM_{384Z>w9sM^?GvsXc46x3rrD1=<-NxdGBNVO!3wUf+3ckaHa$qpOuJ1-vIw#I4OKRT@1EoL+| z)nJ#Byy7OzU$S43IuyTBV|q|x;ngNFd&73V`qISYrHj0m=oaOzlEv>nrxk3c^zQa9 zPk`LYpz@q+q%uYzCYakVx_wmGm+8oC%K4Prsxx3}=T?TiA+i||_*CJMbQTL#*|Z2l z*`KS(0dzj$)sm{U%Mvx+6jU%kbVk1dam03!6of3Bp{7evL%lCDZLelnY=59TZ|ym6 z2*>DT$g|FMHXdW7XfyC>#rNcA8TZFIU^^#(NzMx;l>&?8R<&UJZ8G2N%Ui6kju~=i&ny=+K=Kw3RVFFyLt);ynj4u zeb-I;Ja999l8-BFQjyWR6bHJYtNrdMRVuK(T41#CogB8V~!41`bZ(@8KkR8;?xuQaDqlIuc! zTvWBE6V9b!t2tiqUa5qt7;NnzS3od`5dtrFESB%dS) zR&NdlXUM)&5fMnvV2o1q>&7<`U-f6kWe7=ky}t6^kz1sw!5Ty-xO|gA{zWV^B#(t9 zkCq*WIvu@cn`ZH-a7XA4XLNRaM1J5vzX~aw-=8D~Od}KeMCM#6h#2)YDp$(Uqan^G zNnK_G2e`d)eAaaz^bLDj^WGD3-@KjnKp#BdrLy5xCZ%0*buL_2Kxc4Kx%g0(HM;Yq zExec+sHk(;6(D95sQjd034W!Pq_pO|_OzY+E67rSQ~HW1IFRl)&VJ+U-{4GKQbLpm z4*iZZetv*t;(TJF{9FhzegxOA?6YrL*ms=$P5TdVc6Kb^arU?Meu1+y?RT90P5Yn1 zS;F6N_GdZA|KbdYETUta*k=IJ(9q8R@ht#mD1X>z#DIYY*k>?0sInpVJ$krF43iWV z05%{#2}Xxt0BOCa8$Jqkb& zQT@YKuG-qs913yP>)tONst+%;p~k9o356tg-kMkP$PMWR!*2#;5GtU}inV-EwZ0@{ zh-St5rb@ohb?LfncFc<`jc3}CW3Z6O8=)LvodP{}77;v?~d)?Azy>Yq&T;Grt}(Dglr zg3rq82IFzJYB|w}cq!*%oD1ckWyO1Ms>#&okqeDP<37nmS{+k`?K`DaWJ%T$nR|BV zGVM4*fqN>io@2Z$pc^oFFFLrW=78b;+Fx$!CEktVY|s;)VVsD-CLXv(+Y>K$HHTL9 zEB+br?bi)y=}9x>#H<QI(0$>G@(ko0`7>Sq#6ZsZ?I%Arrsgn2A{k@47Q?PmPeJ zoy-<_X7olpZYA^4<$f%_fyLMnU0tK;1k;3;sap=%p-gU4xmOh(G6}WQ1*hVXY z%QEnQdJO}&wrIfWBFcRkN>6_LC!rptPud_WA0mu@@#9Jlm?S zzRu}a^3lY}tlGQ1eoA3--{S`1uET7gt)%-1}EL(RP z5BUP~dUlP^aU1lZ)ivYrT*Itm^X5nHt=>l_i2BCdC6fA-Qd!@$@z1$mj$9PGy1Ip% z^MxaJi^M+Z4sCwgbjb+VSvZ<2nE8#&-^lzo$OMWU#dx@(K=LUN96YI7;THpDobkhv z+&}>&FSqEgka?yB5^#T_{fEdrTaW*z>-_?mXIdZu_b12lpF(EbNv!bCc8mbjFfdUe zC+RvTUd{j6Fff6@Ab?Dib3h)>A2ZHCkQ2)e4RBNvV-NxLk03fS8c|wqdMpE&VMerx zB-4p02bHGijdYh9~dp-gW4ytuqy^Cp>1MW8ggP0dDM~T@;i~l>e7;) zuIi4N{4p-;TFv%UTpJPqpcpVFv;8;OnNc(P<_SXp}UGHzB;V@jw zr~FvwHWw6_>{>`#CFpOCTYH<$qDLSY`~v4?w44P!m&6nzR^c+!!Di;#rw8Ik(zsN zyz#=M++)R)iqLCFI?e3XIV&;WNSR5J>f6pHX_?*nNP|kCG2k}5rRCH~OY4Y+)g5r_ zMt@V8bm&-_O?L==@GDwmk^DvXzMEOA1Q$%Qr-fW4=UZbX9t#_ zQgP-w3gDzn@p^-%0Kz&ag6?lu`?C8hsK(_Bsuzm=S(n^s&tB>SH?dj=*#v^RI@UO*N#mraAIjwl4=f*B z=D*w2fx8wQ^367W(nKzeTGl?)Qpg{K)5h;V5K0KzanlUGCd{?yI$C<6hVMWzJ2lq0 zT!XsFt~UW9d3Tid-P7p3^gR~^s`Cse;w)MYd7)K?cW(!M1-Y$gZXFp5f8>_g_zFr` z@NC3oO#48Y+g`lg+C0az0iTmQbM3RG7*qgORP*nCQ1vVqbCIt zdQOThkQXV*;A*~ z`B`?}s8W|~M6jS*J;TQ0c3;?0_NQDkdYRZ$C?(CLf)TE{ki>l@GM9EC^H%@9ZZlgUl`rae zy38zfR#OnJbUc6klAip#Q03Qko5|}`kN3LSI3vbL+G>hE_(o}o4|r7a(TXz>bB2ud zKb9s6A?vm$Gz2k9i$Z*SgJ>jj-aK}i8~c#*q;u-}AY~XNJ}&g`^DrCIhwjcH-8>qj7}=JnggAMx9?J|igzQVzSet** zi$BT_F56eU9Pldiy;SWq)8^1!f9G+f)Venx8H8)NKCRM?-U%~E*T`ix^?Kh+Ikmz9 zZxy=6#l31nWRpAfnte#7VDO>)(nr3cJ3Az+no27Qj>+A#iv%Wi!3%>)O zzcYFMRVI%(63K-W<^Aqq6_wzH@rz2pcqO=j`cZC)U*hze_Pdw)Z`yx~({Jm2uSNaa zdcVTyH|=*X^WU`pDVzrV-RuR5M^9@)vn*MFr+;S20&!2EY?SaM>ggyr9h1%e8WRHYsxme*LD~Xp}6P4p;+JC zu910;r@h=kuwm9*k9TwBwK}>V^3FZ(zLw}bWv;4dHCh@;Vs*s{jhGJ~TXzr?;lwEr z9&|^!OG9eN#VQ{=(VdqIO~Ncd%Qc)?<^h-2vE@<(=LNzFWgmmC+`BAKFcF;OQ%&-z zZMvuOSjFqwx)@KI-R|{|T>+Hr)nz#AV5cFed=brNKwtFpe!t;a{@m5_OL% z!q);l^f|5#iyi%wC&73-azrM~m<*r8%5P4>4MYfb1xwt>mVHF{^hv7rpK(|S;VoDU z*j|;)_I_(oU&I93x+&dx-F#~i&8Nk$r9tVVH#xyR={&|oH}S}@(z&jCpZjO#rZM$i zY-}A&*jLwFBke@POHR|^P^xZ)H`yW1(FH{Yu>`)nPmOb5*mkW@b=1bPUUC{=FFa4D z|Ahc4ddw)#)vGIe?5yg06B_^M+%8wBf%xia z)h8GQ=w|d?aAKVTu4EuD_9Tl4L`!Etj|G%`q5#8MAt>K%*i(=K!B$#AsHpNuu?dWu zhuFX#`D0RSa~3>D;E?ShcbCb6h~YYGC#xtAf?@=ZHw&*JcR@RZXU-pQ!s&_XsD?`U zd3Iuf56r6hTE%(qxsoUSAFtfwKDuR=P+OI5c@WK#SWbaug>pV}p8g%^Smv$3M(f4n zu$?=FM?mY`i>2rel)-VY?mFkUj$^Jzj<#Y?3`N_?-eob!7fDX1f`P^Q0!8t_N`oLw zE0^frs3Wm9xB8N?MMZNcbv{`6Z3b9=B9h9_5WI1@hLOk~++4hZCk6@%nmb zUcZ01lUm&%)h%SZ8bto3NL ztY}X?Q%OLDp-=J=mm=z5l)n<*d?u=3+KBZP_B&lSZ)e&|S1^Q~kA2KLi7_}*q*TCP z=m?r))oi^NWL7?5b9}qrXw>+N3eHK|>B)*r$`bD#>B(339Awo{L` zt$#{8PI*V6^J0C);`|U#*V}IWshRRe6^lZO3nuZYvF_J*dq=$*a!n?XOs+=W4&-uM z&P^(J1n`-1v4yTaTPLqaF#FGvI~;nLv~dp&Tw^;nyQaMP&)BF00)3rD<1}}2vJ>Fs zv~lDxFt#-`;V`nb=5#Z#ae}T1yV)5SS(!Ld8=9C|*a*^otZk&FwlEf?)r2c> zDcFgbm|IADIGCtT0j+h~EG=3s0ppdv1L_OpP`1ZmHHDOXol4p(jtTL&{vC<1}tP6lr5HjZ?EtRQaUXyjmF=VW1PLw&NMfuXIllOXL07fy^=;Ap=u`+q%G|Fffl z!moF=wmvxlr^}ueLHv4eM>Tgl6HXNqM_XqHBNG)9Q@Rteoq(8wiGh=?gPN`F?LW?< zlKH=~HsRt3QE|AK1WX*p_btc@Bq{-;%f%$bMd6}+zjWT7X(fNE{fBHkTTkq#>-~a_ zXIk-}YX9G`5%v3q2K*23exAI50q-WzWB@3zIN2Z&3=B*R3` z7z+ZyI**Noef|P2uwA%ty3^SQoNu4~sQdoe*B2msOb`+1$2PM-n(beLtPl)zpmOBz zor=IH=)j=76Ynk1aTfKDIpwF7BPVnOhT+iygruPZ0B9gaiV4(?oHR@T(w6=}FTh9; z0U8inwFhFXqRQ!D-;JkDFeKzhM$YaMqQ#F+hv2XgHaLif)@(pk6^LZ8hO|s@)cWP0 zVkR%5`iqVD^=BMplMx;1kD7rdZ7kL%;7Gp@G9N%?$>66Mb%I}}=Q=pI-hbGCF=Bs( zGOJMGA<-OpLi<-&o8;K29{6@PJ0BhD+Y1--Le-X?US43bnCKc1ngtosVm z;FY(?cr_`bQ6(5Iu72K8Eqv)CRzr{Nq1?`rieRqG?#zuG!v4nRRk=KLoIFntrS8`m zyz0|mSKpTisN1tcs7&Mv7+vXTpsD>bGV$8gmeOdKtL?G|Q}m~$X$9-}j4Q;$QFoD5 zS2yg}$P>A#bkufV;HX}Xro~8C7~(A@TBCVUg}oqVBQg^oT7>2r>bM^LU>BF3^A)MF zIG(%jqCBtQN5*Z!qE!zsRWp}A`Ouvr<9uI-AdwdR2q@)Z`A(kiVE~5$lBx>dl!1<6lE139BzsDBL^Uy6 zCMVUc&HSJZ`ViZcweU79@>yrBP6`3NkwD6!UYP5U84wQ)lS`QWobT9n`TB+O;UOFU zflo1}pXH2h_RBgG=oPxgmyI4))OxM2lETiXX;vjlZ>yGWJ#5osKjd&~j?1fON@|%2 z#2pC_kW^b`b(g+4Ykc!}P2+D*=)YonH2|f=y?~0@$BF z(f+?-(`otr=?g0G3gGGVcCh(Q-#@XrjFwoAr^?*^)|EE$B$c7~V(qS$R_Gh8ne9B{Wubp zK^=6p#EccKCGZLYeNccgG0x05>mM3cL z7`78Mh8A-u4iSPIR<{c430v1~*@HE1nOpQ=PY<(_F()9K#O)0lGx;Me^6yGzmDHt_ zXEMw7ZN0u>wJg%xN3>GbWMZ*8zPr*!G*DxjnoJkn<;H7C-W7$+55>!fK=Ij4svNT% zhqpE}!$Q`=cp_*6s>&~tMJ6`6<1!|4q!oVdjn>i{tSfYt+$q1;s;R)1&n09^1b$o~ zg9kBg!X-s_8>mX>7uvjP%Pe2spho9ld`UG zI7np>ODHO;Dj7I!$Y~1Mc5o1wxHz3;?DyE7<|EqLZEso)3>3ZD=hjDS57O+UpO>mn zNoTeCP~2vEl+qlJE{;Q=_Ws@?rFzUF+Gw(QXRs^h6`e&^o^hSHtFmF+%L7+5oEuDD zKFTv2ic(fobWBKePekivWl+(1MI^7p6^-=1uI$?<>J{zEvPt@kIW|8^`tFZe&x{t4>8YX4JkJPi~6FB?IaSg7E?C*1%={oqr# zCMqV7cJrsh@+6f8nD+s}AOz}30LLXADHMq%`V{8JO@C5Lf&w|o(fK2$h=NZedRk2a z6qA4rU=U?mV&6!T^eDQ&rrmU;PV;ujYkpE!_p~i<-Tk1V8alE!3CBC*D0duJ4Ydo zM(&E?b9w8wD?$GBUFdkMiYiRtTPV4ML@I60&w7f786PtrK+N1+CLBw7V#Yly?@f2w zXtU>((3gM4!Btq`?03P5XxfmaZdxi%Xa$KN{6V(Gcg=j~jfifq4CdbCm{P`hN(v63 z)u|`Ld5>+Rdoq9JZdHLv) zpZF5K9oH)@@pqq!p5-k@JI=aqjA-{1<=(U~x!W1E*W9%wcR76KHSd-pceaGSPD;}A zCVhRuvJzgb$`KER2DbW$d^S?;Vise;Hd|-9L#Ab;Lqm*fTt=g8qVrE<6id%Hs0J0f zza1XooxN3Fs6x>(M-IV!D873yD*EMsf5q5-@ud1a8;gFPUTGRyekt`mCW&UWef??c z=lg68`j`9Ho@!N_WEZZ*`NRRT}C5WKP&s8O@(h%q3Gv7Lo z-bo}v>hsp7T2Cb`I|8bak0;(uxX$VWgS5!`&BtGxFJ;jhRWG&^4kweQDMk@7V5;`L zyz}DY;-S@X)xICggs5fUl_C23Vg2K#?B1=?$LmZP0#V_2`5ROpeg(;=NQM^$wtg0;L2S{n7X<2nseBvd%e z+cj5+`zZC$N>kSJvQ1VYhu2tN%G7gV#yJ`FzQG5^DbETx6r>gsuM$L=RcDqYhP{3> zjLjJsB8jz0bbnQnqKj@kdP|Y;-i%H9SZ~o_q-jTi?DUYDLm`xt$LV!}^p1E>!gJvf zqN6(D9D>GzyhFO+WT&~`#Qhyc{5N4lUN}FGxCD@i^T$LkJ|2D~ub7wwH=Kt@68TGW z^h|qVK7O0#^;hjbB<|UIKw{2M*87DydZq;ubAF=zj}iB;mM0c47v=B71wjA{_>a6C zRCJ6pNT0ZSQ2=}N#92xLA||B~g`V_u2XbvPjLw{;sNg^Od|JE$q~@Fs<$@U41I|_7 zJ|qUr@Gpru3&X8fVrNPvQmr1PafW3~aG0}3L*n|!p2@@$$vm`fp`rhL#UXjDS4oT+ z?r$JQkfnSDfn=9%vBSCg$pb_222lhSHL4AH8g50v{Jx6?CO00u1tjOAA`1!6n&)02 zn4s9-%_-oCd6_A_b!{-CP*VW+ZCJsq^;b|R0w%w;Qodjrkxnj^oQ0cr9_JQJgMmnn zCmp>%12&h4+y51$FRY$foSvY&_J9`>vDgB;9PvtOiuK-MoKfdRPEI;AmW9Ebxbki{ zi*6s5s*qW>CBFn6A)AG3l);E?&*|m|E<2tR-f4=~&j*HwdzNz_@d{1R9^O3|yyYw* zt<+LaNW4*AzkZ-lv6yL|rQAYu{V6L`aCW?`wesTPxTXyb?;NMBYBmv?*foxZC>DF$ zxM{`_L!Fn|N5y@;2wZe}dwNQ{`1m*R1ox?)`ZzcjS50>>R$rePcAjpO{=GanAf?|wSchmD1&zH05iP~1Op#T)bHM6{vi)z(!LjP(VVev=v1 zI|eZyJcf;|w!1^vJ9~&@YZ_k5n_X|^eN`MxF}4uxNWs_o8hd=e_B;aFYIyFxAv;$O zI{NjC?90GF$dv6IZ1!~jce4W8N*u<5_I2+t5_r9a_u_0V*VC?an>Xbs+c6Nly&11l zN%#PCqvF6nH|@rkdmU>Hk{e4H+s7zt4JvC%dV5u`4xEl9ODV)AcN7 z?POUukbc)BOuXt`Fym|0z$yEv;;?hjaiXPcpm#7$8{5=+bH5t8+Y`6FN;`3LTzJ!4 zbL0I}E1~#1Ce0ho8Lf@KnfRND|Bi{=2q>HvsL?!Q2?D{7;h&70L@g z)dDq|KhgeUCZ4Vb)M)->y5E6rc8cm=FkEj96FABh-n9)hHDk{)c9sIos!Z$zd|6%VfqpHl? zu-iwSRoy-WFvzp6o1LMHz z`SmG+5(Zt=I~1r!Cf4BgrAEq2Te6v8llv-Dra=d_O~xh1*Rv%|%kfb^P0L`CDA8&V zdFh*#n90pU`+IUwxK!Ta6nk@1P4U6f+Fuir1Sdk+w7KxId_eWvYxsSU=&n7R6 z;)CWzV{Pgssh7buqWFN_<;8z!*-79x89V6jnRNLSRcZ^Kt%c*K47^%G&-@7P)N>%+GFCrTQ|C=& z!0R7lb+39;AtyT=?!yh!)0>fk z(I4dhRCfQgJ^xkPlLsmZ5#>J1J@~>RQBiRTp!F##D#jxUg+PAI)Gyj^O#MOoyG;G^ z-Z!TH@ZPVO`bGPVsXu7{Q%v>yVI=3QvI`i^zk?Q-Vm-eb28<2;)ei-lo-jB-*YiB| z4k+u=5)cA8u0-H-m;#yV-`wcefmJXLz)~?>JVXa-2$19INT8Zt3?!r@{k`$I$TIlG zgFPMPHvS6_!N)6_4OV#DT1Gjz3x+WwQO=ub0!X5Hb< z^9Ht}O@5EzhzUcxXZG{zCkG-6hNKCXt|&G$Y~|;;(agNP6t=L;CTP1gm3p<5=h`8@yd%$tq3-~C)ifbQF z-;DNV_8>3cNZwvD?O#v;OZ7DS%@Le5Hr9JUG1k)5)o)*QqRV`XU$5;)K#nQ7Y?VByP z=nfL=kjrDXX=4qfc>6=@i#mNf{IT2fEySOOJttZCZ+cdUE>LxhVT*6+J#Eb$T0vj# z8@)ScZjhUI^)txBgKAAFHfTU+(Dq%`%h9ESi9jdc+T2@5&Kyx{n@`P~9Nk@GgEHOBMGS)cQvm)HIAxqq1aFPY58%PRr?i-UYnaXv{t zC?}YY9}4{aFMTfbT>BRXzt{dYlh5A+qTVn5eDM8yzhv^c7KnQPiS|Fmi}ggf)|S!S`+;2v95)uwnfMgh4bS!zW7 zPU8;j)XLg;A!^Z;$?~f}^6M{}Q zg7LOme#QkK8~Eo_8(cT=TlY4`t19a5)+`+{XQ^+E9VqeJMeVwi%`r))usjQIhq;qI z`|QtT>>nKcD;!DjbAvghc!Ag)sMPsntT?xnxG0w-RFX#=%*o09D;!;D0et*K`UH>*O3nZf>oF}8h1Fc2OuboJst_lzE z1u%&qDu6IxC_dq)ssptcmpX7wi<_Q@z>>(1A)XI~i60;o91JqdUnBzvb)G3JiVZxV zYD|sm6S;*1WXk^CF2>kl(P@}H>2@%3r{`%;snI-5HkRj*mMx$UuFraB&XdGv#i_9t zkk7>D5et1)B9{!_X!bUSL1#Q=_v7%<)G)P)5+fA3L+8yG;R(Bni8GJ??lWjK7SGAC z9~V7UhBDXLXMr02Vfo|d%-DmbxjxhCBqUXaFZx??dF#WAV>eJ-Of)60NhV}zbeZ8g zEG->tDQ1O{Gd?X|AqZlyOxwCy&`U5XJaJA(mJSLNuE}N*4}uZuMJ*hH z35{+r-8~AcZkBCRcf<=zViORbA8eHOhFN2SQ#^W1BnVesC`SnqN8$bd_xk)*N^t4pzK(KXvgTFzu1G7Lr|1y8Z(inuvZ z$zHsok;m1M3ZE~+;Wrkvu|xuch9jo<6-e)6q_C9ty^HS~XswkMilltiB$tt(L6el} zTQ%kRaDB0#c8-ip5$eZW#cf-QpCX(0jHtYg035KX&_Azfc1O#zu%%)EO@7BEg@e3X z$T8@RJQEK!QNSm&@oWXnBt&X4UMyI8N(N4AMk|?uoGF0>JdNm*ntb^g$vzy2^Zkvz zHm<`b$-c2}fWZB7md~I|b?!CKhElZaVV73>JU)Xm z?hbv}jpA5Cn|OwUlycP6{;|F*o9BI3)3NL7@yrM9vWUC(UhjnJJdclNx9)Xv^cQ&? zKIq$J)%(+i{L_Z~H*H8MKHw^dI2SMu^MxZ~5}Z8zJY2k7l6-ukVxqt1;TJ714)YW3 z@AB}=dqDa2C-41=hhMZn`SvH;{}c~Hez0di{M=a|^1Ize5E2X`GVIw7Bd~vojPcdc zodFRG03rw*7Y7*_g~cPVBqRch0z8C1q{FA@Ij122Ls(!56aIge{sBvf1y3c405--3 z+L2;7NYoIMzmrfMy){<=yDDW;k|Cx^-rsRa7xo@kaa{ZL)QRMU$D))>A#6{G%k?Nt z^P}xZXRy5IrmlZ#m@)2%vd(pjqrdTP*Mh8)@+QH(Ec$znJN#9*W&*~W!s*3Wd)a+4 z)6&Yo&)F&!m)Y@P#M*hWCXT8rcblyCB-IDFnO*m1Qoy>FG)Wzu=$X9=J-Zeir5bM? zn_~H39*TkVl^L3vD4vO4VJ0kn9$BeHF(3%by`jHJ`rfR5DLy=!O1qcwGYHYn3grW#STF4w+ldHSx#H z3-F=A2?4?qZkP-#5vt8OzRPrc$~JfT(Q{3`o3gY%kI8ri(4ucX^Dt>1w<(~tFgK@s zOu**FW_PesX^?wg@ICB1!K$&3`mfPSt<5*!Q{31DEjwvhlH#&%1rh5M>md6?P%Eh! zOjTohXEVQiamV}0+~OU-H}g)h?~L0TLaD2^8B`woInJTEY2RaGBB99Gwtmnu z^PGW$tSQkYj8n0%!y`{)>x1X*Uf&Qz%=i;f~u|aryf}Y_spDb6Fj4mXI(U`e_PTRw)Jw4X%;5OJ*ruw{A71_8)xYBvKR>tFSvm2`@AE*e8&FT=7L^3^h;u_l zd4B2N_|COJIq@gj-{#f%d*A%vkKgk1`)d%@HN6XnI^On%K zbO<$bZUT&wnWTf#p@;Wl;~8pvjLAnH>_g6-eedFghQtr2DeJ;V6TZmb3UOMR!|d{ ztNIH9H1qiyG9gVJlca6}4cb1+Ak^k(_a%*G-Eg;NlXV)Bk7J&?j7YADRX$7M(lUtc zy{Qt7!kTZu5mgooV{YAH{!-zZl$|9;QKcP&rsys)YUezDl(>615iI*_Iw!cr)gN8N!okD8eN z9{N=N>@EJ;TRh)eFDsUzexYO|!PG5M22(0b@gI7CCSVI7vc{LzK z1_b-)f8J`y>W0 zx_VYF)=FFl&D~8Zol`@khg$TXH^>NUn5AdLt1%T4!9)Q@?>UvF1||&w_pBY&N=T_I6p( z5PL0Ui>uvDA?{2S>T+K<$n28wqh5@8$C7l$?4a5K3+qzN8;Ghs(H1VVDIT~kdo<=KH-dqTmy6bgUyRI!{Z*S)p#{! z_t2Gjm}%c)UwV+S)V(t~v@>fhci{8<%ja0h-wNgkI0W?pJ_a&Y0xt5vtfwaZz6W?HXpmS>enz% zQh7kOF>;S%yo~pB)#!D{u8r`>&Yhv0-K!}Zr@oo;?^GJ2%dKmJ*RKAd-k*luziQY? z@IrXGAYceUi}RQ@en~C~2?+=fKNpk>IRD81E5mo8<@%}iH>r2=9_LTr`vvtbwBVm= z|5MZp`(dUN0SO+sXZ%B$%^CF0Ph3@^f&X{+GyiKa~;xp>`Kxl9g@XnA&NBei=Ew(D1TzmhXVNdxPn0Y?2eTZ-= zJ0?rS&sV?%6sU47VRH-C6Cs%n%)o(+MyI2C%8(6xq5@0wlKn=O2tt9Po*1{XnkVH} zdcc8{qHw=v_VG;&R~%It_4OEW$^;c<85mL0>VaEP4`Ax~dnB-B9@@anqR%Ml_t+(+R|7BXyi!hI6f+TY8Iug>x4liK^l&~TSi9^0Lh z7oy(VLyyHYiS0PKIt$sj+R=F?H{jnUQR7+_T_s)6V;jhnc;2h({lJYhI_X49J**up zTH1FRPHY@g#?evt5ejWcE%p(#AlvzQB3QyA=A#uU?sfLJFB>8Bx4Gc*nI16fDpbWT zu!3cgVI9jHf(4B_glP>irttOA){(5BBi%`wiq@5?v_21{J4A9{b9@+4KOnM!u)?muPu4DA= zW-nFIGVZ+d(^!7JIIpLi9b$U5w7;+2!l zSgmm2AL_K$YUw6=y^4E-Q0ClGv1;65$DjcAJ=ZhvJ(@g5V~pSVU?4kEJ{G*T z@tcz>f9&3$e9>Fyc2A1??3M*5urx0zac1}UIQh8w`GAwh;(QVisKhVxMK83#()>@f zzX`sJ_kb?pPu}|l_%5_Sm+&Xr{}lLsTxJ07Ji-41_z-|x(X-AR9O7B^^6L}}Q0WBr z<$;7$5H2t|2?h>B;rpnnnb07g89fBxmIeIZj2_(C!n~?64m>r2Ph>IPrUOJRssva3 z@4%Zg9Jlonn$H+`=J9@>F1|8`?!KByAqI4O_d^t=tPC|Z=r-vL^_3)2^p?QQLl|a6 zD~;ioG8nry)whp(}6&^z%a_R?+j(gi&H|-`@*{6%F@7X@HPMvsx$5N)F zH^PJ&na56zK#jsi{Ys`CdA}Z3I3SF*wP|`=GNMpcdwdgCWzN_&l#Ib~eH?RQUXpm` za;^y;KUE_0c5@!w3Q*QG-9u-yx9Eo!lKBwu<6k1Tu|6Rlylu^?yz{2I%s@)Aa3Jeb zTLtepiLJv_FV}W<*URDp54g&_-moJrO_P$)5yrGgt=y-Y=JXmIqbQ%A^Y-ibFZ!sv z1Z0L>qS5tnM}62!ldgRimzRj->Y%aF5gj@iHvHqAiqwYQ%G0`fUi>%icxzx6BkZV~ zGWsZeZ?45wF5L=c#b(Hs8AL{vAw*8{Pn6PMjHQgpmKawcM+?ikjb!1v%MFPS3@6YF zPm7-}R(7qDz;jr|(Jm6qnwvl5`lz#7VM*IuF2nH(NKMNZtgAQVxIG{8)ML!rG|@C* z?4JDd`q|gZ!+BwFG)-6Kvc*-pva&2nSFc=pw3YCoepP4#zdVH`u;u+Yy1!7bRn3Y_ zVO6(W6u8bzcS6I%;KQsCQPAGRZ?53|q1GR2eWezUI4_SFFvD^2yS*qsFFynz8J`q{ zPf85>E4wDeeXa#&IDVr2ZEBsr2lNVm^4>40b*=?^g+I~$r>GV5!&*Bs5X=38Spy=m z5#hct3pi5vzsx#MR>KCO)qrF*0x%7&u}?Zg&4i1a5c!N-z!E$#nEBVxKXB9#Oa)L& z)CWNos83Qua5sx-0CM4dmp?jZURfT-Es<)kH&_mFmaL6n#dxM3&5*i#azxvO!~jpM ze{*VqS_mCOYN5Hp0~8C#ns0NR))kBVB`Q+>p6}Yc(xg3k<}w@&ZI*DJ_)DQrcvW#@ zwdf97SA}g>^5aCclb`4a#@Yo3>StS*p-MYnbHv0Ab0AN?ZcLGRrzAAB+mY4xCc@?& z7)FmvY;VJ&^Y&~5Zm!RSIv`a6=z#(0%4;yn!!a#d@$BpaF#|!YnET3tYc#CtGqASNy$is)y=+DF3;=Bdm383 zmGQ*-UE9=a48%7|4ZJe41{ET_6Yxk?joe&laCzLhawxsJG! zbL>P=#r;MoF*Y70Pbw!{vc+8i%y+B#qwU9P-jKn`Ic{A$I}94zQ}$^O3gY38%qcf= zS~HjCs?m8FlC0C5GP2|N`U(msYcfHWJ&z%7#U`{IH={Tf4vxOrFu&!H8J?q~2H)=1 zQM>1fyd*^P>O9fHRJ>@B=AIw!_4%(^HU$lg{^nZSAI|;Z+*i(l#YIISe>p5kF)kp< zj1xHgz{ktYC-rO2ooTs%RO<`2e6Rg&&YgeDUk>a0_kPK_bM0R)^Ly=oigW%ymL-uv zh)4kGzMD@03>Yx?c!oNpv&+5TPzTIS!eRr3MMMw|V9)RYe@0{Mb8gOn@+BO?Urapf z!coEDz=IJ0e-=p%5ySOKFP;V%2jp^pXV0#YZg~mQW@wfsPtv)f%qF3%XK3ocO3IZN z7`gDOQc)5SMFgNVUL}LEhNm{sz5}BPr>a~Sj!r4@A{NfLQ3W}K{c-&4il(9 zz>5j2YfboTs0DFLE`u-~u)<@SBt^;&y2eQHu5pm@M5W95BBFvW^T9sU4|}Zd>>K>L z;FI(We#S}Cv{fl5Z;q>ri$`(suC>n5y9xrw9@miIqDZ6VC7t@IiXjTb$TTx9+&z8_ z`ID7klf#nCOckr!0tGK}mwdB58_|*+9L*mio<3!aAb%L5>?xYjrwRQq)HaH99i$ei zIYBEnrLjmkUlhp-&Fy)AO{=5M6Qqy@UZfmk9f2IIxWyy&^1*TCSnRPA&fW(f z`I#VxNJO+q53R6Za6{y#QQmr@&_C6_vKe#9ZOC`nyPErvPeX5wWU zKBGH^oTjJ{Z|(GV7{^-rxg6VwSoh(Hct7E6i_4}ohpj7P>bUl!29*$H z8oRn7-12vaOZf5?b5$uX+koA9I_3=_#UPgtt@CTgrI;@TBUX<`;B>pCDznS|?@qb9 z3Yqn}L~nL0x=U$QOb#n9OK$i~5FJ`nXABDe88rDbWBIRUEP23EoZQ^sJRH9igkK8E zB?<;&NyMR2lD}lz7wtC>_k;F#+4kkVZyxT4_kP8;FWPS&?g#CEifs>n@Nh`TfJr+e z+t)eDvtJPq;oy+~umSxx7^JVB?0jMSESd}ioc%+>rxK+WqX7m@(jicw?szs~d3NgJ zFaHKUJ0C$MiVIX85%2)EIhaIkMi%#cw-qn3#sb^F@TT^9(CknfXd}!3EVzqO)NqdkD9G~1y;1|8GBW`mU-0?INE2L z?mbWP@enSFGRZi>(7=iKk(xg_CV9fN+r^b&rHN_`y<~i9sx;$&XKiX|C8%pRzCy=< z#jDpsH&dEUSfjao%~o$h`6e$eukFx{i4y&#Qd4@fYMpAQL(3@g8y#a0PCO3uZg;7w z_@0sC+3gRz%1xM~KlLqg z&>zFv4+jFpl?dOj=Q3@>PEWflrpx7n<-@DiCra&VYIg&o*zhxgX4Zz8lY($_eKZ2$ zXVe28(!%(ml{_!-(s`PVAq(!w!&XW#+}@83C8(RjmZiKo?+urVd9~N{)T&{*U{wEo zLf6T56*syI!*dc@X*;&$FGGiO*6TfP3cR5W zOTwX$d=?MaSw~KkQ$hl`M=Qz;=H=m);^O-i7caEmuGjvc{Y@@jya#ahXW#Pk z-GdA5U$^PM|L^#}!$kl!7eD_`T~$i@VOI_Th%y1%Xg{38MLxeS4|hh$uhW;nLLEHJ zS!5>&>+B#d6#+6eAtMUd_&yC6G{z!Z+7c*l0->G2KqvZzM+6c+L10+G`B4F>oe(_W zbOb#Tfw4nmRE7k;Px`AKF*TF>;-+Sq<_v$gfyxH_A4PfuRur;y^6@U`MU$%HUCrJ} z(Mv*3W6XTS(x|Cn7KwxTgm&4_hVj)Ui&q0Rpnz5}%ol>q9o9qo#gBF5q7ynVy(xK| z*e~L*edV$J5!mW}YijkPdUXv6Wr?3;UFRDrty~F4Qh0T2iI<`+fm5K4SYvVxM$LQ) z2QsNka~78}{NzTJ9>)a~L(y-bE5XEZzJCh~O2RJ|JW%Cb1fe%Ee6f%<-t zZc?b%Oqqy3$9G-N@=lm+ACujN{WA~yiDUYnnxIDlx#91axg?fIYl#zY7-(l|NJ^^v zHO_Cgpz4rBVz(;z!4!ZJ`ed+Oq`EMJSzihr8kuUp);WdY3EQCF$*>oUR7H1sm*Hl94TtBqk^#f(WD4Uwn8djzD}@%(AE#IDoi- zLt!9y<2GMdqehp;O$OzgyB1Ve8zm4BnW>l)5mBEqX{!V?-G6+`;@ZU)J>=ZrQd?;b(7}~Gs+_iw$>kIL1SWVC`#W{tsySBq3_>+ngp|z`zN*A#R?Upsxq`CzKmj>EuE zHz4Pp$AAyNkn`*=Q6Zj9oj4wIVrt(N<;>ykFp8DWpk(c|Q=?Pi)k+St&!FJdq{JE5 zdv}`_QsWP#rhA+y)MH=olkbgKR*oA@mhOHAxtG(q?+$#_oHy}Gd-KW9z{m%cLsN1) z`VVRU41NBqp-%{~g)Yv?^Nns|-26Ne5C}gH6fDWlFZs(8O&8j4bo)X3+oV1J7QjV* zA?*+E{lbA>d<)>Df1>?Qkv8TB(jxz3Xc*v2;Smu44+@I}M06s4wWl!WCz=4(o{{#; zi6-EJAr}g;#}Fk>t8NM``vGfxNQi$OJp`8h04IuYHUtA`R2_VPaT()CM5JOd6B>fe zo@qzZzcaSOoIm0QebNnu@Z3-d85+HOTT6o1{nQUCJZ+{CTpm<$*QRol2v&mAiJ`k> zCpjEJYNikd5xK{7j&o8{Gn`LuE+N1Y$+3YA-@;Z$w3^U^e z2?O;Tsb=TAF-YZnmdSN*JjG_Dz!VgFUWUJD;v{_Mv~UqgzpRLNU{Cf|+X1N_k>>4t z-HrLnW4E3@!|%UGCOiZ|hr6mc;U_f|50|@*un6HE-b%B$DrW})sqP0LWUy7=>^?_M-wL%RlBc12}<#e zT2j!r5hE3li`z0oL2EtSdJbDdNV9M&LS^Odo{0Yqu*#=rn`Jgx*1~dL6Z;!U1{|ji z&S+Q1(1)PY6@wMIa)XnFTV>N*6Q%rt=;Nb$*9VoECx)M<)P8hH(dv8g5f5$r#1@d(=sRo1Xx*qimoQCZy1GgAo5{w8x5%0{J*ymlw{_&;_S}0bVpGZPNK4#jJO#o_oh~ZQi=Ng#*R4%f|YA}?DOw>(A;yv-tP`PQTWi}2zH`-*>Lj@r2jzr-$7bj z3@XVf^%vau#6=~=rMSewT)>Kk^dqA1^0<_=1_bW($(f$Sa z@3sFaNGAdi{o2m_Qqcw0GLX)V`$d8G{1-%|^B}b|LVsID1Oe%tzzxMOH=XbZKmctC zQGm@1Q6DkWXbHM3i?huPSOjD^H1w}e!2lsL*l@r$qA@Tbgoh{!!A~!K)kFP+#*|ir z004HR*!`$zD4iz#cY&Y5YN%n_77s-gV+ItizG%0m_v}n$x!lz@{BGHp9>+>7!^Nkx z0zp?%K|Vn&FY$UTurS$-&WO#c7K1GN?EUoZ@pa~9HZ7!rtBx73bj;&mxZjGQAfxcR zPZe0$bmscjkNueDgs#%idJ2E(zBP;qC0`K_La&=e92KJt1o#i(nkb=ka1PUU4! zUX_e-bk}tYVK*Ke>>YTBdwlI#DLzG&He0BZYSC`9QWqy=#x&#(s<5G*B)oB$)BzrZ_gupGo9rs47 zgN$7M_9bcgcy2ZeTdW>r#4>TULfx0O?(n|x(T$5qSj)ASjH*@@Cm~UI z+>e728f25@A=a|M|5T0}9p*J`%k`Hcc1Rfg^gRs5LP!>GKh!T0tDG2h7|a`~jmtDm z5iQ4s4;QE%vCNUHx|zEz`0F`#IIx>eye~Px*sJt(shr{{7KCw0rYAu}!YpSS3=qA8oT%&qRzM8CIUKS1m>i4CwBCDy5EcbbQ|6DMcwVzU_m zWn+tz3Lsx^Sm2Yp;IYxQE|Kn9i%Ip=*%QmwM|Umg>L-PzqF)f#ZmH1cdm=RH9HGq9{{ZZgXEP-fNaJOo?Y%q`(jC*A!FGSr#b>8=guP zL6jOP5(jMT0|D+>{N3Ry5$kE`29w+LF45Na9?Ej+C(P)evndYnJL5v}&2Ez=nPkj7 ze~GXwzXJ2ZQ{XjoqMn{QQ{|`0@L-B9n;W)=Jynk->E{_7-IK5nA4RvnIrXnU5bFFm zIu^+DT*q4Mgc$cRF)B`8z>|R+#g08v5km11I5EEBbkRGExmi-l>LgiRB7Dt}Q>lo^ zC-oS-ATHR&196<3&Dk5|@UXR*%_MA((2Iq%0!ein#UgNh`n}WD&GGPWB=H5Bil_R* z@Z5KYRe7@R%adW529H~%gt@&)E-#QC7X&|EBTFlTgGuLo2M%I_*%E-15#oG(6Z0)K z7~eqP`BsKCiJ1wq6eaPCSFH|_k^v6e65Tdf#l#b6x^;6Cqxv;q6ym(cu72io&D9TR z2piu(Xk+!)#MA7r;|D)b-%!B_U=(@VJb$?Ihbv#W!UGnC z0w;HYplcv54QN*Ki%W5eNl9{wi}69FfbIETH7hT)XB_xv?Qe4B;yobf`X}%Gf-4tV zAn5uh+W#I`{!S188$eRp_w7pH$~_|dS=2Rv7a%F^s|1+U!GZ&>+@GytAYGif7Zo#x zaM7XwSMGsm8K8Rl?M%aY`4k73WfGpM`3~xH9N3YveP^?or*vx0_e~xQ5ZHi2*kH>96bCFF#tfbWC7Eju zNW?1mFkl76?q_n5U%4ui)^M-qCL{Co+L$w$qNfTTtYWSh>|(Q)$Q?u)AMeOyrnMKV z;D_9_>kxB!n?d4JZSZ>xiMfD)4!D`wihZ8cW8C&3lTarwJqum9wXOf!tE&tUW{DaWje$3}4PGJaWd`453XUy#6TMAO_1-|x zVFbySF#vf4F`S*i^=dYorD>l=pU;ydR*BafGg$$sxJ8m{Ff(+aAr-o|4DMRYoJQ&x zm`&s|GWUB)yT|pzx?Oj39Bb_BgJy3yuMh6I-L}+HVa_gLlXm`;me6LXiPsn1-e_DP zW*HD&%h(7T12K7_-*Kw*kYPAx#tlfA6pWjB;byiMulXu!Az_C9}jFWQJ z)oP353QVjDCMm9^D9k;+W;n!pq*L;iX>Gv%4`=@j%l?~TS)Q}0STUY6|8~wwJ}wEc zBrqEU;T8j8Ys7!K2y&r4^KbvG{cX;kf6F&+|M)FG9}2qomNWnM&)@Q&;%v}aD%)3R zo);?t%mRxbzXUB3JnXk9x3fk4v!zEMlk|+VRH8HlU@?d>H5ctUXMt^yzw%4ZI7bHTnd&r zBcpF%=VE2Y+o^);34Owxpn2ZjfeIi8_SuSBNdlhb+M2v9n{(3g0Hm$E(gu*WxQLZ~ zX>0s8S=XM*E!xqCl$1w7Z5X29Nbkt^WgFyosM>f3axwTeBt0rg>bKm81+LZDIZxBx zCT+f?hSf5$o@|^Fr|}v@$&AQ*oyu>>C8hkOqx`$l0#&@%D5#I)a@|4MV*C_7 zt@q=^y!u(?sDtTvp*3+wR$XFAsZ*E6X08)PN!3- z*=&3U;wUBH#laNt-b8bV458grYN4T_?v>zdP%d(!zcQXoDYhRa`SO_kUh7z7*wJN8 z(S<@*R+ognNZ!vNlE_c`%HgFRBmQ$wh5N{jv+|pK_(QlNg&0^j84kTZgFeQ!`Rgfk z@GM_xc!;(Z^318*v3kLPBnmvFF5WCU(fX;(kRUXnp*3*-#C;gHV~!`**(iOf-#SrP zyq$c*x-`aNiFlMa&_Rd|!Y@%8)4|Fvp37xvz(SS=)@H4s2PZJJRHMvUkgaqcmDiD2 zy*%+-5@c9uE*t-d5^cK1#Tqgl=#h~vkl8sd$)|*Kdh5+hL5Pb^a{r@;2_(l88dh&g*{awU5msATt z0xX0(Fu7X&tPH*)_Vo)%JZO7Ce&U6h#m@u-X0|P@`(95zBlA39W>XYB-<=_r`f|ck z&=eLSp}y18G`lhU`aUF{9edZi(|Tx4yv@rGV<&WM9!3eo-a#rR@r{`RWeN6R!lF%a zNr*gFCluj(k-3%P?`Wt!a&;IQa$0Ajca8b>V57@&&?Eh|{`xLWJV(Kb;9SaSb9u0Hkq)QY z+AAdo=WB2gNU#BA!=f1-z7yS6k94N`2XLnxm$Ew*WdtU1Z$BNnQ7($TA4tSC=3`FoGDKy^ZbcQerTBpb5c3*C%8o{m2DZA z&;t;1BgyG#wkFx7k#fo#@PU2^h~7>R-viLF`;KPCXOO;UHDQ|Qa<0(Inr~Piu_FUT zEBw7{TwD9V|CX-tTw#kBO)T904ghKaJL|`TaU#^P7Z>0!$l8IwaHS!uW$ETK=}8a$ zol2>FDZ2i5TbOs8K7&FDV*4!Y*A~3$uN;D&tP{&tbF>{UaCe5kns>b>U+lZT`*1bn z+|Py)#Bl~1o44IYa*@w6t=%Di|^Xg3; z`pI4kZK4S)z34dp%uantk__j&`({h#?q;RCO}@$MWBHSRVEYHQ{|>h2yO!U4peQdC zA}IzqT23+Ga3c3F4?^*9o@>8(;UBcW4cqhgzSXdQc<-06J=cEo!ar#LQ?Ly@>qq|G z&!WH}ApOG5!Xg7_GrmcH*;`;`1@N;-*yppifSWy|Etk)?y7B)Ong1EKQTPPkSB<6Z z1UI%P5Dxl;_{L1x6iGcW8SDs@CkeVhWR-r7L)g7 ze}`E^>hr>}LVLDIbU=$-uo_{Yw0||u$HgOVNd*16TD$1HXGs|Fk5nFt?%;Wo!qULO z&`g*e-x)64Pspo$7@NK8iD z*O(X_OjoRp$KxZVdCaP3dvQeBR5oE0F2fyRjS=ZA3RxFtXx6B!zs*uyAvR~*?hEqe z67U97&s@g`c~}}A(3BAyELJDJP3!qUtK|g1cD*sKK3TSDA;xLyptOH^w~%y^yQ-?K zZgu*YjKFT_3Ut-uxfRi|`|$HBWov8u#ZQwdOWcJMHignU0uxqZ&z^^u<7`)sm~PJ? z@mznbjdy)p_IZwP*U%TxLZ@zIKLT?FBe067q|X^)5)#IS>GE!$(>A0vE z&*_JC5*+PSwTs_<)K{T?TC^^?eW+gg=0*Q5?&F=6suNtdRKxL9Q8)8=dP#bxsF?PC z+(lIefj!D=p7NKFsg+LjO!FsPnV@A>Sg8PI9niWXXh9Ov-pHYmuI+C$Vz?~&jTo`% zNkx>_EzDp#p9&o0k9`IeT^$d0eV3Gf8M@opY8A?h6FlZ8oZr_p7vnTtS*>zU(alfG z8e_(Z&=S^b@siEuBd>cqY*-jBI&o~BZg&X?vSNed?!|UP+EybmYEsFmFQeHH2AlVZ zD;MT;G^K%X4Vq+m={{1BzOIfuyi&Bh2FvwHDAYk!lk7w?@h@}J-P1z#_;XMaxkXYGHAuK_=VE1)3%6J3EK@L$n|6wtJR{+KrZCSv|8lUxLqky*T z_jol8Bh_)xSQ4-=!Yj%KKe^%(p%Dw$>jb%_yX#f2kgWLt*uz&+FsE+gAZ(;YfPty8 zTd6f1UxRA&pGQzDE%_&~i5aGZFsV#R#uOmN z@N3R>)x~!5(bB}!G?y7K+Op)*^ET%8Uas}cp;~M5u-ue}#W`w|=={0rI0o_gN!6soBF<{s4FWJcK2m47FeF{jI^69-gg2`O}t{Tq$jzf zKjs^Y5sL9=p=({`z8}`*Y4xLX6{G0-r25Qf;fkBorkO_=hirtdLLnnnm6ddWeVDe zfH2W}By{!z{bhol+5?m@D2xPzvypDOFF{-s^76;86dN2KrG-6`xH;@{x7XYxNl#&c zz4&?NKl9M&k3DGR&QjOYk9+Yz~V)`a$}=X%0!XO55mWDx$1ObNMp!gLXQJw-Sg-rDDx$ zD4CLYz}`eNF$-9mumO9uS!-RvXGP_ufaELbQ0#%rAl&gg6tQ`+b$joRvAOliSp)lh z@PP5Ck5(;WiODYs%L1sc!&rR=RYb4Pu3^M!Ru=so|af2k@voQC=5tejPq4>^L*|l)joGA1JGx0mlvQ?3`C>o=1~RZx=fNK>R2RzCE=wJ4G3{4Y0iO=azSq5wwL} zEYudG=GtZP1T`;~(HwauhE~+-vQdOTNRa#92L#J}&zGr(R?K~Ybc>9_xc9U7ip803 z8pkIv&7%gG>c$ltr=h50Zb-0>2ob6p!QwyA*4$}&&f$1mR&!BmCG1BoIe74R`juM0=tHsvB zkK=D>wzg>s_pW5XyzCI;zU1`~mI41$DF&6lBh{+mp3D0W9QMlsR@Fp_!hrLwJRw(E zn0Miong9^|R?6Cmx{1MH+v@d72ilrQHUIIGk$CAjmz7n-L(NmR_`0lv44w=<@!iVS zPZIJRKAXiRBjkr^s>3yYg#rwV%_ZZVUoFs;nV`>P>kt}ohe z-1|ZM+YCPcma|UrPrl{n!&4XEayF#=&)WYKgMT!`zy|4AsrmmO2A|DN{bilcW~a{F z@cE1~B5=|Yf(L{t;j8^HI`uEiaOIg9)*s7XpLZ_&VulYhxykE<<`gF0@lC-9)i;Mlm zrI8G|5(7-!E=*r?&l-9ZLDQod=+sy_A98h#(Rxp>?5mOXhlyi29Cr8ZBn|JN>Q=xa{-VR!r&;5gNcL2p(U4!o8;XbN9-5vHiWV>^8Cq0!;=#pZazxD&eJlo9^?(M=!m-Tp!6 zq~us;1CbQD7J9F)ZjCkle2hdio~}_tvv)XL*j$_mi?F!xjWE4AOsz#LrEEDeL1u~x ziCItLC>d1_aY62Z*E1f%>l_Ts-(g?zPEPmc!&{fsoW!c4c6~Wx}+T)`g@-JHj6ceGoCHgSCwC!SU2LBfCzt zVEZ1`_Bdqx#CeoPtEqH9ngzFa)DnEJ&xLN?sG_@OQs|M8T+=Dl0&afUt`p(CWaVzs zgQG%Vmdfy*Um*j2VV+6@GC>?e8hPcS6K!~FTUcfPb_fz28*)E*9}_uQ@2Hc{kF3qV z*kfSK<8i(4oJ-#gjf|z-A>J=DRpsq`OV)K+W}3D#&)9aEmH+7;6E4E=XFA|`Uoj<)^}dv5_2<=%IV z4&6w%#L(%G!+?M@4BefIqyo|nq7q7jw6vg<64E6oARS5wNQZzRpopN9o_i48+wIox z-TV5UbFT9~-neHJX8pNwU(Wii^(!97D~S0^{(08f>4E|}wr9Nfb1{6N5LR&;xp~7s z*f{dwHyi(E6m^X<^6__764vSL{D#Jw zG3t-^@+&qz!v3MA|9UU~7}!Dvc+a#I*wE>P44lUHk9^aZ5pmB!|m#J!B}_d)Qd>?O%nQI zue0?#%eFar8G0VPK#diP7EPg%VV}j~R!_jZUtGLdXegx{6 zX9bXsH zZklMtEm?^;ScrS;6Ww&30hS4-FV^t=ZjWA~=FyZKcxgfXGi%ufXF zvy%s(=LoGAQJZ^p`Q%CxgHTU(ugJz$+VWImo31NEFpsZp^qaui@YMO>d}<1*y$`Z7$qy? z!kp6gsHpXp`Q$A>>c+D*^#lu_6db6KT~fkyOAF85HB7C0dYd^W-5*y+j`TL(P;V{# zvpa467kBzal*1{MJ57G%PN!MeNO3b6nFykFSU$5@oC{(J0y6&Xi?P>s5OGNM6v=-9aUfHeM|je&u} zxM-ND8HgA_`!2w+#}L#uY*I3eZ!-|7!N7Q>Y#}^^g)q(6#v)8$Zp4@Ci$Q%Xj)6RJ zEEp$1NSjKl3=zi~|JT+co#=G4{0%u;{Tay_*8r=J%W(RH)Iy^Nw}DFZKIZWCrjU3ngZ!JETZPYG#%_zbE8By!!c zL}tJh%f-c&wy0EkjA0td>|1;xbP}yD|5bxeyR-qn^1~W5G%1@Xxgtcg1IfGaAdbg@ z7gzCo=v;4^@V6$4#xo3HvP2@h z>NDPSfUQUQ&j(Z{3Mv|QJM)pnebUXf5M^&i#{y<)fSRKgj6ZZvvy8VtOetDFOv82a z?RR5I+|Q1nANw7$0U;il!4`SO+hA~zC$VJTFe(HkvkbDclmCLO^R-( z0Ge6?^HP{qP=tVCzDgu?Vwx%GWu3_T9Nm@kE|`xo;b1lhnaf9PL-99n=kL1MCw8;z za)goTmI-2Lg2ENgbUyTG-dy5!`qZ+kAYx#-(R(A8L?|_LWWpzOhEO88j(%z{bK{VH zo8ZLzd>ZY0tpmO0z__GG3<6h%9(@M!zqtAQ?)>vA9_qD#%McxojXvVMfhwsAG_{q4 ze%p`U>)p!_qzYWF#!y$95g&qUH}Wep5V`1T`gOrqQm?N(UG%I|pweHqH=?B1<`eSN zvhCpOQQhP*@O=GbMy>f-4cZE5I&Q0V(d-6sbVIy?035Oce?oBq>G`V5J5N;_Kj1; z1w}+;Aqc1l1TH9#l!yPysy@b|g!K^z{($|*e0+2--#GP$^M1+4N7!$1#Shs3Dn5?< zaZVFJ$SAM+Tc6PpmExfGy?sd-qxkqwGl{VPItJDSkbjv;e9XrH9ezTNFWK1u{|9o{O?BG_c%M*3pDy3DP(0?t%K8@$&U^@vpS}F7HW4T({^vqq69Kf z8J(jJqI+qM!876=^_V_QMsA{C@Lio9q>31NC^8P>mGO|AiAMI67&l|s z@>tv~OPDoeXFn)ZeqyH*iHQ#av!Px8O2$LyR7X5N^|{wIUVz=~KJ0IdTCq3UvX^}S zJsA%?axrp0+-h~~cqC6A(=9D-6}HVje*ZJ5xWNlK))i(Ls*7G_Mjsn?jq6zg^OIz~ z5Zzp^mdG3n`C!O-5@nqp8e(&5cn%>>gQH|z)0&b0X*BIc9>-ZJ4op$9JGy7$-#>AU zMx$=u9BBl~gqIGRh3u>yI!3eDoUc7UI4%N9cjSLQ8{ zaBffz-Zk7nq>?68?SWzkZqwqa(Bw7&GY))Oa?DUHc`){E3{`mFDYR?EI9CNtuI^BG z!wS#FGzihfKk2sfGjUjAvM*UZx3GTU<%rkHi2}o`x#BH}`i#+*C-y~mXG_;5KZD*) zr4Sjb^P6aAU+JXo!B2sDUi6TTC|plwhvwOiI!_E(@AH%M ze#OXNu)r$WpJ0D8^8W=!#u_1r##%kwX4{_QwB3Mn05g zQX7s@T?P{PH`X`lBb2u}(dPyEwce9fwUXrbP%pFWSG*v^} zIkUs};8-6M$Ai!c66Kkd_AFoupzwu{`!bpwQ)c2Es;b4cK@p3z_8O{~&lv%I+={=1 z_4Z+UTIS=%y3erOAnm1jV5U~9ZgTTwYxgzmOAo{YRfFN+9Ib2dF*6PlYG9@tE<< z#fvD$@p5^ftFbYo4?e>NNsD71v^fAng3Y*=ay_NjI_)&bxeM1FYHs678@Yl3_g#9LLf584@T0T1Oj}YO9d--`58T#et_#;I4EB3#Pmj9J; z{eKk7{}Wn{rNjYt{FDK-e591Wr{$O5`PN}5-&(CjO}D5;bCu`5ik3NMvv%yuPG&(H z$P+@h2m}o-jq-U6iN6)fyWVktP*(i8P=5Y}ma}r!myc-q-Q-tVKK(0N9x$EmopnqK z6Ek2nvc+PfLd23D26BV!8e4oZoy-3Rv@H10{@gD86G>zHuGIdS7bVHiqGcgkv%1l; zMt*x~hYME{|4hpZ5%eD@lat?M(tAqn0aezdJ9G5l=Yyq>jNXejl)s?Fw}{dz>WC{K z#SbMnzmZRzr<%zp2j??1$2ZN9@3}?nSqrj(FzFvSv0fc37-ORp(CnMUQ3@bJ7Ca|m zI}~KN6U>bAtP98;OVi0YIP|B^ybG5%9vVUujM2pqHy1sOdna~hnF(e)4R^+ff9KVR zJ*~#qo*Vo8-bCmF5qG*czRG~5Mec~_s<)Nc$wX)z!UTeaZ-ymv=R9G#0Yc)xe{*Be zhf$05$z5I*U^T?GI5{<4=7nI7r#Ma7ypi!w?iuj#=!WGWlQGW><57ay*tCLG_!t>2 zfH@v(rxM(>8<;$;L^;C}hIgtbdZkCt4mWm;KkX`dGq8Ni@QSj_b)F(AhIXbs`^}c8 zD3#m>XzI#z2o8 zlo!$Rix(p`HHPa?g{E$_~y$p1Q(&B}67j zI>QC*J>Bt}jeoQ8zhPsDuqaeaP7J8a5)(wFk;Rc>P=u_kEK~@N5E6v_(zZUv0$ol& z!Tv)wK0Xhy(0_8?FGTV&7O>ENg8i>zHe zD@Pk^fxYb5q!hpeXfPEu3xbtK5N=+^CQ1u58>3;MQqteD(I|zC>NEzby0Eaplv+Xv zphMX_-i7Tiy~c|*juLn|`sZ$fr!rTKo7`+tWD??Y#x0#r#j8@DvwwEaL^DxUGgYgV zIXRR)FVu#L3qejp75dmYt3!MwLgO}lbfY>$Fx}wbIk=Gh^_JWBb|Sfz-|`3wPw+ZeN&)pU4x(QQuXPY|ZIqmVFY<%gpNlEJ^VgUvW2HG3G?}F1`P!-+79GAFu_tj3F$9}<1 z_OOyf`Jbx@CwNnO+FnNBO~N)q`r4s$V}}bho$6Y;uBW2HBYfF+4CLOF zSI*GAfxvv+BGcHasI=nr!)r|R$ZOOdmb%ijPHg(RqF>PQf54l1`*{yyCN>?B;JTkM z2n;^9onj_P0FjL*&>4;oR9eua_F{8z*n6s~y$L@rBQMN!M}VftQjuATv@=7Fei(5t z&MEuTz&)GRUeR-FNy5f-&eIo*I(4Ad`>P8vOX}FfK@z6`)rZVFq+3^$@CJh;&wDYM`AB=k$ zup7}+^ z*K=(osIoMZ7jtY1o!|O&3x5Ws;VsW^9b6W--qp`qqZQyY;HE6N&oug4MZX^8?-I40 zUlUCc53^V-H>-J8Eq_ntu)*t1E!B(#PvTw}%(TfaF}){!!{ey}uAocUqTgZ+CeTe~ z#^+@Zn>}$%GP$Gnf*|1w69$VB@nNB(eu6@JdbU zVh$u}UY08tb)Mo>;G!5gHBqejXW4dQ#MPe!(zMq7( zxSK}*ck1+xiMzsVW%_=X+WX0gx2&?=ORk$f;1)09 z%jR1y(H}joY)-u7F@(4yTUprt3>-F&oHB~z8aP8IJJ%1eU)y5Zm`6WamUx*uiPJioN z&|`|1@7_zqOZM#WQzNv1&Tg{vTwPJL11%pA(98MH*YE=h5c8p zUJmyv@>v-`heQ++AM;D}g~vaGus4_%qa7{HV^Rb{C`|Pi57_gVa!>RSoVZi#UmN29 z|2b&-hBuD^9`r&m)y z%ay5wAY*UNv^KIZzIxN`J~v&V6s2d54)X&QyO3c#Zebm^E>$K0X3Tg(G>r$WkF#qS zqcd(z)Zb}00WD5j(X1$yd*ykcUwd(p>3W`8?>T)jNITub3Zotacs6^Fl@^U(;l8hc{z>F9W_2_U?wHHOLG4G0^Xo@R8D zzxu}f^uf8SS1WEjO0@pe95>zO9BUk2cIa$M!I^s>S)I-O+w|c1g;|?1Mtn6|g zP1Ic34^Z1-)g9d?bFI5PaxA<#QNnx9Z|hTS;YOG1V#2J?8J{(E_aIPK7)n6ejw)@09suc$jWbF>yNYxiAg}<^Pu6zoqxT zlitEeh&<$*e1-u!94RD^0Q5JordJ&Ks{}Sg=m?A2YkwrYf584@{ysYIn|%J^ykGM7 z5%!yf@B{Y0iob9Cjb)DcQ_CDM%z-lRuYFX2WsXHgj*Wu`NN<#5j>}4eCx|%K-YEJ8 zr1$qDNl?-oFwEg#a>^seT+2K*zU;5`y_nw-L21dwE0Wdoh)>;c5s|bvLLli#V`^l; zWXR{JS*flTeX*ZwfRmL_Cyw=ouu2Cyk`F=*rV-beXmDap?j%x>&PzWs%@JKC3|P&& z5lt_Rugo-z8a=h^Kn`eC-QFlxsG8L#CJGvxMMiC$L0dw9kKMC3(mAGCXR7fN3s+19oFP zXF*M-L4RK4@^dL1@1;f~zWmG|wYSxWPPN{OES__h*czl+o;|J9qKvo`*VDeb>5zI+ z$54j|VfohC%h$GqrzL|T36w#)pgxnpjEfJEec7^}aX)j^t@jQ*803>4O7|>$SrT-O zX_mX3V`0)qihy~qDhoW<-KM=vDPL7Pt!UN-zr?sg^BFX9rD=+1>b};qhAXo(c`5hC z7Z)k$MXvTGQn>kidK5zVX|?Adi2Xk03b=~Wa_?Xze8zSk=y{^^^&X7#ND?q*-@hCY z>{$6|bK;TzNbSnxp9mSEBItp1(-U4+au?5;uQ~OC zA9Bcj^-|FzMc2cBA-y$0pwDv{r!Km?J4>88<>)40ZslZQEnw;7aLU`<`IMjl&`l79(udB6=uez?Kue~MA3M_+q zua@w3aCWeEH$QG<_Lc%49WDV-E9%py05U+m#NA#B3`c!eW1Mi3o`a0hMMzwp$K?5SN3BLEyk(PjS&-Qui@d^rzT=NZrTh3H|iEUr_fkR`{pb z{|t4bf4eY%-(g?^j{x%lTnMlsHrCOFjg5nYi-UuWhlh`khe!DRg<43Dg^7iSjg3b{ zfJZ=df*80?oH%;X@e|>fKYfq;_NUK}L8Q1K3J?Vb8Yu{!6b*wE?eh~5u#6Go`@}XD zHZBexsvzxaQu|0b1NVxJ4zx@ITa2;(+@ghnNlJ!APC4+U%@YFw1I6Gjm=sz8LW1V8h(I>1w*z2p3t`H?RGvxUa9bNQYN|*tZ|hzW zl?`*f0=IcpG^MKz4v{nHrzYdFnjl5cT*KsBh7e-r;zscp+qtitD;8c+#KWDP`^4F6 zL6v{DptNAZ_U?3jATeeb4IAk3Ff%6%asDGXufrx60{#}WX!yfnkrnA z%}Ddyp12%Vty`3Pjyf{I+DlZtgKGVJ0p_wIg*eTVFj#ON^x~!+$@;~yk<9Ce{XI*9 z201>&E`xjvNs@hX4Ie9K%sDZtSkK|9YH)nUh*1SGX}E)mmz7Dr#o(*cS;7nAnXQJe zDiFKbn~+HB2D7{COad9^3p5Jd3`nAl){_nUVT%h{37tz?1v~rc0ySw@>K@<27LFRM z+|GmfYT%b8`Pn`+mx*b2)O_7@-JSXaZrR}tqP6wqQ?xD#^g52?CGH9D0?j72W45;2 zIbUCXH14l+IeVp5`h)+{q|ETv{<}r=o&C%F(0I$=a`d+x{Wo$H7=|e;Dvm(aQy*~} zTvS{f2^AL;go+8uLu7wxCm&-`_0)fl{fC@(d>*Qv`tQ&C1*aWjQT5b+kNwYZ8mcDh z%Y_a+0kn4X@P+6w&;i0iJseRS#utXeL0!1tE)*7cH5R~ZH~_c(=_}t}^6TIHJ*UP0 zU?=0?p$37VuCJ~!>KO-E7=fZRpph6I@7oj*3@mIkGE5v&atdJeAtjiV1#Za}%r0l0 zNX>a6A63MK4lIwrrYnYM8Hx9O-lIGP;zs zYOeJJ0%9FTFF+53xBJ#hv{utR-JP$Db(nIpe^6sta<)hFZZ?c=Qi_H@C;9xeZc!eM zz1@Z4$Jg|!;EPsjXpdQF@-WXczh4-LFz2|`Q!_r<4<|UuVd^X%bte=4m?ZV3a%4Mb z@3k#7)TFyS+0BVPw|R?J!raOM$I3dz9LT8NBzfuL@UgmOVX^9^WZ`_39ZV#^X^JZD zqu6M&0S!AppKjfZ=hWHkGw6s|RT^b)J&j;BF>yo=+mp`V^ns9wG+!6zl_)RbiYA^i z{RBNfGVBlc=0`c)p2O6g$m+{*0|Hf_fINff8)6}`J6j>n>n9(bZSa^XwR^Sdm*oZs zF<&F$imita3vJR`Z%9XnpB7s7nVR*um>oc<#Uo2xCZHHzXKwa{O|z8VR+d7URZ{GhM`IWhvN90=P@#_pKjS#l;d@r^4%X%EuZ5|6dCi*U!jjZFmv~OUDr%% zydP;7q_#Yb2n~C1FQqM%!Oi_1&xr0vj{%C;D%O5m$Td}ss~(TSK7(%izPNh#lki@; z{9(%r8F7>g&~9y^5SqYQ6voZE1wtk z1uOeg>^~&dx)37KYZqUMtm^rk9iG%e!2ePkX_o}78Spv8|zn-3u*0U>1yljZtLX8j558sPz!`Z!yk(zbSU@^H1Z*0#1`{R#%Y z)vuwydKUnei9yO6PiwnV^z@Aj7 zI2;a@2X?H3e-+LjVUduZV*fMmI;2EIM8rg7#KdHDq$fz}n5fCfsF}djs0++W&v^1A zBRwlCHxEA#H>;SKq$JRB`u&AQMoLOSML|PJNkdHze4M1FrKLW}ck(3j$&-BIT&%#w z1!UX!`T0eKq@={frKG;c!@q>{2#^v68u$;3DhBng^SvE~i7NWQMh(6H?u`Yg@;Dmo zhlYWU3G7(?I@u5PI#Ns)K`k=45U|e;3~Z61h((ZNWjC`1QO;Qewpap&7&^+@`qokj z0>XO0&LYz?$8ZTKYX%F&W^Y=wV3NxszklP}eUH?~)g5o9Pu*R5Z#gUM7p-PY)1kOi z7FgnP8^0%CG@!aH^Cc{c{9}TiapP&ZsfRojKJOHo_TWJ@?ZS`gxW~(q#7kJ*H$@cK zynARC`8P$lfr)UDLLo~+&d>89;TLdj3dBZHh;F^?(sF9JCd*GBsX>27qOus5E(F7F zNU0bB=HUbLSHG3;Nuz10t$j6+qMtCUW6LqEm^bX_ebU`$Mql<*zs|G7`X&7?X2KS( z_OXsL^EKm5z4FL40e`n%o%v{T7jYKiK2Fax&w-1TNRzWU4!m`gjp@D9oo{>SV*1or zKTXojy^mfybDNd1KF42NhYM?;Y)*g7Mup~s*hYh+8@ zhslZ1juo}2)2DU=al$hhG4Ab*i!|}p=qiSWVqf=DsH*x5s(Rd^-*KoPA#TE#J7`W} z=^k?1dHq};cdCKn28;*?6kW@`5J>4&KjB^?_D-HJs-GF81OxFXm(UxH?~v19XBY~7 zcD-rPp2l#L4B1xcb7yK)8J*IhsmcX(diW-e$BXpS+=;nvp7K}n_1_KNiRPy$xjJbc zryy@QIExXGuS9UWO2vhc4UYltp?F)Mr-0%$+wf_^46*0&_mUsac45Y5?yD$u=R`P^ zk%{ia(cuY3W+lOs+uW_|%TgNHT=+{v?Io@fW(~e3Z9|$wXb7X61hF~wDyHezgrI-BM2Cqcj z)vUpQkO8a86Sx!o)Sg#5#x(L_SdIyg!xZtgM+tG63mwGev2=6~C(^?cHp9I&GGkE`&-@jnxeu@2$^Sc;QOcn{KnPYwz5tc>5WrgICP!TzVpzN>t{Rj*FDfYjL z-+_@dM+E;h{0E*fG0=c*u1Bo@XM#rq2p%=K7vOgc3_QRy`~vyP?_^p+M@MnG(KS+fwp@#M0YKXSYr z50At7sJ_cvK7#KErx)V&2`%sX88#b;Kf|&fN_{qA*k?qHd7!b#eNPzXQ#g66Akbx! zTDty- zcFyz$8eyfQ;Ay+abz4I=mIz+mKs4GMFmpJV-(l8$OHA;(i_6$R3KAz64@BmSpQg1k z>oG9nZ*-z}v8{-~M^VTLSI(6-8tlQnbfWch1rdV8j zy?Czd5=(j7N?T!!WQ>QR2Q2JUxS>PjVCenZsl$Vn{I3ZbQx1EjWVlU?uhxxn+Ny&1 zY0D7~YG=rNOi%X~$%?;~7+c`ebLYHB-*?Wn_^G?=CVf!qyh7C}OUJxPdFh0)p}DIM zDb^UIpR(Ig@h84?=~E01ql`5jSaI-Fa~2#Q`wXItO6O0~UV(%Q-jnTxNsJ12ujIOi zB(pql#hk}jzm|K&-nLV%5xvjE{1NA(Ow~PR9)mlVnhA+Bwu`QHkYhVO{}_CcGf=&3 z(cuA=zU2qV`-5D2tS8Q@?{?4$GG;*bj-1IBF9!BJO_X1)v}~!!DGqb%sC%%lorbR3 z4tMeFNamA|XGAIBz0t<5sbJuvuPt(9zf?{w8g(8fdi#WfFmGeorDFd(ee@iH@f)2& zJB2sNh~zP?^4_iPVJDG{@lB5kwnbC8so^dYTz8m2Zi=lpOvInqpp`5}R;OGl^Y1+D zS8#N)zudhd{gvB2gX$@|8#z|Tp$gMUXxVGDEA)4N)eyx#&0EJI~f!pICP=6?4^+x{`Wp){@bGE@o0vSG$WXTEN3}Aw|tEP^{p6J(6VZ z+9`IMFxfILPi}!KxwH=Qzyr&)+PR_Fos!R>Cw(<*s6e3bmMtm}paTK{k5Bsk0U|3i zukJ3G)H>at&9B;;c(iBo`c+yzbZ_f5Qe)t8!KZ1~!1Z|zGI04z4KnXoDx=d%^GGA> z`Kv=)IB9!nkLGV9O+SO;t9+TBjy?Jv3H(PBcmKao`Y?!?xEvCgW&br2Kn)v2h>1aw zFsP6a^4n^hzl#Kpv46M(e~0}~M*@Nfm>fbLxQ8#1030rgKp-KqKtBrb1vubT{M=s@ z{enfUw)?W&?yuPYsz@O2s2Jrtj}ZeC{YdEp`u{JH044~C1W+kQp!MS`siUETzAAll zuuvQYu)H0iO)fmhsuP4o2?PUQv_2|)_&yFmXMqcnVE~D{Sg;E!4!|5ZiUj@|2z*44 z&Z;2FsT{C$YXYi)T}qh`wSk74DT4wx@bABF($7Hx+3CgaJ*y z&1Iyd(x5wxb!qnZwN%Ws!`Dh3s-joS!jPFz4VS!U`|V2%x^GA`UO6kDe}2tE@&hFw z>$W?-L(6($hv%)`mCFfL{f(pmPPYy1y6wz;9{eSvGseCm1IO^BSHwmU@DZ zFTJkcn}qzsRE>xe{%>XpRz7Uic9Pc!!0rOL+0o}RgFbw-#uo|k|C zi<;Ltggc|Va!)cogZD*)qrz6a;b%}jmifCFv1bt6iIrZ7yBe@8SdY&UYNV;jTAjm(QM4gmpW9iUaO5D3B4EQ z8^fCmEVI4sFb`;c!>E(I4!K1y^ej_bhb5%kCW@iPBT)6Z$L_eBxBV;ebzr$k14R!5 zyY+j|fa1JBLaHSh{Hw3jEG4?lGNDUd__CMg_7lh^m*VmfA$dczN+|*F{s}K`6>Myi!aNIVg2XRJjdxL^Sk%GHZXAd8_Dr|rT|91mdR$lr z?Q#Osv4^MBek9 zdU^Y5_%y{nWNYtHn-jkOt)=rf*xqSHN9MSpFW-nE@rO70qif+~E; zB%R1eu1U9NIT}GNs#Qs$Hja6-S$ABvuBfb+Y_y(GUsz8&%zG2@QC3AscFB>UN^iXD zMQ^J!xlH{`3*F+(%fxms=NYdqjoiK0GY2IHd+Zz0pFyQpOGskw1ZaKmj&3WZIIS66 z-Wh{>TI}4EZNpVJt<5Stgl}IJZulgGi@0!@ZjgO&K>g362a4Z$g8zj+0!&m~7$S;* zeTyDMVGwa4K$atsFcGAf{IBu^$5^0v_1J^>JM4ctdJsa$3d2R=Un2lc4taOx=bgW=nS~^-AiqoAOmqNSpzrlzN(0zO#iPM)M=5oBRuV_^}L=H~=1era(@ zVPRoOAY1YS9R8C$LGq8$1JG!KhK~J1`Tzrjj*0fgM?lBI!NWT4B|Y{L$OHi&0So0L z0Eq&4Z1w;c!Ae2-ws|hl&7!t$gysS9bd1Gkj4|M=68rug4$vh(}ol;V=$o zZYl`blDhdfp98-WcRRb6a0hoGDs~40OTr*!{>JLmC<#P?&#;f)Q^ijW&zQ2fXldG} zOSwjNV%&C+(lx+PGg>md`oi5JZ?>DMP1RIe1Gic>Gdb-o8HZhiL@~IQv|y(4(~aDjv^A$*Jt{6>Q;f{DRk`tG;8F_|BYf(C^F&bnwZ=HQ zmwsXVJ`BNoah@aUwP_xjtq3J>14pp0p5lAw4a@y7drs_4Lg)K;8RM?JL};U{s$q;& zyXP_As-?EmGOwSR=(2H1MPI-hO&I9IN4WPcsdAX#397*8w`+J}?r1ZGl&1JNRQ?&{ zQ#fl_R(Vg-1ndGZGuhpW()C&#S5hAv~M5 ziJzLETm6i8B|3jBHReKy8`EZCZxT&O`pUwzf8}IHnuR) zU(~6+UcIW?2fLG0YFW1_bx~w2NjjfF*{JqJSsh!hvs>83J4$Rsh+53Pv@~HRYnD6K z?Lz)9vpIaJ{~$-E^_`dU7x02w^($*t3m9 zQ7;+Uy+`_=61s-R&VJx=1=!V+kf?bGO(fq?l7%C))9KQ}<#WR$>r>0U zbmnFgJo_k_B$L+o4+{`}_sIOi1jYZkD&YUcN(JYCO7K8w1W-aD@ppEFyqqvh9FX*1 z2^j_hiWOvmG6r#Zn4qxyw_pV6Wa;5x?dblsXu%37S~$jj3j}_^{=))<K*b+Zr|1*Kbm&#$(L!sNqt^(R)X9k?F4{V?Er}w;d9Z6n%?u~w+bdo$-E9EZ!-NsUraeK;7{qbVOHH5E=YKW3q)+|46Lmc+Z>ihS`4ZJoJ zb_QSa_(we`4XEEc@a~a`Sqwk88of|smUj0--zc!ho;Et`?u8Er(MD1-CzJZPBNRAe zw<$L{q#oL{z4qROu!q}$N~er(ByO4Iz8TCsH=Xo+g4lOu(feHCx_%QIM4@Xx8Z)D3 z&IK04E_^Sjd9?s-FQS68c42&%$Gg;pn#oIjwd2yr1!<2*;a;C)sy$LiZG)zS_uNv3 zM;I|A6I!yYoQbuJ-Vddd*awg_wVf}g2`%PQe^Kd?IhH10(Qdj?J3*`R8D!l28MNvf z^D)ioV42aN{Gr?rLLW)WE91vamS< z$DnDmH{M~_Fr;MOo4AvCE2(wy&KEUV-~Sjfm}%aj93E>vD(;?U^znlQO_H0@*%-Gm3Ikk1KAIGwo(q;}^a7%A z?4r1QJkMr{z7z4xU9H&tdis{HvQ1=<6M_Vc2(z%|7jj5t}_E3 zzxcuu{fR1@es(gXb(O8s_04W9N`+@0cdyb=pOonJ$jopMwoOUlpqdP?oyTUy6}2YT zJBhqrZ0nQwj)#^iGs$8|?)zhFwo#Z?WNoCOl3|f-D&+&=%yR(BF;_ z;C1eMX(Lx{z&*%svvrYY^yK`2iI!zx zJzy-r-PRjPrOcyx?skMeFJ)2N6^2Z~(s*kqr)W>@&_+ojom>9poN({iq1&rmZ;L|D zpk3xAmr97Per@~OHYJS}YJb+W+Kn@{y09Qc_Y!z^uTOGNX^KcV=+o_pMug!`R zV|;!1@|Vy1&zz&*0p9Nb?@MK=yu7$DOjsVMEIrQGAdup4U<^1^9w7>pLw?Iu{cV8v z1^Y*y=&#s+8sL37Pw?mW^7FjY@y{XjQ|y0LfOi!L@PJa%KZkOdSb%YafrBb!WPu99-;2$C0m(o%) zxR%RX^Ja|Lfz9tjyq8t4r8S=sfxi1icD3tprUQ|ImB}tvLEg5-ByoCtEvn>FZIS&G zyM-qIBJrS8qWX#DX<966-lLxP8CnFhY}>l4&rjTC>oYjf$##~2DZ8kwXB|&YBZQjjaKmTfp^sI&%)yREFg?l-XU^lY~VpX5H z8*xr|1eW)5^b{t=JINLOQZ~Cc<-EGnVaDAyC*ZMis{YoN27)>Q@Dlc^vwT;ccAsW6BZf*$Q5-I9ZjT ze&T@#HnKYmhOv1+cHwQ3gxVv2_v&W+UK$npYV9!0{<$uKj;^k*yOwG7QuhjFgC=Pl zs1R@A3B8Vso0pc_ii_gLU)aHfFQCQc$PqjR#rMOh*@6vx11$#%Ol z$cd9lK-85lkSu`XnRLC$1uSb4^q2`sx$*vaWdfY8!oDY#CiRU4z&9AC$&kDGe1GOb z)a1y4N!zYWvI!q!P5;D`EkDc|rbq6t*A|{$&G(0~H1A08IJNH{t`}n=RV7wgTun;h zXU(O{FMF${w%pV<)cLp}|FIF&PwUJ-l<7pCdjI`9adAS0S-TsH1#RNl66?gF zvmsnvf`#UFL=XKKUzE9ullR>;WDT3ZDWSI}dYb;MTZ6lIbz#wiQ6CHPuKP_JRZ$B5 z4u4~+VtMZ=UV`{~rCr0G;^dgcvNw57Hx6m%{U_(Vn-D#=^EkXowEiV z*=_bO=XKsWdgrX=?);r!> z^MS#l*MrtT%j1cat~X* zxU+3nnb@y~&`l0)R@?gA95J*MZ{iKCp1ze7;1T+ooT>EkIAr+b+D*?f!Y6i>;L8fT z0`Krelz2E5dB@!%8K!Q)i3g{3^&0SEpqtVBVHO6Qw}!)v*sI*-GVrYLKYwt`Gx{>P zWSw4#IqK#e@_zX-)@sYK6zmN~(LihO_)?Y#ZW|eEqBwiLJKfa9HILdE#uc~bY3F4o zh=OwhB|ACF;m~s(O6MmmEQ&ook<3|X;t*^u`nbPL7<wS3SuEc^%W*&9F^zdjJEQYlq%2 z>k?^u-*f2M8rS=YdKQ}cFQe|kZ;Nn^o0FWH2{10YGE>s8mW)WE(ih&~TNiM!mT)K@ zejz3nZ#qJx#$jaYMrz1W7WMMOy|s}X&R3yf1qs-TUCW;|Ha^WqcJcdP@kd{w z_#NN=N9(Ho_Zpb;!cY;UknGpEP#h)aAin)-Mjl79*r<3F2h~-D@qKR*y95secPF^JYjAfB7A&~CyM^HH z5Tqdx-10R^CU@q}JG0ik>-X1pr#h=y>Eb-ps;aJM?{oIEkFoA2SF13C?XqK32|)>F zkW|A{qi0x1>nRSFbLQ>-uKC?HwnE!0G%@|3i}=Zxy~GZhR*4}P~oEVmq974Mqy(G~z6xm!d zBFmg`8*R00P4JRl<~ukY*pg?YPgboiL7XHO5d#3vl&9X?Jdx)^$HloburxZXe^r27 zH@)6TP8@kQEsK6K_JYwsKfHI`it6i=4#b8Hsd?3`hiEC zL^PFy)Cm4q7?RwLgKyh~#}2=4bW3$Kg%$$V&62Ry=e;D`UlZ%}L~&>-F+P!0f94-> z_ZW>vS)zQwD7bNFV@F@vum$PNjPN}W)wR}EqQs0+P%lH(A_Gj(L8YCZKH)>ZY*ib55bSKmt!Xk2|C8 z&RpzVPe4$AVobjuj;kOTXhe&1NM;MVwoeES22zYrn~k*&1~sa&NR(RaIjO2qGfd>C zD~nin3mvpSK}kXgG7(Gqiax~6y~D~gOfo>kiN=$GnYmO?)it)8gC$?o9t}5|RZ4z& znbNtHGMta`@G7);-8iE`Ke(@U3Ui@14`($3VR-C!$K04TVnM#u~xz`h-+%wJX= zPv?=LKX*&V3c@40!)ew{D{ChYcZC`Esye0hZlTs*Ro+Rws`4?>5toaCA(Af}yPnEv z`_%MUp^tFMbIcWApSW!O>~vo>OEsQ~dMc)sRxu9c8$e{jcvPkSRV`j@BE7y)N|s%5 zH4H$U4*dgsJ(uOo{u5!mj)Oy6>r6x}bN^~;{iSLZCd;TnMpa}q)G0nm$ zvvY2`!<-~du7BbQ>6SjGh zpR@Jer*6PF5T=VZ+7-|8J8}m++xt{=MgM{ckx$vkzdt(cGU+Rui&m9EH)Oz9mDJ4K zI|;J$VzSzMbfQP%^jGk*4BFIv1yORtsk0ru+;l1`t7ZeBA%n1T&M5%{e`nn12T7>B zWVbnq9A4dB*DG75{UBi?K1RMczDbFtGm;rMt{4W!9V?Z_w$sW!7PU>Y^jq0N5p0Tn zwkc~vA|o}4pc;A8ta_PQj^8K$~Ja8sJ}YqZ-} zn&PYYkCm2kR`&gHRFda9-jFlhFsG~tAqahSy~Q54)ZixNW)LOiR_aTH<=*RvXfJW3 z>|v&xcp2)flt>mnylH)+Z~r>3m0d$upnOoL2#KL}Rdj8-hRfz@@#PL0)^h`gdA2C+ ztoKvg$a~YTIx;6!5^1NwKcrqtkm~8D5Y}A^Use(O=m}hgbl&#ee}0rh#NZJiCji&( z3s06+V|wLTZqh>qe$k-y;MK0_TWBXxsZy6W2bagE;;ch=4Bz&uOmKJ~6LpK+Gcon| zl0zq9Pv>)g$bC+$D~$A+LVsKQa!Qz$5>DC%$dpxot>0s)X;37%Z2F zj=dGlA*Drh`0Cr0!&)-=Ip^uy7g<+tAXK<_`F2$UzTzOns=C2}UXWee8gJ;^iem?5 zR2)qgt{rNGNnkJ+SS(1-I0e7fKi)O%w814GvLJ zC|die(rPdsnOst`4L;Uj~vbbK>N&z7^n_a9YYRPvOlS*LnZSDNS$k*pn@^+KK1c^ z-KOAyhCJlNG@TDnT}=S`DFffcW92pU$uoM{=JpE|xUPi_4WixDFZbTwjX1Axf|HD( z>=2sKMBaLTFv_x0&HE@_I-ySZDkzUuPuDkx#pRS#gCpu0a8oC=FVbYQ4=-U+WG~y6 zkrYGesW^1xn^FA`IW{l`BRGNgYj| z%;JUF!=CrouYUv||M=YeS3Wlk3~UU7V80qL=Mi~usd(r^A}AstAjrYN$jZ(v@|*hf z|EdT4jD5(#|KG9yAz%729#}s5SL6MS;N$19JUCAL-^cPl#g~E}>H%Qx^SkZGIuy7E zzVyd}0GJekr5@Ty|P4YTcb?F_~byjRIr!)J?*oiSh<(jB}0trV)gg$ zVMygByN6}zDEJ5Q^DZWCh7X#Z`l4eCVXG(Id;E^^q_(G2Uh$e2JsAj6Z|-YP>$ z@_I~(b5tE~uO@yjPs&uSHWjh5@tvq=ErN$0m(L-EYw|Y$f$w^$D^9AlJoR>;h*|&m z6}?Pt3oYnzSmhlnJ!DVr!p9tQvwOUhyen!AhOXCm^|;Zfe2-r|E#NR5C&cPfJS~Uc zXNjz#r=2U`?#HZHdh^opwJ^$y7Brgnso7jt3@p!DO@2nCP9-Uv%oiJlnQb$PY>&Q@ z=*N;KzC-DYI;6GMa{mW1!xU zQkS2QTzttnuZ;EJROaPK zMK+CKhFF^d=L)yq)nFcRMX0cn>z?yc`^L=hF_}*X%3E8*GhAEL9B)X_>-Acv-S?oz z<&HYDRP+5qy@M;5@F8u4D~i%N4f&N9bsSz~w`N%T_2NcK&r6GCXNhluyOMY4$vBfm z*6oRP`m;Q->cskIPd-z>FT)MmTpw(AE$JH^)4{hWtFBCcv^noUtilz3NWR-DR9I%V z;e0dWSZ&WMl$qaJ>S^W*5KXRwMyOc*< zUPx{}$CmCIe{zupuTma5{mwV@364+1ee~Iug0Ku0&pSvNMzfaEDp^+ZIgg#_Jv6~m z>pG*rzKo}A>|c*2;90T}K&2G>*1)o!K3We==|>4oUr zmCp`cp+P2Q?jki+Z;GBpR$jP=+C!MCoQn#JpgsXIEuQRPPRZ!?f)`Br4rkhSUcsTr ziE};j*1jv_d7*oC^$kFEH&8t?A{%MGdE2v*SrMv2r&%H~{l4)qNnkmPW!eI-$k5yT z$yEr~mvTJ?Y&*U7I9v&PeF>TPRVzuBEw8XeFIi&B^h7tZutr9}C`Q7PkSz$i8Vhd^ zJtxYQ=Z?TbGPow%aXZHgLBFlSLvg?LJhHWeFjm^kNf5p`1~96+J%MJ%r5lY^2Zf(q zZVGt{n1yV#Ct~}8hXQ@2?J@S2DMx=%W~DIMG0}{3s&0cnwU)I{Uc6-J>!a__uSB~V zR$!{(tXoPwT@w<1U!vy-t~<@p4CvPA#aP#HvwPEi!~W4IZhd`~azR#ceS=%@p?fI_ z8LX(}es#1Ll{RC~FdNJVI{aByA9N+UtpyKC33&ej`N8eV=ot9q;EblA%r?pw_(ZRu z3P_wXoR`=7H-PROxGHBP<52|o__{lK1M~HcxQ+)ctrzj_EOQA>Ln9fhCZXK#-B&}9 z>XSFG5vu7BF@@G9wz$0xM)nArM$enr3YRXldq*zPUJ8i$;G?{f0+xyjXR#sryr)Ty z@&!t)z9*~n#>qU3a66r`F`eAyNV`Hrc69W8Nd(BqzsfpEpjG`?n|6JE&O)c$Uo_9b zvgA1dnWv5za#*GzUWKTRNmK>+{F3iOcjQEx*kgEdf4o#q2Qu}mA&bMsIz)V$C+~a; zKcWghY7d78ks_ETs}9x}%H;C993r8he~@&UM<{(|Lv`$iP_YIak4wCf8sj8*E(8fT zH8Zxs{(^}yPG@@pGy|GG1(mkp@^Gba%+&$y9GSlY?REOZ@X~J-cV`3X(Z(Dcn3cv@ z!XR9buaF&h`Z(Iqk;;u;z5HyZx`N$!a;(ojK?7}8j*#PuPo!s^%4VjGVmhz9cR)8< ziEmPSw)|H0>qXUx_u8`bIdwj*vS3SFb=HZhJ=EL z`3~s8JO8!)()c`-Hh%Rg`mXW$UIBpvi?~UJF`qICFp||^IkJ5hazDt{e+}^<v@#2oz-i&yZKCt&Q`cMbBtbPE9TArXp$eq>(vG5)CI= zH4|9doCFLh3glbKlcx;15hx>pz1#-&<4o67bJnZLT05kukdw-JLpw@Q~J^k01?OZkzcYj-Z*s3uloK%+i^qghd#IZ6elKM)y98@fE6fHhi!x#xLmoB-u&uAqg4Lb7J{) z?X@oWEJ0cBx>m40#1I&P=~qn4)H)DS9s&Ky>r@Ma zAh5S+NQu~e^Y5B3!@)`Oldr7>ka(C&DtQQTlBKh%>b$SgUWR)ZpeNJ{7QdwLek)Cq z)5pkz-9T1ZAeR(9(voJs^Fmx@`G6s7cl;d)U&LN+m-DSDp;NNMojeoAOz~n%qe;8V zhHX(%i`iKjxoqBU($(ov>PfX%T-#oT!Z&~;*b=94U^L~9`+jV`Tw?+j3No|$qJ>>y zRtS8%#C_2d7rV#_KXOwnQZ#kQw(0wP$Z^LPC^AG=HOER5`gBo6bHJg1Hg8EJ6B7pB zrz)LhTRej=usz3syT9k~csd*>FvRc4?7%dOQw}VwtSE!KC(A;OlIcyeAl!>sp*~ z(K5Khp&YNcWu34!6ORlF!)J2jYF$_!_@}SMKSJGq=J5Y&4rgFs1PX(j6a7kP35bdc zvOe?(20O$svM~OAV(xqFzmj_Y9{V58;XjUr1#DOMGr9Kf*IgPbRY6<;0A&}LjE;{V}RFU0l^ww0UJ_AIbAZW zA5%EsUkFdb-&g8#M<>qK?mJ?CF@xOaR0G4I7hfV4jY4nB**axR)oqK$gV z>+;bcnqn&!L65#vuBwwnb~Q4ognp!)O>y%Y6z*) zz5R|>w_mU)imf6K7y5#XC|$};QALy?M@v*LEZh#?P!gzt#s9>DI_V8%5gEc{I(6~M zny0GV7hAIUQs)T9n#`qPTMqOK1?@n+P zkSNtC*R!hHg0tgUt=m~>F}0KIo15oevI#0nlW5K9gdVM>8TmG21Z87r+w>Dyy%b7P zh+gPN9^WS?pItCf=j`> z;kdJY_d-H-f-L3dT53~1SNgn&+%qNMsrb1ab(ud^WvY&q1roh-(F2+gA9#9XAO9S^ zQN%51Y;$w?zQm!eu8XKuYN?ed*sw-Aw!z%0@&XctyQ#DFlfr<*{FK5x;)RQZvbb>( zAqG$@0vBHSaqZ#Pl&#h2yWF~|xA|()7jRa&(M_83hp&o#jESB#f4M%5t7H+LWB%fj zaDEj@J8N!l`Zcv$&k1Mzi@t+;FuSp&V{?U*MU&PXODu9~#>64fA{DJW;alUkcpU3f zk@BvOa0oF_~CeHmlM!F4dabPY{O6j_J)d4?-h=Ybdi$Q|ZQ^ z3fX2EoYLYD)}DA4Q^Q)7F9CY1pI@8mC0n^TsXgb^B6E)tRxpu!^-KuA?YW4Fthi?V8=$LhOxEn)-QFGO z2hxz7bRG%Riz`nO!m-v8t4F2{3=SlNF8(+Z{SJ+zKdk|$Tk)Q%3n67@mX$El;@Imf zm2PxqwYtP_Uy1R98@y-6k?|lEmxl++-tI;QdS;BCIM$JsgY@A-y#)|XyV_Fy(U=z6 zMHl4qy!jV~mdC_4*)e)7L}6qp5yCrfsXdE>KZH8XU#KRqDmkHVsV&Y+H`b(VH(KO{ z#SFz5;^R?JAv^IL?&{-BZh6871%Hte545POR(NF6`{p#|i0VZil3bQ_;6L3uq4*iU3k%q)M* zC8XMwlnoa8OOfiL!zT%MQlK&f|NcLr1~WxsDzisrR`l|-3iS#myWaodGBMS?PBdWBukP-3+l*meX~nh}$ZO*069;1W)alC4)yr~sBfsb}y!FL`nC=+sw&OJg2C zGr1s8;?hft-Zm=GjjwQMX8)ddu_&?uBssl2=>=<)IJ&IuSk_^F_2}`EzL&{2fF0{M z0L|hT#~Z8dZ-9kQ^BS$jyEW&<(;&7bFXO6D=FF}bwk`P$%o<6pl0i;dN0=);3-OpQk<8bM`lve@E=^(VI4BArDf~E2Zxoo@N5z#2-;qD zqp0A*Ri2wQJV_k?6;5cjWgm8764=IQGTi}~{wjW&UqY~f z|1mQ?DL}Gs_;F-i+H7xVhExNKLndz-)$hJia<-=``IaSpQ&nYd7H0EsgEX_Y0hGFc zeume%N6x*;s ze0B**BycV~zuU3%g=Bc@L(UHEN8th~6zrnc4Gfiw4>63Jnvj#uDN`<;tFRMh@li}w z8cBE-<~+www>ic#1!>et;*E-c8WeWQnsgW!#VBEWd@SLhPR)XM`73W1N>fFS(U5bW53xQ{P&cwOYEY1@MOR1r zCb=Fr1ccG!O}Dnjfebr;O0wfPpXjR;#5WCME0h)CQrre|)U{{u%dAk>{TT z(SMa75)~C@WETZH@BOxtTR=oagjtY9P(YMJR8WBB?-E2mV}BKh1pYntKZR*Oj^&r# z&Y#BnJDBz(_E&-EPqF`VFbxc{eh<^Y?mOVt)ep+8haJD$^TU?syK?J0Oas6DsNeiR zY2TGw7(hk=I8rh>a?GDN?V(rck1W%7$3G}&Ab2IW?t|eUBTSY&dWRs{m+?-ff0J(A zSbA7^D*gpZ0}xzLL4Jq1-%MTDv9!8ehbSe{_bdnS? z#>U!~?y#J-^#H7ke*{pAzr$pfS3{iIZk}G=bJEpm#J+dYQpYAI*AY&Sr>13i4*3nh zf)F$;%qS@Bv04>pDQTYd{Ic$|?95O|L-KKXg_ZjY!Bs~t4b;I{RLX&cPcb?d;&cWyabx z?NKuTn6arFt6!hhz$j%;SBD3--kqsCD8%9KBgT`7q|eRv8wtWlfp|<;2IA;NQ2{aA zc?Gz)dpI7-vPc_Qjy*#c_awza(u@+iv=_&ibTcu##LgvS$5XD)Rk;e6B zTOcCJeO9){5YHZ06_XD|wFiAk#Ba!TdG3bg;iDd{u#=tFTja z)?MOHS{cA!wz4n$k~u-aa=yy)NqWMflqpLTxuxAr!FJh&DWPLUW#tL|QdOLRg(x~G zo($@VBf~pCS#y4r(vfG?=R^%PbG<{?#xpY>{o|ly`P#1vF~^kpS{Dr#X00ukk9a>B zYWiaAJ`2O=40Cy0jf)+F+!}MG|jikFVPYG@&+|lPzT|0Gkz7yi$=N| z$&k$YHvIi2ix#W>@af9Z4P9By>iO$c^MaY$&B8S+#bzXucGa*a^=8z#=wGZMV8&F2 zoM<~;l!mhrW<3MxJ~yabC4RUy;`iT#+X~WoiSm@Eqp{r6oP+MfYH?ciJT>KFL_PGr z;S5k_E-W5QQ8uBxrI3^;3THW_^Tmwa4*?zZc_F?{1HMf{;K4V**!6yvrdi^So(ndK znh@R)k@jA}9y_5xfgYjhha2Jw6AxP2-HRJS#hZ*C5S!&8^_*T=Lq+LFTo?Lakzg!* zgIQjg5A2ZaRDh&%8#+l+8z8hOs&1F6^+Z=<%1+l7V~LJh8a*nxDRC;k3b zfJXvTzNgmU3A|EsgW$ES!ZJ zduLcj^A+;ddA4~HW;Ombr;yP^IfQ!75oADQNrvb&J?KcRqLHJx!In2_4Yu;$M#0bg zUNL-rUgTdR^JolOYO2CAzHqNnu5N5Fmxa35hl5}&hua!o|g&qI>AzQPYh9SWQ>n{ zx>K@4Wv}VY85SL5Hm%9Ih$(rC8DQ?U&uJ5*sY;ip@p*-nzc|agr=6?aSGq#jl5ISy zAQTH13Dr$P#3rJY&rPtn;u^kyK-bj6_4$m$@R@@aNIDgxCS_=wkT^|2P=v5rZi2Y& z8q6SHK^nBJ150@pws71tobo<|5Bz7JEIRtGT0>W5vJ!>7PN+%HSWr^i&owT$nKdDd z(eE4|@r_M(GX9{>v+V-(z00O#plyfuhO+VJ%xrAkYjK%wrHY{*_#HX< z14{k}8283M{CDsd+`1Rs1Oow_oBV-{e^)z&hJ}Iw zXEz@jZ9zW>puo*GzwdqcMO3iO5!_QWbf5sd94Usb9)gVzqac~zcSCGQI4A^!-~I$R zI|^>P2?GSfV;di|tP0rZaZ-8Pb#$f&D{V%-N(^#1p+9CbH+)A0;2{CtB+p+$=6-xE z@7=QQkeW}kbWv~d&sZ}&{|EfYj?)Z!IyJmS(-4q4W`BI@x8Gm|VW&X-1aTh7_#a2g`}=h22} zD5K`MP#{uF5kF;cj;qb-n@2Q!zL1kP|NdMKSI zX*ums%qEaXG!Pr3+FAOZGGl-I~$aGe3-?#aC?HN zQqJt@=tq|2seL{$*|F{h4Hl%&U{FcYgs?gH0@AIC!GD8e^!dGV0#Q{JT@!~6Qg(0)Vg_kiv8=0j+Q>z2L)_{+L z@upXD4%AkHy0;NMx((=&ERP(g*N$6N=s;B;c9$+^=#R@K!~}25V%I4zh>Zf?jFA|Q zRMBrp$FH^;wr4xbyU@NMAIj4-Em==mYZy6guzHGCK!`)~{hJC83HjzEEFb$=Iiw=t zZS4xHb>LOWsZ+|RdFcK(Ko!J&(S8bL=ipP}kB2E=MVws5Y>jR;uGbDfEjQZQGSvqR z#@Um-;{!MmL50SiYSFHEGSAxv9{0Prd?@80=5l!?G2f0#23j!jt*>&2WZ%%SkKvSk zCYi=NT@#95B(9g$<`sVwxhT*xVZ%pqJX#VqZr9{+cTdLS)43pGsPBSO4ICcIGDA|u zCl4M4*(HsyEORybn+D50w}mkvLl+8t&mkMqTpZTKbAI_cm6gsZ$6d*KQ&o1CX#jlW z@%cT26e1s&i)@9#M{bvJOMATp`g9ob)wZfWU@y*|#QWz-K!~;MvlZ(Za>IXO$)rZ+ z=Y`s4*HmG}_l799aZsY#<0ay4|9w`BTzw;tR$u)qf;QPP%+ZcYv-7*trv)V50tKY+ ziV(aw^KQkCMOrt;xFV@G@yKh|hG`uygT@L5&80J72YIs+$`_gM%S=?3bAw`4OTFTV zx`VOLmM>g$d*&zqW_AD>6>A(@Wdz^AgvVbbUhuZ@UCCzAG|D08J|3#eCsn= zeUsq*L5pDY^^1(iE31hn{pOo`Jnoz4*Z#bb!f0;bBOH8hzX6WuSNc$lj5P=S zoapg}gNY$xk6u)x6vR*}WrgppoWZnhG>vgnoZXM4I8@A@))8_p)L`rBrIe4uQI1Zb zuWGu!uq2c$o1bku+wYU^TJIa;*3F0;_+iRlV>6g@r8@Aw&y&Innn9Ur!7wb!# znJ2!6ffRXR%5pDsCsSI|i`$ew*z3CY3_jW%iJ{aVnk!m`TI&R^RxiH1cCk#Gm~?st z3pL5?hW(^EgKYFQLq^z@`FNXI^Fn=WB|*;amonvH$MgmKot5^Gj7PyZsh& z2GMWt2`+14tHt$G;A)x3=(Eumu?P;z9rC7<&xMj?L8Ps#CHKcfR5cxOygj&xfk z9Cn3>U+H|0u=5COnC~e@W7E#0hEyEy`EDELpNj|1U$yWCu8Q*CVNP*7Bxq!N(N7n5 zRC*r9$|oa_yC=U%Q*4<+{hCo2Xf~SF_YDxt6#(&ML8Y#2av>OjIQvCJ<&c5)y4tui zE8oH-_R|#Ybh_6eO|5|y^A{s+Zlv6x&$Zn(9mi{Qrv20?0v_Ua{de6HvoI2)?vgGk zCFEKOt|cAKXJxz!tkW*$SV5z=UdM*y>l0`KzHn75q8@;76A~)E)#s0O}*a zyXd#m^6U2g?fLfqWXI!w#3cWSN&Xu#35y^TGb1xIxUIlXG6wdH6=D|!uQ6w17G!1r z+odQ!V@3Zm_CF?L-;YJ;FUR{^GWI=I_%CDs_sG~UQOI{{1rJ^mjsWq)k?Y?I7_e|) z8V2(l8-oN3MgGjjNa2BUHi8%edI-8c^3Sk-(J`c-zx&;`_7@#PgZ0U(c%Wl?4}6Rq z6U@gd;mH0-#-`O~ZT%l85dj*2JOyGh#=EU|y$bhzGD8ygdq;*h2E8g8%e6VDhjkJB zbz)YunH@#Vs0v#d*UK=umB3;U2mX4_vykC674nhQ%KGO6?_w!+?F{BKCmPq;JH@SN zy+(@CO0 zijd5efrB*l8vp>CqkFsrI>W~zkaF-;AFb$pYHAWF$G(ydZ?dS67IbP!u?lW6+&7f? z%7V*c!tH=TI`V`RjjhlyJ+xkL;PR9+px2q%92U5of8okrkRB zinX5O^l0g9V-77`QG3~~u=F-u3e3dPy1+~<+QE+Wg`11XvMWq)c=sYGpk?+lVh=^# zqQ=VO9%1~RTU5*exw%T0F06SHA*-OoY(;`Te^$*%N_nA-=KRe`{$Bb{Cag{J>1`p( z32iieK#BGIj9Grs;W~x(tO1Y%=|EI%P|8vr8%)J!rDZO2El{Yb;Yr@Iw2!y@a$=&V zPd=q?hw0hrd!&G z5|-t^35{NZJC8h}){o{NQa4_HnQGF(z3-!bW`1IXU9mMzU#)DTVY4`Wt=SaRmO5m_ z#(j6cRHNZ(X-sjy-D|2>>yN(SifjrK6qISdyBZ$u;m3!;ONQa&4<_?V z1LVe9!%es14)-A+$X%+fp(BH#JPqoiWvU4Lv=zxJ7c2$#%3n~1{QWn;)5`Oe9_IzS zmrSx_f(^B2(W0bKZ9fD=f0{v7NzLi!~q-r(jKklBch)og-RqN>nUrTedj`fZhJrFq2`YA4`$a#qdddfRu&?K312 zQFqN$S``+jgqGXl9>K0#zUV)uzw1+LWqLVkF>`V0eh-IYg&7~diS?z@XbDM0t$&VO z#>p(LH{yP6X_8E60!rEJ^Cxj0*w=2Lws>G2Y`Lz%FlSHx>Iz{R2i63bfL#~1DrB-z zCSwb^6wU@6p*4=Co>bj9)k!wc%x@X{;A4u4n$TjO7k3sXxqvP-0TZ0))YOD%Z z_O(1n9_6-z`Iq|$rguO14E-QrJMGG)+I_}FJ34bLH{Sqws3WCj^E1rg+a0Uk9iF<4 zmdt>!CljZm!R~NnAQ6P7X1$C?<1TEx&e()*6i^v*D`cUYo`2nt=U%^rN91uEaiSy? z#WS_T;$mdoZoSMnf#6?7`O)&^iI|6%EuQBioA?U!>!A6{2{bCW#qEkxyC5?)1iQ#~ zK&2_UVY_1_XnuY40Eh8ru^UO*Rr7veoMF$` z)SL+KO|rDUzk64g<1u`Zo6%-xkapn6UD7903z8lPG3^qAmChLF6`9FCUmI?`1BJF} zHQQf!F7SLhT%K~$3^kavo>uonx2&zJTCyLS%QU^x*3+_h;9;X+9u{d;2yUY8WAR2E z!VR-nM1mR}emSn_4IR&*TVVT5;*xnCzUAZ2W0@Y7Zl(h+m{!pZ%7mfTc~mPa^hL6o zw>2LCM6+B=^Yg9Y*=!lXPzS8_&)}9= zCXc)46>66AJ=)oF@~^PPd3d+aIB*tSGy}seXHyd~X9ANP?J}mYkhH}QyOLQfEvHtB zl{kT(!YeEN3m8sH9>@Fa442mC&U8#IrzcAs`2~mXP~Zxz`s)MM9VqOR{ZAuzt3>Zg zzgn(4ZQ}B6tSNd;{^Vd?80HtgzumS}Zun#bebpSL7$jM-yMD8dBUGb!XRGx+Ej=f? z^rn}l(&9SMSm-yhlb9p}jVWKLJ6X1kiw@N1O1QX8T`n37u$^0;g9`I67_S<BaU@E2NRwC7fV~rL{?2T=PpaFW%sbRK_(xrmX(Dgkn*S)MD zYgPR#RFsxj*V|!8K{?kW+FIG_n(Qy;UNcGb0^DtCYWbK>;mAT9<)GB!6juBWt5AKv zjZSsNs7XBE>liJuLq2{CN{&6V;TZ(%_>5v}E6W5lxOp~_Y<+%W z#$X-@0tN&E02_OJYHxUHZGUwa2n+yxc7ApS3>_R96##x{VrFDwV0#-J3J(|w4IdRZ zC@dgcR$f*nEIm9qH6UI{LPkVFKwCRJDla%GEk8Ba$jrj0*1opJ%-!7C)xf@}qNb#x zpu5}L%Fo!z&EM7c=hJjJ?f>U>z_Wt&U zjGdgBm4N=};^ySy;QO1LijSCyjh~gbsH~ve*51~pti8OswV>X}!p6kH^_Yshs_XCI z&h zd0$s2?;AoWN+l}XLNdmq&)C`x%uUw}D$BMut(URnqCH0^IO`@h@WV&fwSx$Gs zbPhutKtGVwOh|j#qQKeO6{pjq#!6dUoljW5O-yIuW6#%VhVzp#tqk9|A3J=Q(4a^lc`z#=jR$hfB zEbcrx<{)01LPnQDK!`g$`7b?pEifI|$DP2lb-udV%+cf7*!8}p$)>3Ypt}g%${g6q z9^cg@=hCM*?JV_&7>tlQ_WmV?j82@HMu6@c z;N<4QUHO7ciTN;@l)B@!xV43$Kiz}7tcE7&-xPe|poz8p~( z!6D$|5W40Mj zVSLmJz#O&lT#@!DkSpN@`bZ5kYt|pXL#BxJWjIx8`3RqCN$GU4X{=V=SG}Nh&&zJw z!+X8H7^Sisqpf4#+;H39bKJv|Hi>3!%0ksg2=RRce{h?BL8A!u3;N*sV1lnjp~ zvpRuHw<4YyYP@`pbm4t;VQ|-BcF7nDu?!Bg4hgJue$-sbWhjL~m`I&Xm{I08_I_x%fRS{7!w|}0yI{H* z!v)d+gO?}(#o+U)e6a@A6vqd|7t;=5LPbWW6D!e&H|!&rFY!QJ3g=qGTIwa8HLfF= zGHG4#=~Ezihar|XQtU$B^jq&YgFN*-G?+cx>r{zW>_voWd?djFmjtJH&0_sx#D7R( zz^5BxMXF@n8*#~Z>fUZfmo1tt=;~GAchn?UlSj`kq(W7NL`vy6JN!I2nL8w+3?009 zXTx$AvKbAg5fR30bKhWd+J6eCn|}QW-;4BiyZD9L!t(!+p|7}vl;_#+X5b?KCmO;H z*KWWV(aWD!@h$y@CxbWsE#c%y>1RKaQ<){0QHAfeOY}MR_D<@z6U-lH#$l0M+fMsL z!c`kIJuwgVz-4+^x)Hf~60Zueh&J#-_CsF0{Ueo5 zm{C=pQMjC!09fFB=lcFHuD=l4#cxQ!G*h~%TbRRJ zu_53wUcGHaTCZ-XS&K%Vl0u$j5!(oco<)oSbGq+)bO3jC251j@85({XA9)634u5cZ z1rKm^0@#H+WBvi|gO+M-xrg{Hd8~$;FjHU%Vf0g*!a zna|kvkGHHZW1@@rpLuJ}{mMPf<%}24(Q8LL51PfhYd%DzOua1HMA7P1qpaDunS{n$ zzdE;)Ouj|AQB2bzKDj$9wkJ%=MfI#u!QAksWVFm>Npetydg*K!8yj(ye*1QPer0JQ z1}y=PSam$BEx9fK`2RXU-dop>WcbsugSvkFSK|zg0D>lf5}!|gz8(5|?|q;p%U;8a z)IB7{Uf(Mhqev+sHMBw3vMl^tX=q>irJX{bprOj3Jj1-J$H7#j-k8?ViT=!f*v6xm ztkY4ys>5A?FtMxgoPr;l=8*U0eVvu%`u^zp?T}XXorndIK+{eB_*X~@UM&KRYkE~32q(Cq7$myC?(S%9wig6QajC+;BY z{bLe<;6qyxAJUv^;bC~eo&%m9CzXbsY5lF`dQI#@j9d16r{QJfVXkP~3&sMs%-Z)M z!#mtO)ZLElDlsfH2vBo2u&m{ACucspC}1zZR?`Y6uspG4JG@ZzbMg3am*)tei21Mx+G*i3!&VR}~rb`lJB&Ia895r&;=1EHdYg;E~+Wbx%CeEb*j z$ZvmVod-z}lcf=EWstlASY@V!`ac^JVdkOWr%Um4zU!+*+XOxs7kHm@|OQM@UZ1cH5)YVgnK0RfT)lpOw4(@9v+FGr~K z!Q}YWBqlyeQ&wB!il+ej)N2s(#0-?UZi}~WjH%|hr-u~gbTT(iTY$c-1 zmnc)Qhfml0Ey(aK&+euBGEITy+=W-w^!dC&KVkxsN%|j6&;H-H{=l zEvnk>mn7^`mH9{i3)8J|prQ~HJiunDatxvfg1h#{Ot;!{&Q!~y8=*B;V-Kq*hf*=( zN4a}{OO>>jCI1xmQs`Bk3*{=SkAV>jyssU<-rz5ykUQhlz@d)(mbU9uc=C=C0-ody8-j*@8<->S{%Bvv9T|KRXa;j{ z_H&C>=x6^X;p1YGOm-(7$rBPQ7Qm94^l_30)@U2;UUgMh)liLBBIitCKpEHLH!u_& zCiR6%PmzaQLW@C%{WY{OPs%!IKu}OuSx7Q0E;=XlR5`*rd`*NxQmukK~*DS3@#Oof&H$2Y%{=5qk* zF9+q*AlaqTy4u*Jffu2tTGjQwciqCUV z{V$MkjS1<05o0}bhu1k~;9`eP^>G9KH(@!86DJ8_jSOKSMMDAxp0mN zgK%WbczCJ>8nFo)wiYyY6_nMB^}cVcD~cfLQT|i;HtS9X z!WS2|Y-qe68P^02BTY#s|35itt>g=X8;}Z?9)JO;J+n5$LBUSBHKHb_E*21f4a*%5 z0jJA;OXW4?7xH-crR1Gu+n4Jbc0S}|H<3YtYaB<48d(Tx1b7!F;uhE{ULjXgTVEFo zoI41!c&sGFOQ|11i>ma~S|Um>;Ga)T#YT-VHZxhgR@0_cIzcm6qNjF8eH#Qb;l?6F zA}@Iu7nikTc450#;mdZkd72Z2ZFXyO@`Q-@kahNxVGtFIcx{{wb#oaTWQP%Ex@iB` z3*tx(6jyX(@!Dr?a(uq1TYhx$X3)?q;W5TExKAWd?+PSY%#=;jQeQIUA;maFxT&Db z*v{Lttoasht8}h-6Uf;e)D;U>_T4?qU&;sM^!|_lbDIMA|KRSK%k!g}&Hgr~wfBWc zx<8+XkU)VsSnRy+i<&|g=i~TY3M6igg0-LRm7AXoS{>)&-r%0tO{p>5=1x=|w^=Vc z4Q4u6Kz;(e1iLu|Y)dFB6?t6Opq#>l#a^`jzdhdJrXakK(MD`sX+hcKq%oY<`ENgx zZT@x61p)*X@R)h%Z*v10Vmuc=5>NvJIveEvVqjCo7v~PzL(s?nH1IVZ_igL_&nV^zfVxMxudbr$IwR| zxV-ri0>2Bnb9c+$9?oSJlHTe+AQ{9eCke~c!urF7EZd~T^_scJ*7^BYp`YVk(!p0 zuk4lV+A|gU%#WRd*j1FVE{UUPxqX~^{ti&wrhO$y+z%3G$$b61@DWP~76;M$4xb;1 z3m%DzyFpC%k+)b|k z9iYsPmD<)trz^~Fs0m4~ei=nJihLLTWJBPKfRbKfRtNGbW$Tt@>_6;VhxlHE`d*lT zDB)+2Rl%FO;h^z;`63yGaJQS}bClb3zl+eH%+%@G+?j5>k_)t+H|t8fTHh*<+%hK{%JJY}@q9>7 zP#*!F7d|MoZg8VuZAzW)W&@u8U=nCP6a%mUgvFYcd(3+4d>5{Hes&iAhiVB6+#h;o zn#n~9U;V<%msdGCBC73q2yGSkZ`9Soz%h&4O1unSA8*1uq z5dLIf;T?MQw1XXck-;N>liWQ8`KU-7{Rv*?Sq*dHWFt{Ovhq>djaGt^nl z^^e3eAL}dKQfb#L&Ad0wPAe}=NmgZ6N!l^pJ0$!)A5U5sf~aTTJAL4-;(@1} zbHC+gm@9w%WZrHFdkzt{A8i+%9LoZtmyi8@O)w7(0}T)Z3lDmCer|JUscUpxNr_ZF zJt{X%SX@_4R7*eZHYYD5=Pz1UUVBV_T${4DX}n}Q)*i>Kr?q)SaUj(VLd>y3%NWai zpx=3;-Fd&~Plf>ZGN%09hR2o}o<)A*7ts8J6!U=ne}sbQc$JSP9_C<|Pvo4P=7sin zfVX1rk)wgth5YM$;X3%^{U@{|I4dG+!+Q5IJUTz2pd9~RQb9<4)o+?DIw&;fxHFW; z*vrk5|M=yLgWHqS`54LW?)1x*m(`Dh zl+Lc|@cJF>_`2$rooS!z;p(H2nWTe=fz{#v_3{z*^}d9ipK6Dmnv1}oy_LVs!i&kV zyQxX8pyk2I*CX52*U#>&zbdr3|GnM( zJD0tM?b)Rm7hK+l`nh{=Vh;Ep*WeR^rVMS~eR$h@d2M3_s2R3sTV7#YAPQ{f3s&NO zbXjZBMXU@E-WaLc8X@B^&NC%gQe%8{aWFDCJ{PG_q**~&TWS_=aWXk5CJ58O;wsm} zfvAbl_RGr8Q@|WrCj?EiWGo*@4qEIXc(%iwj_BZUWE+1|9(WW?o`jl+ZV*nD^^Nc7 z{Q8fX|LvrNA?=;Jhymzl7Et(NEh^yY1J;q-!(oOr&Uo4A9ejJme@z{vEszMiS5 zm9fw1)X?a_-S)YmLu)NJ<|Cy-W5CA=)g7K3I zey)v~pNfr)m^;v+?Yia4lgOUj8C22A_t&(FwXBAZ#2Dio+Y8?$-#z$SB`9J4EB)}}?B2G^*t&&)imVOgE${O4 z_rTo5(y@X5{PxI^WJn4gnw<@7K@RUXbeNq;kB{3-8TW{?sL^#uwcrAytp0f~a5U>3 zRuaL&gKtPU9!Af%UONGtLPHGt+4Qa6k%~t_%xKFrUOg_m&>+TCD4a!Tc}IC|hjm!) z3~b2HYGx&TvlRqQ&vk>Ha>F}2{$)z zil*f7brIu&uiydMns#%hVPQ3*_Zem!27lY;8&0eZ0#Mh1-kL?T_`GjyEy3oNu;}H3 zx78jwW$VtD%*TiYG(yuOEjdBtUtM2OO?M+D{52uk#LFnE(#Kd$tRlaq9>M(V%97xD{) zV;Z=*Ib=*k6vNOfm-@da&0fx^TA|blMW7?2ww+=VU{|5|QpsBE(0ha;xVwJbXF=-WxDPByYfi!<5Xt@TaTS?KjPxl3tSnm8<1u znxC2=neb&^g!ZA`lUyDN(T<+w^k7xbxFmDV8~{QGN^fLd52F$sHef#h4I?b<)A#EH zon4K-_oU~yTdqg8!fn1y2;1E<+XbCG4T?bu$CpI?%+$&W>d9PhxTVNnJvLyRJb}^@d=H99G@xD0MlJm_< zT$lj0nI_-(BOgQaZUMV&RS<^kf3rpeQkBn8NM%CgF;0UMS{+>(PPH|qaVORxw?URW zQIf?~vxo(LSG0IA%HF39yiStNNu#F*$|F_rB_94WU(SganL8U!_**Dob zPcdF0T)(2)+`4GFPpJbX!?DC6!BZgKRxp213D)o`KIPCm7Cmw&ZZBv&Y$WA?*3-n* zM1jfc^zgC6ih_#z(W&6&=vD>eo|>4R`R?ct_Vc-%z7y$-Ta~gS56pg<(1-P_is{Yt z+&KMi;D42%_w9Zs5fhagrjXt6%o)FwurX4l*1FL2Z$I~HhQwv2lmR5l)z(>fv4p+c z{?pQgrO;jScvv8%BZn&=Toyo|C{)#^P*7;w<%4|TE95Dq!|;9ldR=0L1F;J~d^TX; z2z2#^aBxVw#}s3m>-K2{dvz{em;wD~Um8hyjP~>aXag5Cp^_AiClOq6O{3e%F<&P( z2#nLGUc08hqcfxc*uu-iPCQbLuF;{Pxq|BZ*To+;%EQSeO}oaquZB0fpsB^E(9r3t z#rIwjd4u%*J}u7-o@or$>Kt$=B91@fBm;=&pAZzCO_5eGhdY*k@-U40%P9|kNR z061t~e|CCmZ4!H`r29=sxzGO`P(TTaobi?Dgu5?IDGll!%6n zu!&gl{~_myTbh71>gqiH;UVyZPl%I@mX($9IPw1X>fxK)0K(U@ps-pdSpnil>tBF0 zBse8s&bJdV9Q!mDV_hp*CDJltNV1ND0wX@>&E2A?RKvPg%T?uOAyXqK_cA_e7Dl?r zXf)rx5?8CG3rfzYd@RMLelfPx6h))O6IH*ba}c`W9byQmcBf|rua*^b90DJH+Td^i zbZKU8L5CY#k62DCI4C%1&~w9g%bd$SxX8NS+}km(Sk+zgtLAa+lYnYoN8A7n6bZXyNpX5pYEH?;mWEe0QFIaElD>9Q_Rg8K3(5 z7XdjqON0V_>~aNjVIN~?-Fy(36fg^OQ}t~!6ZK%s0$R!{t#l#GTgOP^elYc4f7~`b z+A2k+T2eI;0RSw?^;W;mEWpQHv8_z5M7Av5$kMwK*9xs}zd$tBz~+$+oTu>id7&)= z781u5AAD-Fm24U17Gz=*KmgnR5@s4bXQr0}ZxLK+y<($cpmfFS2zwii_5}2Wb>M_{ z@|p4|QPZe5siHkVyD1??EKkW|E!+Ys-Q@0}s`e~2Qe!?xD4C;(98Tu#?g%$|04yGI z3g*X_Fk4B9nyl<&JyZaxcsal9Ha@eqvnZl(&1_jrc)f0`*>mv1^rmYXgqYHf2auxu8+s0JdL z*Bw=ga0l6?VjG~i5ixpb{tb1^%y(V^IW9S}Q^2%)72CQKJY;3@5_`bdaZzPPU0`48 zfKDKXk|hXKEavz^Yh4V=A{I77o%~rm|9_HPePTD)yUkK)=M}=2kfD}{n|0uH3&o{& z@er?#mdx0?%uNBNLzuC^>eR=Wt08@w^fb>S_Se|)flsPep1!1&qK>2#x!(b|rz+J1 z#>~;kHUyoCz=y}vvuWDG%h1`?{Ji9qE1mO1mwBq~ry|ul~$F;t<^0lhm%EYv(tJ%D|?B1>2xwp6HpO+3ZZ?+KrRd zC++2bkG*sVwHWR8_x1Xv(fpR^-;C_tjO*VOcuH#?HjFjtd|+y6Xe2xg0wx9$C5q|Z zXn$NV|J`@B{u->_fC=8D`W(2s<8$7+fFj0}cr3ZiEJ1c$yBA-k!}26oVmw1R z7VN~L01+hnO3MmZifD4H99$PcVk;G1dNxscQpSeH%V3!n(Xvx{NJN!Ydi!z^^!)UM zj-Q@RXLKwY!jTyDmj<~Oclc#Wk9k6rmKvQ3@Zu$fmwubCmY!(!6ma;U13Ktl%zk8k zd}Apf8abKXO!Wuru(jB9( ze!7wkr^p-IQLI7=%CEp2sMh-L)qUDfaUN=k7JL1T?v(F&+SO;Vk({IL~Q7twec^BmPTlkFbY%<94{4(&>J&j&1v?BhKP-% z*#FTOx|D2BW6l(o)NmTKn;U#d9Ig~2=)f`T#;S2wgsdplbusb2f~z2Rq@4}kE0Z5t zH=ELNs)`|iQD2K7NJCgeQCwe7o<~BTejv61QLO}0s(H7uWJ?hG3KM36adQlvYy0^x z4$&A7*9LW~bW~^^d#-U>mUI1EbK-snYKa18so6lo??1LM<;cyF z>Mp8PhPK7>&;7(v*gq(xO`HER%bW8=-XQa;t%~r1i-@Q>M%GfBw7p_NM1b4s+zbBS z>$>xkyoxq|V(5Y(eoE?V6ZV&$ija?#WLu2c;X32tIOqJr5qcE51Cp42 zmZd;c1WkU*>YqI64=fWbvEI9K&O&lvzbnuRBRgsiK`>_UsmLwR895`b!Ur^LO?7$L z_sIgL)w9I^aR#kE&J{8_6n$7K_*p~RTeD_ib4VtS0P-bpcS$;W1469f$q<(m?kH_% zQd>bm^tn;c8k=p-;pD@?9*S|Rf||zRmGdGs0w3&&Pl$kyl$eiTN=TQ>6Z+m#w6sW| zzf{Ek)dP%0iCytIF-n}Hd8NDq(Zm#_jji0H=+!94+%%!9c4fA(#GJqTuei+~%E!{~ z?<4w>PluI0^os5t03jm3=ds{bVQ2jAZ}9*7YvJ+*j}cR3f_(5*6!adPMi`JygQF?s zF8x%Q1uJXp5)o$5HX&2HOUAMSBk3bI;XYHGUw&6LRf#*{|cN^@y_u=XdG-%}VjjY>1wTrQUFy zqRxD6NHQE03_eH`WR+%FE4AzrB5)oeko{M6oP$rEu!pUEQf$LOJtP(wt4DkXvsxZ@ z$9k+d0A;=aJttMPwMBJMkAOxI%OLk*E1lKeXiTp!gcV2A&Y?IOE z%4~$>_us3{=%<{w&QGl7y7$KUR=lvXg806I)}i}fw!*^clg0JikVR6)_Ne^UBvnGW zVpH_BGC}+{HKsze*Hy68R=3D&fbo6xd!z&l*KQHRVGX4ndhYC$=pk*ie0olJCRBL* z^<|8fixyvm5R7#NglRP)0}e0lUDqUlH-jXlGlMCOq;}k5%3#`k&;p|u?v6>%51=X4%u=JxNUdE9Fq^x zObJyXYdXA3kHSFD20q3rHQG)|xK}^EM^2|LZ1ycZPA64NDOTJe-*w78r&~_NNvQ=q z88PiOG!RdPp{vAIr8Dee1k`jV0eANb)ou{MXIlwV>CY1uGADYlwtjfEuy1%rn7Y$r z

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 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 E3 RRF/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Bootscreen.h new file mode 100644 index 0000000000..2cc4ed7ac0 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_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 E3 RRF" + +/** + * 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 E3 RRF/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_Statusscreen.h new file mode 100644 index 0000000000..de64bb2be6 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech E3 RRF/_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 E3 RRF" + +/** + * 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 1.4/README.md b/config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md new file mode 100644 index 0000000000..b79b46a721 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR 1.4/README.md @@ -0,0 +1,14 @@ +## SKR 1.4 Board + +These files configure Marlin for an Ender 3 with `BOARD_BTT_SKR_V1_4` board installed with silent stepper drivers and a BLTouch probe. The probe is configured to use the dedicated BLTouch port on the board, so you can remove the Z endstop entirely. + +Features included: + + - BLTouch + - TMC2208 Stepper Drivers + - Advanced Pause for Filament Change (`M600`) + - Nozzle Parking + +### Nozzle to Probe Offsets + +You'll need to to adjust the `NOZZLE_TO_PROBE_OFFSET` values according to your probe's mounting location. This example is based on the Ender 3 BLTouch mount posted at https://www.thingiverse.com/thing:3584158 diff --git a/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Bootscreen.h new file mode 100644 index 0000000000..3a2cd25f32 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_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 E3 Turbo/2-into-1 Hotend" + +/** + * 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 E3 Turbo/2-into-1 Hotend/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_Statusscreen.h new file mode 100644 index 0000000000..59188a99e7 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/2-into-1 Hotend/_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 E3 Turbo/2-into-1 Hotend" + +/** + * 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 E3 Turbo/Dual Z/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Bootscreen.h new file mode 100644 index 0000000000..f4e26e353c --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_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 E3 Turbo/Dual Z" + +/** + * 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 E3 Turbo/Dual Z/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_Statusscreen.h new file mode 100644 index 0000000000..1d8f0d3fe2 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Dual Z/_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 E3 Turbo/Dual Z" + +/** + * 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 E3 Turbo/Single Extruder/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Bootscreen.h new file mode 100644 index 0000000000..c7a686f828 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_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 E3 Turbo/Single Extruder" + +/** + * 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 E3 Turbo/Single Extruder/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_Statusscreen.h new file mode 100644 index 0000000000..ea06110a68 --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3 Turbo/Single Extruder/_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 E3 Turbo/Single Extruder" + +/** + * 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 E3-DIP V1.1/_Bootscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Bootscreen.h new file mode 100644 index 0000000000..b9f77d0dcb --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_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 E3-DIP V1.1" + +/** + * 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 E3-DIP V1.1/_Statusscreen.h b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_Statusscreen.h new file mode 100644 index 0000000000..ffd391c5ba --- /dev/null +++ b/config/examples/Creality/Ender-3/BigTreeTech SKR E3-DIP V1.1/_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 E3-DIP V1.1" + +/** + * 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/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..6dd410da34 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV422/_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/CrealityV422" + +/** + * 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/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..a40ef1c4f6 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV422/_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/CrealityV422" + +/** + * 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/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-3/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..b57c8d9463 --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV427/_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/CrealityV427" + +/** + * 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/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-3/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..e1de9b500e --- /dev/null +++ b/config/examples/Creality/Ender-3/CrealityV427/_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/CrealityV427" + +/** + * 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..105c0a397e --- /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: + * https://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-3/MKS Robin E3/README.md b/config/examples/Creality/Ender-3/MKS Robin E3/README.md new file mode 100644 index 0000000000..802be739d9 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/README.md @@ -0,0 +1,10 @@ +## MKS V1.1 Board + +To compile Marlin for this board set `MOTHERBOARD` to `BOARD_MKS_ROBIN_E3_V1_1` (not `BOARD_MKS_ROBIN_E3`). + +Changes in MKS Version 1.1: + - `Z_STEP_PIN` is now `PC14` + - `Z_DIR_PIN` is now `PC15` + - The EEPROM on the board is the AT24C32D (32KB) + +Full specs and documentation for MKS E3 hardware can be found at https://github.com/makerbase-mks/MKS-Robin-E3-E3D/tree/master/hardware diff --git a/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Bootscreen.h new file mode 100644 index 0000000000..766e508767 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.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/MKS Robin E3/V1.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/MKS Robin E3/V1.0/_Statusscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.0/_Statusscreen.h new file mode 100644 index 0000000000..ab167bbd1e --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.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/MKS Robin E3/V1.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/MKS Robin E3/V1.1/_Bootscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h new file mode 100644 index 0000000000..e4ed424978 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Bootscreen.h @@ -0,0 +1,99 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/MKS Robin E3/V1.1" + +/** + * 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/MKS Robin E3/V1.1/_Statusscreen.h b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h new file mode 100644 index 0000000000..314d82afe6 --- /dev/null +++ b/config/examples/Creality/Ender-3/MKS Robin E3/V1.1/_Statusscreen.h @@ -0,0 +1,64 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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/MKS Robin E3/V1.1" + +/** + * 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-5 Plus/README.md b/config/examples/Creality/Ender-5 Plus/README.md new file mode 100644 index 0000000000..c131956ecb --- /dev/null +++ b/config/examples/Creality/Ender-5 Plus/README.md @@ -0,0 +1 @@ +Ender-5 Plus Configurations for Marlin Firmware diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo with BLTouch/README.md b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo with BLTouch/README.md new file mode 100644 index 0000000000..6ef0767246 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo with BLTouch/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo with BL-Touch in Ender 5 Pro + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 Pro electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. BLTouch can be connected like the SKR E3 mini v2.0 to the Z-PROBE pins (check naming: https://github.com/bigtreetech/BIGTREETECH-SKR-E3-Turbo/blob/master/Hardware/BTT%20SKR%20E3%20Turbo-Pin.pdf). See a SKR E3 mini v2.0 guide: https://linsomniac.gitlab.io/post/2020-06-20-ender3-pro-skr-v2_0-bltouch-upgrade/ + +This folder contains configuration files for Ender 5 Pro using v2.0.X Marlin with BLTouch. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md new file mode 100644 index 0000000000..7bc72037bb --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR E3 Turbo/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo in Ender 5 Pro + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 Pro electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. + +This folder contains configuration files for Ender 5 Pro using v2.0.X Marlin. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_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/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 1.2/_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 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md new file mode 100644 index 0000000000..7a21aa7b48 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/README.md @@ -0,0 +1,62 @@ +## Creality Ender-5 Pro with BTT SKR Mini E3 + +The configuration was made on a Phaetus Dragon hotend and a BMG clone extruder, running the Leon-Me Gen 5 cooling shroud with dual 5015s. + +### Changes: + +#### Configuration.h + +- Set `SERIAL_PORT` to `2` +- Set `SERIAL_PORT_2` to `-1` +- Set `MOTHERBOARD` to `BOARD_BTT_SKR_MINI_E3_V2_0` +- Enabled `PIDTEMPBED` and set default values +- Set `EXTRUDE_MAXLENGTH` to `600` to allow BMG extruder load/unload +- Set `[XYZE]_DRIVER_TYPE` to `TMC2209` +- Enabled `CLASSIC_JERK` and set default values +- Disabled `Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN` +- Enabled `USE_PROBE_FOR_Z_HOMING` +- Set `Z_MIN_PROBE_PIN` to `PC14` +- Enabled `BLTOUCH` +- Set `PROBING_MARGIN` to `8` +- Set `XY_PROBE_FEEDRATE` and `Z_PROBE_FEEDRATE_FAST` to faster values +- Set `MULTIPLE_PROBING` to 2 +- Set `INVERT_[XYZE]_DIR` to `true` +- Set `X_BED_SIZE` to `230` to regain bed size +- Set `Y_BED_SIZE` to `225` to regain bed size +- Enabled `SOFT_ENDSTOPS_MENU_ITEM` +- Enabled `AUTO_BED_LEVELING_BILINEAR` +- Enabled `RESTORE_LEVELING_AFTER_G28` +- Enabled `PREHEAT_BEFORE_LEVELING` and set default values +- Enabled `G26_MESH_VALIDATION` +- Set `GRID_MAX_POINTS_X` to `9` +- Enabled `EXTRAPOLATE_BEYOND_GRID` +- Enabled `MESH_EDIT_GFX_OVERLAY`, set `MESH_INSET` to `10` and `GRID_MAX_POINTS_X` to `9` (for UBL) +- Enabled `LCD_BED_LEVELING` +- Enabled `MESH_EDIT_MENU` +- Enabled `LEVEL_BED_CORNERS` +- Enabled `Z_SAFE_HOMING` +- Set `HOMING_FEEDRATE_MM_M` to faster values +- Enabled `NOZZLE_PARK_FEATURE` +- Disabled `SPEAKER` to work around fan stuck at 100% issue +- Enabled `FAN_SOFT_PWM` for my dual 5015 setup + +#### Configuration_adv.h + +- Enabled `USE_CONTROLLER_FAN` +- Enabled `CONTROLLER_FAN_EDITABLE` +- Set `BLTOUCH_DELAY` to `500` +- Enabled `PROBE_OFFSET_WIZARD` +- Enabled `BROWSE_MEDIA_ON_INSERT` +- Enabled `LONG_FILENAME_HOST_SUPPORT` +- Set `SDCARD_CONNECTION` to `ONBOARD` +- Enabled `BABYSTEP_ZPROBE_OFFSET` and `BABYSTEP_ZPROBE_GFX_OVERLAY` +- Enabled `LIN_ADVANCE` and set default value +- Enabled `ARC_P_CIRCLES` +- Enabled `ADVANCED_PAUSE_FEATURE` +- Set `FILAMENT_CHANGE_UNLOAD_LENGTH` to `500` +- Enabled `ADVANCED_PAUSE_CONTINUOUS_PURGE` +- Set `ADVANCED_PAUSE_PURGE_LENGTH` to `600` +- Enabled `PARK_HEAD_ON_PAUSE` +- Set all `SLAVE_ADDRESS` to SKR values +- Set `[XY]_STALL_SENSITIVITY` to `50` +- Enabled `IMPROVE_HOMING_RELIABILITY` diff --git a/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_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/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/BigTreeTech SKR Mini E3 2.0 with BLTouch/_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 Pro/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV1/_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/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV1/_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 Pro/CrealityV422/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV422/_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/CrealityV422/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV422/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV422/_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 Pro/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV427/_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/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-5 Pro/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..f1f5666638 --- /dev/null +++ b/config/examples/Creality/Ender-5 Pro/CrealityV427/_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..ab82837651 --- /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: + * 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 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..b6f5825eb0 --- /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: + * 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 60 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 81 +#endif diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md new file mode 100644 index 0000000000..792b0b61b5 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo with BLTouch/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo with BL-Touch in Ender 5 + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. BLTouch can be connected like the SKR E3 mini v2.0 to the Z-PROBE pins (check naming: https://github.com/bigtreetech/BIGTREETECH-SKR-E3-Turbo/blob/master/Hardware/BTT%20SKR%20E3%20Turbo-Pin.pdf). See a SKR E3 mini v2.0 guide: https://linsomniac.gitlab.io/post/2020-06-20-ender3-pro-skr-v2_0-bltouch-upgrade/ + +This folder contains configuration files for Ender 5 using v2.0.X Marlin with BLTouch. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md new file mode 100644 index 0000000000..331ce49968 --- /dev/null +++ b/config/examples/Creality/Ender-5/BigTreeTech SKR E3 Turbo/README.md @@ -0,0 +1,13 @@ +# BigTreeTech SKR E3 Turbo in Ender 5 + +This board is larger than the other SKR Mini E3 and Creality boards and interferes with the power supply in the Ender 5 electronics case. + +I (lpla) did a simple adapter for the power supply that can use short M8 screws and bolts (glued to this adapter): https://www.thingiverse.com/thing:4676935 + +That way the PSU gives enough space for the board to be drop-in replace. So all components fit inside the electronics case and are hold properly. + +Regarding wiring, electronics case fan should be connected to the FAN2 pins. + +This folder contains configuration files for Ender 5 using v2.0.X Marlin. + +To compile, just use these config files and set `default_envs = LPC1769` in platformio.ini file. diff --git a/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Bootscreen.h new file mode 100644 index 0000000000..3d6234e319 --- /dev/null +++ b/config/examples/Creality/Ender-5/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-5/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-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h b/config/examples/Creality/Ender-5/BigTreeTech SKR Mini E3 1.2/_Statusscreen.h new file mode 100644 index 0000000000..a30807a5ef --- /dev/null +++ b/config/examples/Creality/Ender-5/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-5/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-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/CrealityV1/_Bootscreen.h b/config/examples/Creality/Ender-5/CrealityV1/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV1/_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/CrealityV1/_Statusscreen.h b/config/examples/Creality/Ender-5/CrealityV1/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV1/_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/CrealityV427/_Bootscreen.h b/config/examples/Creality/Ender-5/CrealityV427/_Bootscreen.h new file mode 100644 index 0000000000..ab82837651 --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV427/_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/CrealityV427/_Statusscreen.h b/config/examples/Creality/Ender-5/CrealityV427/_Statusscreen.h new file mode 100644 index 0000000000..997351457c --- /dev/null +++ b/config/examples/Creality/Ender-5/CrealityV427/_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/Creality/Ender-6/README.md b/config/examples/Creality/Ender-6/README.md new file mode 100644 index 0000000000..0b65b00eb2 --- /dev/null +++ b/config/examples/Creality/Ender-6/README.md @@ -0,0 +1,29 @@ +# Ender-6 Configurations for Marlin Firmware + +## Install USB Console Cable Before Starting + +The Ender 6 does not ship with an accessible USB port. It is a good idea to open the bottom panel on the printer base and connect a USB cable to the micro-USB port on the motherboard. Even if the factory LCD is reflashed with compatible firmware, not all features will be accessible. A USB console cable will allow the printer to be controlled without the LCD and provide full functionality. + +## BLTouch Instructions + +After installing a BLTouch probe, enable the custom option `ENABLE_BLTOUCH_PROBE` at the top of `Configuration.h` to get all the settings needed to support the probe. Creality is not shipping printers with a BLTouch option at this time, but the existence of factory mounts, wiring, and OEM firmware supporting it suggests this may change in the future. + +NOTE: Due to slight manufacturing differences, you will still need to tune your probe's `NOZZLE_TO_PROBE_OFFSET` values, at least for Z. For best results use the Probe Offset Wizard. + +## Flashing Instructions + +Copy the compiled "`firmware.bin`" file to an SD card. Insert it into the printer while powered off, then power it on. The update will take a few seconds. + +The printer remembers the name of the last used firmware file. Every new firmware file name must be different from the previously used file name. + +NOTE: The factory LCD firmware is only compatible with Creality firmware. The LCD will not show the progress bar increment and the standard UI will not function. This is expected. + +## Marlin DGUS UI Instructions + +The factory LCD can use the Marlin DGUS interface available at https://github.com/coldtobi/Marlin_DGUS_Resources. This is optional. Marlin will still work through an external client attached via USB (see first section). + +Flash the LCD with a microSD card inserted into the slot on the LCD panel inside the printer (not the main SD slot). The front panel must be disassembled for access. The microSD card must be <= 8 GB and formatted with a 4K cluster size. Copy the DWIN_SET folder to the microSD card. Insert it into the LCD while powered off, then power on the printer. You should see a blue status screen, the LCD cycle through the UI background interfaces, then stop with a "SD Card Process... END!" message. Afterward, remove the microSD card and power cycle the printer again. + +The Creality firmware can be restored by downloading the Ender 6 V1.0.1 firmware from https://www.creality.com/download and following the above flashing procedure with the Creality-provided DWIN_SET folder. + +NOTE: you may need to physically rotate the LCD 180˚ before reinstalling into the printer for the UI to be the right side up. diff --git a/config/examples/Dagoma/Disco Ultimate/README.md b/config/examples/Dagoma/Disco Ultimate/README.md new file mode 100644 index 0000000000..79cce6bca2 --- /dev/null +++ b/config/examples/Dagoma/Disco Ultimate/README.md @@ -0,0 +1,8 @@ +# Dagoma Disco Ultimate Configuration + +## Requirements +- Dagoma Disco Ultimate with F5 board +- Reprap screen + +## TODO +The pause button feature is not yet implemented but its behavior can be replicated with the screen. \ No newline at end of file diff --git a/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h b/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h new file mode 100644 index 0000000000..69af19362b --- /dev/null +++ b/config/examples/Dagoma/Disco Ultimate/_Bootscreen.h @@ -0,0 +1,52 @@ +/** + * 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 . + * + */ + +/** + * 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 2500 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B01111111,B11100000,B00000001,B11100000,B00000001,B11111111,B10000000,B00111111,B11100000,B00111100,B00000000,B11110000,B00001111,B00000000, + B01111111,B11111000,B00000011,B11110000,B00000111,B11111111,B10000000,B01111111,B11111000,B00111110,B00000001,B11110000,B00001111,B10000000, + B01110000,B00111100,B00000011,B11110000,B00001111,B10000001,B00000000,B11110000,B00111100,B00111111,B00000011,B11110000,B00011111,B10000000, + B01110000,B00001110,B00000111,B11111000,B00001110,B00000000,B00000001,B11100000,B00011110,B00111111,B10000111,B11110000,B00011101,B11000000, + B01110000,B00001111,B00000111,B00111000,B00011100,B00000000,B00000001,B11000000,B00001110,B00111011,B10001111,B01110000,B00111001,B11000000, + B01110000,B00000111,B00000111,B00111100,B00011100,B00000000,B00000011,B10000000,B00001110,B00111001,B11001110,B01110000,B00111000,B11100000, + B01110000,B00000111,B00001110,B00011100,B00011100,B00001111,B11110011,B10000000,B00000111,B00111000,B11111100,B01110000,B01110000,B11100000, + B01110000,B00000111,B00001110,B00011110,B00011100,B00001111,B11110011,B10000000,B00000111,B00111000,B11111000,B01110000,B01110000,B01110000, + B01110000,B00000111,B00001100,B00001110,B00011100,B00001111,B11110011,B10000000,B00001110,B00111000,B01111000,B01110000,B11100000,B01110000, + B01110000,B00001111,B00000100,B00001111,B00011100,B00000000,B01110001,B11000000,B00001110,B00111000,B00110000,B01110000,B11100000,B00111000, + B01110000,B00001110,B00110000,B00000111,B00011110,B00000000,B01100001,B11000000,B00011110,B00111000,B00000000,B01110000,B11100000,B00111000, + B01110000,B00011110,B00110000,B00000111,B10001111,B00000000,B11100000,B11100000,B00111100,B00111000,B00000000,B01110001,B11000000,B00011100, + B01111111,B11111100,B00010011,B11111111,B10000111,B11111111,B11000000,B01111111,B11111000,B00111000,B00000000,B01110001,B11000000,B00011100, + B01111111,B11110000,B00110011,B11111111,B11000011,B11111111,B10000000,B00111111,B11110000,B00111000,B00000000,B01110011,B10011111,B11111110, + B01111111,B10000000,B00110011,B11111111,B11000000,B01111110,B00000000,B00001111,B11000000,B00011000,B00000000,B01100011,B10011111,B11111110 +}; 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/Eryone/Thinker SE/README.md b/config/examples/Eryone/Thinker SE/README.md new file mode 100644 index 0000000000..ef48e06ab8 --- /dev/null +++ b/config/examples/Eryone/Thinker SE/README.md @@ -0,0 +1,5 @@ +## Eryon Thinker SE + + - BLTouch probe + - TMC2208 (standalone) stepper drivers + - Filament Sensor diff --git a/config/examples/Eryone/Thinker SE/_Bootscreen.h b/config/examples/Eryone/Thinker SE/_Bootscreen.h new file mode 100644 index 0000000000..7ad31a07fe --- /dev/null +++ b/config/examples/Eryone/Thinker SE/_Bootscreen.h @@ -0,0 +1,94 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2021 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 + */ +#pragma once + +#define CONFIG_EXAMPLES_DIR "Eryone/Thinker SE" + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00011100,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,B00000000,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111100,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000001,B11111111,B11001111,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000111,B11111111,B11100011,B11111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00011111,B11111111,B11000001,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111111,B10000000,B01111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111110,B00000000,B00011111,B11111001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11111000,B00000000,B00000111,B11100011,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11100000,B00000000,B00000001,B11001111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B10000000,B00000000,B00000000,B00111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B00000000,B00001110,B00000000,B00111111,B10011111,B11111110,B01111111,B11110000,B00000000,B00000000,B11111100,B00001100,B00000011,B00111111,B11111110, + B01111111,B00000000,B00011111,B10000000,B00111111,B10011111,B11111110,B01111111,B11111001,B11000000,B00110001,B11111110,B00011110,B00000011,B00111111,B11111110, + B01111111,B00000000,B01111111,B11100000,B00111111,B10001111,B11111000,B01111111,B11111101,B11000000,B01110011,B11111111,B00011111,B00000011,B00001111,B11111000, + B01111111,B00000001,B11111111,B11110000,B00111111,B10000000,B00000000,B01110000,B00011100,B11100000,B01110111,B10000011,B10011111,B10000011,B00000000,B00000000, + B01111111,B00000001,B11111111,B11100000,B00111111,B10000000,B00000000,B01110000,B00011100,B11110001,B11100111,B00000011,B10011111,B11000011,B00000000,B00000000, + B01111111,B00000000,B01111111,B10000000,B00111111,B10011111,B11111110,B01111111,B11111100,B01111111,B11000111,B00000001,B11011101,B10000011,B00111111,B11111110, + B01111111,B00000000,B00011110,B00000000,B00111111,B10011111,B11111110,B01111111,B11111000,B00111111,B10000110,B00000001,B11011100,B00010011,B00111111,B11111110, + B01111111,B00000000,B00001100,B00000000,B00111111,B10001111,B11111100,B01111111,B11111000,B00001110,B00000111,B00000001,B10011100,B00111111,B00001111,B11111000, + B01111111,B00000000,B00111111,B00000000,B00111111,B10000000,B00000000,B01110000,B00011100,B00000110,B00000111,B00000011,B10011100,B00111111,B00000000,B00000000, + B01111111,B00000000,B11111111,B10000000,B00111111,B10000000,B00000000,B01110000,B00011100,B00000110,B00000011,B11000111,B10011100,B00011111,B00000000,B00000000, + B01111111,B00000001,B11111111,B11100000,B00111111,B10011111,B11111110,B01110000,B00011100,B00000110,B00000001,B11111111,B00011100,B00001111,B00111111,B11111110, + B01111111,B00000011,B11111111,B11000000,B00111111,B10011111,B11111110,B01100000,B00011000,B00000110,B00000000,B11111110,B00001100,B00000111,B00111111,B11111110, + B01111111,B00000000,B11111111,B00000000,B00111111,B10001111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111000, + B01111111,B00000000,B00111100,B00000000,B00111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B10000000,B00011000,B00000000,B01111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B01111111,B11000000,B00000000,B00000001,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11110000,B00000000,B00000011,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111100,B00000000,B00001111,B11111111,B10011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100, + B01111111,B11111111,B00000000,B00111111,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00111111,B11111111,B10000000,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00001111,B11111111,B11100011,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000011,B11111111,B11110111,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B11111111,B11110111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00111111,B11110111,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00011111,B11110111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000111,B11110111,B11111000,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,B00000000,B01110111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00010110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,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,B11111111,B11111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000000,B11111111,B00011111,B11111100,B00000000,B00000000, + B00001111,B11111111,B11111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000001,B11111111,B10011111,B11111100,B00000000,B00000000, + B00000000,B11111000,B01111000,B00000011,B11000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,B11100011,B10011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111011,B11100011,B11001111,B01111100,B01111000,B11110011,B11111000,B11110111,B10000011,B11000000,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111111,B11110011,B11001111,B11111110,B01111001,B11100111,B11111100,B11111111,B10000011,B11111100,B00011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111100,B11110011,B11001111,B10011110,B01111011,B11001111,B10111110,B11111100,B00000001,B11111111,B00011111,B11111000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B10001111,B00011110,B11111000,B00000001,B11111111,B10011111,B11111000,B11111111,B11110000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B00001111,B11111110,B11110000,B00000000,B01111111,B10011111,B00000000,B11111111,B11110000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B10001111,B11111110,B11110000,B00000000,B00000111,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111111,B11001111,B00000000,B11110000,B00000000,B00000011,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111011,B11101111,B10001110,B11110000,B00000011,B10000111,B11011111,B00000000,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111001,B11110111,B11111110,B11110000,B00000011,B11111111,B10011111,B11111100,B00000110,B00000000, + B00000000,B11111000,B01111000,B11110011,B11001111,B00011110,B01111000,B11111011,B11111100,B11110000,B00000001,B11111110,B00011111,B11111100,B00000110,B00000000 +}; diff --git a/config/examples/Eryone/Thinker V2/_Bootscreen.h b/config/examples/Eryone/Thinker V2/_Bootscreen.h new file mode 100755 index 0000000000..a7a328daba --- /dev/null +++ b/config/examples/Eryone/Thinker V2/_Bootscreen.h @@ -0,0 +1,79 @@ +/** + * 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 "Eryone/Thinker V2" + +/** + * Made with Marlin Bitmap Converter + * https://marlinfw.org/tools/u8glib/converter.html + * + * This bitmap from the file 'tHINKER V2.png' + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B01111111,B11111111,B00001111,B11111111,B00000000,B00000000,B00000000,B00011111,B10000000,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B10000111,B00000000,B00111000,B00111111,B11000000,B01110000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111110,B00011111,B11111111,B11000011,B00000000,B00111000,B01111111,B11100000,B01111000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000001,B11000011,B00000000,B00110000,B11110000,B11110000,B01111000,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11100011,B00000000,B00110000,B11100000,B01111000,B01111100,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B01100011,B10000000,B01110001,B11000000,B00111000,B01101110,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11100011,B10000000,B01110001,B10000000,B00011000,B01100111,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000001,B11100001,B11100001,B10000000,B00011100,B01100111,B00000011,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B11111110,B00011111,B11111111,B11000001,B11111111,B11100011,B10000000,B00011100,B01100011,B00000011,B00000111,B11111111,B11000000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B11000000,B01111111,B10000011,B10000000,B00011100,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011111,B11111111,B10000000,B00111111,B00000011,B10000000,B00011100,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000001,B11000000,B00001100,B00000011,B10000000,B00011100,B01100000,B00110011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B10000000,B00011000,B01100000,B00111011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B11000000,B00011000,B01100000,B00111011,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000001,B11000000,B00111000,B01100000,B00011111,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000000,B11100000,B01110000,B01100000,B00001111,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00011000,B00000000,B11000000,B00001100,B00000000,B01111001,B11110000,B01100000,B00001111,B00000000,B00000000,B00000000,B00000000, + B00000000,B01111111,B11111111,B00011000,B00000000,B11000000,B00001100,B00000000,B01111111,B11100000,B01100000,B00000111,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111111,B00011000,B00000000,B11000000,B00001100,B00000000,B00011111,B10000000,B01100000,B00000011,B00001111,B11111111,B11100000,B00000000, + B00000000,B01111111,B11111110,B00001000,B00000000,B11000000,B00000100,B00000000,B00001111,B00000000,B00100000,B00000001,B00001111,B11111111,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,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00001100,B00000011,B00000000,B00000100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00111111,B11101100,B00000011,B00000000,B00000100,B00000000,B00000000,B00000000,B11000000,B01100111,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00000000,B00000000,B00000100,B00000000,B00000000,B00000000,B01000000,B01000100,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00000000,B00000000,B00000100,B00000000,B00000000,B00000000,B01100000,B11000000,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001101,B11100011,B00110111,B10000100,B01110001,B11100011,B01100000,B00100000,B11000000,B00100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001110,B00110011,B00111000,B11000100,B11000011,B00110011,B10000000,B00110000,B10000000,B01100000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B10000110,B00010011,B00000000,B00110001,B10000000,B01000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000101,B00000110,B00010011,B00000000,B00010001,B00000001,B11000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000111,B00000111,B11110011,B00000000,B00011001,B00000011,B10000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000101,B10000100,B00000011,B00000000,B00011011,B00000110,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B11000110,B00000011,B00000000,B00001010,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B01100011,B00010011,B00000000,B00001110,B00001100,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000010,B00001100,B00110011,B00110000,B11000100,B00110001,B11100011,B00000000,B00001110,B00001111,B11100000,B00000000,B00000000,B00000000 +}; 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..5189c547d0 --- /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..d991536da2 --- /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/Labists/ET4/README.md b/config/examples/Labists/ET4/README.md new file mode 100644 index 0000000000..bde2f1f1dd --- /dev/null +++ b/config/examples/Labists/ET4/README.md @@ -0,0 +1,54 @@ +# Marlin for Labists ET4 + +_Note: The Labists ET4 is OEM'd by Anet, so the update process is very similar._ + +A debugging/programming probe (_e.g._, ST-Link, J-Link, or Black Magic Probe) is required to flash the the [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases) due to incompatibility with the stock bootloader. Once OpenBLT is flashed, Marlin can be updated by SD card just like the original firmware. + +## Flashing OpenBLT Bootloader with an ST-Link V2 + +1. Using three female to female Dupont jumper cables, connect `GND`, `SWDIO`, and `SWCLK` pins from the ST-Link to the Serial Wire Debug (SWD) header on the motherboard. Pay close attention that the cables on SWD header side match the order below using the `U` and `G` letters printed on the motherboard as a reference: + + ``` + SWD Header on ET Series motherboard + ___ + U | o | (not connected) + |---| + | o | SWDIO + |---| + | o | SWCLCK + |---| + G | o | GND + --- + ``` + Photo reference: + + + + _`GND` is connected to `GND` (black wire), `SWDIO` to `SWDIO` (yellow wire), and `SWCLK` to `SWCLK` (green wire). Your ST-Link pinout may differ from the one pictured, so double-check pinout._ +2. Plug in the ST-Link to your computer's USB port & power on your printer. +3. Download & install [STM32 ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html). +4. Launch STM32 ST-Link Utility & click `Target` then `Connect`. +5. Back up the original motherboard firmware starting at address `0x08000000` with a size of `0x100000`: + +6. Download & extract [OpenBLT bootloader for Anet ET4/ET5 series printers](https://github.com/davidtgbe/openblt/releases). +7. Click on `Target` then `Program...` +8. Set the `Start Address` to `0x08000000`. +9. Under `File Path`, click `Browse` and select `openblt_et4.bin` extracted in Step 6. +10. Click `Start` to initiate the flashing process. +11. OpenBLT for Anet ET4/ET5 series printers is now installed on your motherboard. + +## Compiling Marlin + +1. Overwrite the default Marlin configs with the ones from this folder. +2. Compile with the `Anet_ET4_OpenBLT` PlatformIO environment. + +## Installing Marlin + +1. Once Marlin is compiled, copy `Marlin/.pio/build/Anet_ET4_OpenBLT/firmware.srec` to a blank SD card and insert it into your printer. +2. Power cycle your printer to start the update process. + +## Acknowledgements +- [@davidtgbe](https://github.com/davidtgbe) for porting Marlin to the ET4/ET5 series. +- [Telegram Anet ET4 spanish group](https://t.me/anetet4esp), especially [@olidnon](https://github.com/olidnon), who lent his motherboard for testing. +- [@uwe](https://github.com/uwe) and [@mubes](https://github.com/mubes) from Black Magic Probe team, and to [@Ebiroll](https://github.com/Ebiroll) (BMP/ESP32). +- All contributors and testers. 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/Nextion/HMI/Marlin4Nextion.HMI.zip b/config/examples/Nextion/HMI/Marlin4Nextion.HMI.zip new file mode 100644 index 0000000000000000000000000000000000000000..c2157d010269dd68eb7824583e5b92239a6426a2 GIT binary patch literal 10681280 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