From 3eff6ad375be96c8d4a3d16853aefa64b6bcf2b5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 19 Mar 2020 15:38:37 -0500 Subject: [PATCH] Examples Extras --- config/examples/AliExpress/CL-260/README.txt | 15 + config/examples/BQ/Hephestos_2/README.md | 29 ++ config/examples/BQ/Hephestos_2/_Bootscreen.h | 100 ++++ config/examples/Cartesio/_Bootscreen.h | 100 ++++ config/examples/Creality/CR-10/_Bootscreen.h | 55 +++ .../examples/Creality/CR-10/_Statusscreen.h | 80 ++++ config/examples/Creality/CR-10S/_Bootscreen.h | 55 +++ .../examples/Creality/CR-10S/_Statusscreen.h | 452 ++++++++++++++++++ .../examples/Creality/CR-10mini/_Bootscreen.h | 55 +++ .../Creality/CR-10mini/_Statusscreen.h | 80 ++++ config/examples/Creality/Ender-2/README.md | 18 + .../examples/Creality/Ender-2/_Bootscreen.h | 96 ++++ .../examples/Creality/Ender-2/_Statusscreen.h | 130 +++++ config/examples/Creality/Ender-3/README.md | 18 + .../examples/Creality/Ender-3/_Bootscreen.h | 96 ++++ .../examples/Creality/Ender-3/_Statusscreen.h | 130 +++++ config/examples/Felix/README.md | 60 +++ .../Geeetech/Prusa i3 Pro B/README.md | 39 ++ config/examples/JGAurora/A5/README.md | 39 ++ config/examples/Malyan/M150/README.md | 55 +++ config/examples/Malyan/M150/_Bootscreen.h | 70 +++ config/examples/Micromake/C1/README.md | 15 + config/examples/Velleman/K8200/README.md | 20 + config/examples/Velleman/K8400/README.md | 15 + .../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 config/examples/delta/kossel_pro/README.md | 5 + config/examples/delta/kossel_xl/README.md | 21 + .../examples/gCreate/gMax1.5+/_Bootscreen.h | 100 ++++ 30 files changed, 1998 insertions(+) create mode 100644 config/examples/AliExpress/CL-260/README.txt 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/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10S/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10S/_Statusscreen.h create mode 100644 config/examples/Creality/CR-10mini/_Bootscreen.h create mode 100644 config/examples/Creality/CR-10mini/_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/README.md create mode 100644 config/examples/Creality/Ender-3/_Bootscreen.h create mode 100644 config/examples/Creality/Ender-3/_Statusscreen.h create mode 100644 config/examples/Felix/README.md create mode 100644 config/examples/Geeetech/Prusa i3 Pro B/README.md create mode 100644 config/examples/JGAurora/A5/README.md create mode 100644 config/examples/Malyan/M150/README.md create mode 100644 config/examples/Malyan/M150/_Bootscreen.h create mode 100644 config/examples/Micromake/C1/README.md create mode 100644 config/examples/Velleman/K8200/README.md create mode 100644 config/examples/Velleman/K8400/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/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/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/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..0e771c0c7f --- /dev/null +++ b/config/examples/BQ/Hephestos_2/_Bootscreen.h @@ -0,0 +1,100 @@ +/** + * 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: + * http://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..e0efd83767 --- /dev/null +++ b/config/examples/Cartesio/_Bootscreen.h @@ -0,0 +1,100 @@ +/** + * 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: + * http://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/_Bootscreen.h b/config/examples/Creality/CR-10/_Bootscreen.h new file mode 100644 index 0000000000..d74e7ae9f9 --- /dev/null +++ b/config/examples/Creality/CR-10/_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 . + * + */ + +/** + * 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 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 +}; \ No newline at end of file diff --git a/config/examples/Creality/CR-10/_Statusscreen.h b/config/examples/Creality/CR-10/_Statusscreen.h new file mode 100644 index 0000000000..a03bc992fa --- /dev/null +++ b/config/examples/Creality/CR-10/_Statusscreen.h @@ -0,0 +1,80 @@ +/** + * 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 Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_SCREENWIDTH 128 +#define STATUS_SCREEN_HOTEND_TEXT_X(E) 38 +#define STATUS_SCREEN_BED_TEXT_X 73 + +//============================================ + +const unsigned char status_screen0_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00111110,B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B11000001,B10000110,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B11000001,B10000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B00000000,B00000001,B10000110,B00000100,B00000000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00000000,B00000011,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000000,B00011111,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000000,B00000011,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00000000,B00000001,B10000110,B00000100,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101100,B00000000,B11010000, + B00000000,B11000001,B10000110,B00001100,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B11000001,B10000110,B00011000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00111110,B00001111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 +}; +const unsigned char status_screen1_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00111110,B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B11000001,B10000110,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B11000001,B10000110,B00001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B00000000,B00000001,B10000110,B00000100,B00000000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000011,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00011111,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000011,B00000110,B00000100,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000001,B10000110,B00000100,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B00000011,B11010000, + B00000000,B11000001,B10000110,B00001100,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B11000001,B10000110,B00011000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00111110,B00001111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/_Bootscreen.h b/config/examples/Creality/CR-10S/_Bootscreen.h new file mode 100644 index 0000000000..38fb68f7da --- /dev/null +++ b/config/examples/Creality/CR-10S/_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 . + * + */ + +/** + * 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 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10S/_Statusscreen.h b/config/examples/Creality/CR-10S/_Statusscreen.h new file mode 100644 index 0000000000..30264c6def --- /dev/null +++ b/config/examples/Creality/CR-10S/_Statusscreen.h @@ -0,0 +1,452 @@ +/** + * 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 Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_SCREENWIDTH 128 + +#define STATUS_SCREEN_HOTEND_TEXT_X(E) (38 + (E) * 20) + +#define STATUS_SCREEN_BED_TEXT_X (HOTENDS > 1 ? 81 : 73) + +// Can also be overridden in Configuration.h +#ifndef FAN_ANIM_FRAMES + #define FAN_ANIM_FRAMES 3 +#endif +#define STATUS_SCREEN_FAN_TEXT_X (FAN_ANIM_FRAMES == 3 ? 103 : 105) +#define STATUS_SCREEN_FAN_TEXT_Y (FAN_ANIM_FRAMES > 2 ? 28 : 27) + +//============================================ + +#if HOTENDS < 2 + + #if FAN_ANIM_FRAMES <= 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101100,B00000000,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B00000011,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + + #elif FAN_ANIM_FRAMES == 3 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00100000,B00100111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B11110000,B01111011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B11110000,B01111011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11111000,B11111101, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B11111000,B11111001, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000100,B00111111,B11100001, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000100,B00001111,B10000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000100,B00001111,B10000001, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000100,B00001111,B10000001, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000100,B00111111,B11100001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000100,B11111000,B11111001, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000101,B11111000,B11111101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000110,B11110000,B01111011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000110,B11110000,B01111011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00100000,B00100111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11000000,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11111111,B11111111 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000110,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00111110,B00000111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00111110,B00000011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00011110,B00000011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00011110,B00001101, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00000110,B00111101, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000100,B00000111,B00111101, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000100,B00001111,B11111111, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000111,B11111111,B11111111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000111,B11111111,B10000001, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000101,B11100111,B00000001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000101,B11000011,B00000001, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000101,B10000011,B11000001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000110,B00000011,B11000011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000110,B00000011,B11100011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000011,B11100111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11000011,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11111111,B11111111 + }; + const unsigned char status_screen2_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000011,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000011,B11100111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000011,B11110011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B10000011,B11100011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11000011,B11000001, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11100011,B10000001, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000101,B11110111,B00000001, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000111,B11111111,B10000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00000111,B11111111,B11111111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000100,B00001111,B11111111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000100,B00000111,B01111101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000100,B00001110,B00111101, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00000100,B00011110,B00011101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00000110,B00111110,B00001011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00000110,B01111110,B00000011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00111110,B00000111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11000110,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000111,B11111111,B11111111 + }; + + #elif FAN_ANIM_FRAMES == 4 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00111111,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01111110,B00011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01111100,B00011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101000,B01111100,B00001000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00111000,B00001000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101111,B00111001,B11001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B11111111,B11101000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B11000111,B11101000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101111,B11111111,B11101000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B00111001,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00111000,B01101000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111100,B00101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00110000,B01111100,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B11111000,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001111,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110100,B00011111,B11011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110110,B00011111,B10011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00011111,B00001000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10011110,B00001000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101111,B11111100,B00001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B11011100,B00001000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100111,B11101111,B11001000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B01110111,B11101000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B01111111,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B11110011,B11101000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100001,B11110001,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00110011,B11110000,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110111,B11110000,B01011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B11100000,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen2_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B10000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10000000,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110111,B10000001,B11011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110111,B11000011,B11011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B11000111,B11101000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100011,B11000111,B11111000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100001,B11111111,B10001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01101100,B00001000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01101100,B00001000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B01101100,B00001000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100011,B11111111,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00111111,B11000111,B10001000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B11000111,B11001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00110111,B10000111,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110111,B00000011,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000011,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111110,B00000010,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen3_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B11110000,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110001,B11100000,B00011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110001,B11100000,B00011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100001,B11100001,B11101000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11110011,B11101000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B01111111,B11101000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01110111,B11101000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101000,B11101110,B00101000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101111,B11011100,B00001000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B11111100,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10011110,B00001000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B00001111,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00110000,B00001111,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B00001111,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00011111,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11111000 + }; + + #endif + +#else // HOTENDS >= 2 + + #if FAN_ANIM_FRAMES <= 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101100,B00000000,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00100000,B00110000,B00010000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110000,B11111100,B00110000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101111,B00000011,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110011,B10000111,B00110000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + + #elif FAN_ANIM_FRAMES == 3 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00100000,B00100111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B11110000,B01111011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B11110000,B01111011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11111000,B11111101, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B11111000,B11111001, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00000100,B00111111,B11100001, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00000100,B00001111,B10000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00000100,B00001111,B10000001, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00000100,B00001111,B10000001, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00000100,B00111111,B11100001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00000100,B11111000,B11111001, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00000101,B11111000,B11111101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00000110,B11110000,B01111011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00000110,B11110000,B01111011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000111,B00100000,B00100111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00000111,B11000000,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000111,B11111111,B11111111 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000110,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00111110,B00000111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00111110,B00000011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00011110,B00000011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00011110,B00001101, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00000110,B00111101, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00000100,B00000111,B00111101, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00000100,B00001111,B11111111, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00000111,B11111111,B11111111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00000111,B11111111,B10000001, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00000101,B11100111,B00000001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00000101,B11000011,B00000001, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00000101,B10000011,B11000001, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00000110,B00000011,B11000011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00000110,B00000011,B11100011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000111,B00000011,B11100111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00000111,B11000011,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000111,B11111111,B11111111 + }; + const unsigned char status_screen2_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000011,B00011111, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000011,B11100111, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B00000011,B11110011, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,B10000011,B11100011, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11000011,B11000001, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000101,B11100011,B10000001, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00000101,B11110111,B00000001, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00000111,B11111111,B10000001, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00000111,B11111111,B11111111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00000100,B00001111,B11111111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00000100,B00000111,B01111101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00000100,B00001110,B00111101, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00000100,B00011110,B00011101, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00000110,B00111110,B00001011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00000110,B01111110,B00000011, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000111,B00111110,B00000111, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00000111,B11000110,B00011111, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000111,B11111111,B11111111 + }; + + #elif FAN_ANIM_FRAMES == 4 + + const unsigned char status_screen0_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00111111,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01111110,B00011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B01111100,B00011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101000,B01111100,B00001000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00111000,B00001000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00101111,B00111001,B11001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00101111,B11111111,B11101000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00101111,B11000111,B11101000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00101111,B11111111,B11101000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00100111,B00111001,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00100000,B00111000,B01101000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00100000,B01111100,B00101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00110000,B01111100,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110000,B11111100,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111001,B11111000,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00001111,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110100,B00011111,B11011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110110,B00011111,B10011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00011111,B00001000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10011110,B00001000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00101111,B11111100,B00001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00101111,B11011100,B00001000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00100111,B11101111,B11001000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00100000,B01110111,B11101000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00100000,B01111111,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00100000,B11110011,B11101000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00100001,B11110001,B11101000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00110011,B11110000,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110111,B11110000,B01011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111001,B11100000,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen2_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B10000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B10000000,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110111,B10000001,B11011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110111,B11000011,B11011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B11000111,B11101000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100011,B11000111,B11111000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00100001,B11111111,B10001000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00100000,B01101100,B00001000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00100000,B01101100,B00001000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00100000,B01101100,B00001000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00100011,B11111111,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00111111,B11000111,B10001000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00101111,B11000111,B11001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00110111,B10000111,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110111,B00000011,B11011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000011,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111110,B00000010,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11111000 + }; + const unsigned char status_screen3_bmp[] PROGMEM = { + B00111101,B11110000,B00000010,B00111000,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111000, + B01000100,B10001000,B00000110,B01000101,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B11111000, + B10000000,B10001000,B00000010,B01000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111001,B11110000,B00111000, + B10000000,B11110000,B00000010,B01000100,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110001,B11100000,B00011000, + B10000000,B10100011,B11110010,B01000100,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110001,B11100000,B00011000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100001,B11100001,B11101000, + B10000000,B10010000,B00000010,B01000100,B00010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11110011,B11101000, + B01000100,B10001000,B00000010,B01000101,B00010000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00100000,B01111111,B11101000, + B00111001,B11001100,B00000111,B00111001,B11100000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00100000,B01110111,B11101000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00101000,B11101110,B00101000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00101111,B11011100,B00001000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101111,B11111100,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00101111,B10011110,B00001000, + B00000000,B00011000,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00101111,B00001111,B00001000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00110000,B00001111,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110000,B00001111,B00011000, + B00000000,B00000100,B10001001,B00010000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00011111,B00111000, + B00000000,B01000100,B10001001,B00010000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111110,B00000000,B11111000, + B00000000,B00111000,B01110000,B11100000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11111000 + }; + + #endif + +#endif // HOTENDS >= 2 diff --git a/config/examples/Creality/CR-10mini/_Bootscreen.h b/config/examples/Creality/CR-10mini/_Bootscreen.h new file mode 100644 index 0000000000..38fb68f7da --- /dev/null +++ b/config/examples/Creality/CR-10mini/_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 . + * + */ + +/** + * 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 128 + +const unsigned char custom_start_bmp[] PROGMEM = { + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111100,B00000000,B00000000, + B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000110,B00011111,B11000000, + B00011000,B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B01100000, + B00010000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00111100,B00001100,B00000000,B00000000,B00000001,B10000011,B00001100,B00110000, + B00110000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000011,B00001100,B00011000, + B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00111111,B00001111,B00111100,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000001,B11011111,B00001111,B11100000,B11111110,B00000000,B01100000,B00011100,B00011100,B00000110,B00011000,B00000000,B00000110,B00001100,B00001100, + B01100000,B00000000,B11110011,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00011000,B00000000,B00011110,B00001100,B00001100, + B01100000,B00000000,B11100000,B00110000,B00111001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000011,B00001100,B00001100, + B01100000,B00000000,B11000000,B00110000,B00111000,B00001111,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00000000,B11000000,B00111111,B11111000,B11111011,B00000000,B01100000,B00001100,B00001100,B00000011,B00110000,B00000000,B00000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000001,B11110000,B00000001,B10000001,B10001100,B00001100, + B01100000,B00110000,B11000000,B00110000,B00000001,B10000011,B00000000,B01100000,B00001100,B00001100,B00000000,B11100000,B00000001,B10000001,B10001100,B00011000, + B00110000,B00110000,B11000000,B00011000,B00110001,B10000011,B00000000,B01100000,B00001100,B00001100,B01000000,B11100000,B00000001,B10000011,B10001100,B00110000, + B00011000,B01100000,B11000000,B00001100,B01100001,B10000111,B11000000,B11100000,B00011100,B00001100,B11000000,B01100000,B00000000,B11000011,B00001100,B01100000, + B00001111,B11000011,B11110000,B00000111,B11000000,B11111111,B11000111,B11111100,B01111111,B00000111,B10000001,B11000000,B00000000,B01111110,B00011111,B11000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B00000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/CR-10mini/_Statusscreen.h b/config/examples/Creality/CR-10mini/_Statusscreen.h new file mode 100644 index 0000000000..f4fd17696a --- /dev/null +++ b/config/examples/Creality/CR-10mini/_Statusscreen.h @@ -0,0 +1,80 @@ +/** + * 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 Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_SCREENWIDTH 128 +#define STATUS_SCREEN_HOTEND_TEXT_X(E) 38 +#define STATUS_SCREEN_BED_TEXT_X 73 + +//============================================ + +const unsigned char status_screen0_bmp[] PROGMEM = { + B00000111,B11001111,B10000000,B00110001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B00001111,B11001111,B11000000,B01110011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00001100,B00001100,B01000000,B01110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00001100,B00001111,B11001111,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00001100,B00001101,B10001111,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00001100,B00001100,B11000000,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B00001111,B11001100,B11000000,B00110011,B11110000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00000111,B11001100,B11000000,B00110001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B00000001,B10000011,B00110000,B00000011,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B00000001,B10000011,B00110010,B00000011,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101100,B00000000,B11010000, + B00000001,B11000111,B00000010,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000001,B11000111,B00110011,B11110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000001,B11101111,B00110011,B00110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000001,B10111011,B00110011,B00110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00110000, + B00000001,B10010011,B00110011,B00110011,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000001,B10010011,B00110011,B00110011,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000001,B10000011,B00110011,B00110011,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 +}; +const unsigned char status_screen1_bmp[] PROGMEM = { + B00000111,B11001111,B10000000,B00110001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11110000, + B00001111,B11001111,B11000000,B01110011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00001100,B00001100,B01000000,B01110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00001100,B00001100,B11000000,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00001100,B00001111,B11001111,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00001100,B00001101,B10001111,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00001100,B00001100,B11000000,B00110011,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B00001111,B11001100,B11000000,B00110011,B11110000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00000111,B11001100,B11000000,B00110001,B11100000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B00000001,B10000011,B00110000,B00000011,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B00000001,B10000011,B00110010,B00000011,B00000000,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B00000011,B11010000, + B00000001,B11000111,B00000010,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000001,B11000111,B00110011,B11110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000001,B11101111,B00110011,B00110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000001,B10111011,B00110011,B00110011,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110011,B10000111,B00110000, + B00000001,B10010011,B00110011,B00110011,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000001,B10010011,B00110011,B00110011,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000001,B10000011,B00110011,B00110011,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 +}; diff --git a/config/examples/Creality/Ender-2/README.md b/config/examples/Creality/Ender-2/README.md new file mode 100644 index 0000000000..e64f3ec3d2 --- /dev/null +++ b/config/examples/Creality/Ender-2/README.md @@ -0,0 +1,18 @@ +# 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. diff --git a/config/examples/Creality/Ender-2/_Bootscreen.h b/config/examples/Creality/Ender-2/_Bootscreen.h new file mode 100644 index 0000000000..11be930e9c --- /dev/null +++ b/config/examples/Creality/Ender-2/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-2/_Statusscreen.h b/config/examples/Creality/Ender-2/_Statusscreen.h new file mode 100644 index 0000000000..fd269c4b91 --- /dev/null +++ b/config/examples/Creality/Ender-2/_Statusscreen.h @@ -0,0 +1,130 @@ +/** + * 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 Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_SCREENWIDTH 128 +#define STATUS_SCREEN_HOTEND_TEXT_X(E) (38 + (E) * 20) +#define STATUS_SCREEN_BED_TEXT_X (HOTENDS > 1 ? 81 : 73) +#define STATUS_SCREEN_FAN_TEXT_X 103 + +//============================================ + +#if HOTENDS < 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B11111110,B00000000,B00000010,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B01000010,B00000000,B00000010,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B01001000,B00000000,B00000010,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B01001000,B11011100,B00111110,B00111100,B11101110,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B01111000,B01100010,B01000010,B01000010,B00110010,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101100,B00000000,B11010000, + B01001000,B01000010,B01000010,B01000010,B00100000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00110000,B00010000, + B01001000,B01000010,B01000010,B01111110,B00100000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111000,B00010000, + B01000000,B01000010,B01000010,B01000000,B00100000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B11111100,B00010000, + B01000010,B01000010,B01000110,B01000010,B00100000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00110000, + B11111110,B11100111,B00111011,B00111100,B11111000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B11111110,B00000000,B00000010,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B01000010,B00000000,B00000010,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B01001000,B00000000,B00000010,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B01001000,B11011100,B00111110,B00111100,B11101110,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B01111000,B01100010,B01000010,B01000010,B00110010,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B00000011,B11010000, + B01001000,B01000010,B01000010,B01000010,B00100000,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B01001000,B01000010,B01000010,B01111110,B00100000,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B01000000,B01000010,B01000010,B01000000,B00100000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B10000111,B10010000, + B01000010,B01000010,B01000110,B01000010,B00100000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110011,B10000111,B00110000, + B11111110,B11100111,B00111011,B00111100,B11111000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + +#else // HOTENDS >= 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B11111110,B00000000,B00000010,B00000000,B00000000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B01000010,B00000000,B00000010,B00000000,B00000000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B01001000,B00000000,B00000010,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B01001000,B11011100,B00111110,B00111100,B11101110,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B01111000,B01100010,B01000010,B01000010,B00110010,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101100,B00000000,B11010000, + B01001000,B01000010,B01000010,B01000010,B00100000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00100000,B00110000,B00010000, + B01001000,B01000010,B01000010,B01111110,B00100000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00100000,B01111000,B00010000, + B01000000,B01000010,B01000010,B01000000,B00100000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100000,B11111100,B00010000, + B01000010,B01000010,B01000110,B01000010,B00100000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110000,B11111100,B00110000, + B11111110,B11100111,B00111011,B00111100,B11111000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B11111110,B00000000,B00000010,B00000000,B00000000,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B01000010,B00000000,B00000010,B00000000,B00000000,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B01001000,B00000000,B00000010,B00000000,B00000000,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B01001000,B11011100,B00111110,B00111100,B11101110,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B01111000,B01100010,B01000010,B01000010,B00110010,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101111,B00000011,B11010000, + B01001000,B01000010,B01000010,B01000010,B00100000,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B01001000,B01000010,B01000010,B01111110,B00100000,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B01000000,B01000010,B01000010,B01000000,B00100000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100111,B10000111,B10010000, + B01000010,B01000010,B01000110,B01000010,B00100000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110011,B10000111,B00110000, + B11111110,B11100111,B00111011,B00111100,B11111000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + +#endif // HOTENDS >= 2 diff --git a/config/examples/Creality/Ender-3/README.md b/config/examples/Creality/Ender-3/README.md new file mode 100644 index 0000000000..e64f3ec3d2 --- /dev/null +++ b/config/examples/Creality/Ender-3/README.md @@ -0,0 +1,18 @@ +# 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. diff --git a/config/examples/Creality/Ender-3/_Bootscreen.h b/config/examples/Creality/Ender-3/_Bootscreen.h new file mode 100644 index 0000000000..11be930e9c --- /dev/null +++ b/config/examples/Creality/Ender-3/_Bootscreen.h @@ -0,0 +1,96 @@ +/** + * 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: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/config/examples/Creality/Ender-3/_Statusscreen.h b/config/examples/Creality/Ender-3/_Statusscreen.h new file mode 100644 index 0000000000..95e8298c3e --- /dev/null +++ b/config/examples/Creality/Ender-3/_Statusscreen.h @@ -0,0 +1,130 @@ +/** + * 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 Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define STATUS_SCREENWIDTH 128 +#define STATUS_SCREEN_HOTEND_TEXT_X(E) (38 + (E) * 20) +#define STATUS_SCREEN_BED_TEXT_X (HOTENDS > 1 ? 81 : 73) +#define STATUS_SCREEN_FAN_TEXT_X 103 + +//============================================ + +#if HOTENDS < 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B11111000,B00000001,B10000000,B00000000,B00001100,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B01001000,B00000000,B10000000,B00000000,B00010010,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B01000011,B11000011,B10001100,B11010000,B00000010,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00101111,B01111011,B11010000, + B01110001,B00100100,B10010010,B01100111,B11001100,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00101110,B00110001,B11010000, + B01000001,B00100100,B10011110,B01000000,B00000010,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101100,B00000000,B11010000, + B01001001,B00100100,B10010000,B01000000,B00010010,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B00110000,B00010000, + B11111011,B10110011,B11001110,B11100000,B00001100,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B11111000,B00000001,B10000000,B00000000,B00001100,B00011111,B11100000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B01001000,B00000000,B10000000,B00000000,B00010010,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B01000011,B11000011,B10001100,B11010000,B00000010,B00111111,B11110000,B00000000,B00000000,B00000100,B00010000,B01000000,B00000000,B00100000,B01111000,B00010000, + B01110001,B00100100,B10010010,B01100111,B11001100,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00100000,B00110000,B00010000, + B01000001,B00100100,B10011110,B01000000,B00000010,B00011111,B11100000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00101111,B00000011,B11010000, + B01001001,B00100100,B10010000,B01000000,B00010010,B00011111,B11100000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B11111011,B10110011,B11001110,B11100000,B00001100,B00111111,B11110000,B00000000,B00000000,B00100000,B10000010,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00010000,B01000001,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00001000,B00100000,B10000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000 + }; + +#else // HOTENDS >= 2 + + const unsigned char status_screen0_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00110000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101100,B00000000,B11010000, + B11111000,B00000001,B10000000,B00000000,B00001100,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B01001000,B00000000,B10000000,B00000000,B00010010,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B01000011,B11000011,B10001100,B11010000,B00000010,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00101111,B01111011,B11010000, + B01110001,B00100100,B10010010,B01100111,B11001100,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00101110,B00110001,B11010000, + B01000001,B00100100,B10011110,B01000000,B00000010,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101100,B00000000,B11010000, + B01001001,B00100100,B10010000,B01000000,B00010010,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00100000,B00110000,B00010000, + B11111011,B10110011,B11001110,B11100000,B00001100,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00100000,B01111000,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100000,B11111100,B00010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110000,B11111100,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + const unsigned char status_screen1_bmp[] PROGMEM = { + 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,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00101111,B00000011,B11010000, + B11111000,B00000001,B10000000,B00000000,B00001100,B00011111,B11100000,B00000001,B11111110,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B01001000,B00000000,B10000000,B00000000,B00010010,B00111110,B11110000,B00000011,B11001111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B01000011,B11000011,B10001100,B11010000,B00000010,B00111100,B11110000,B00000011,B10110111,B00000000,B00000100,B00010000,B01000000,B00100000,B01111000,B00010000, + B01110001,B00100100,B10010010,B01100111,B11001100,B00111010,B11110000,B00000011,B11110111,B00000000,B00001000,B00100000,B10000000,B00100000,B00110000,B00010000, + B01000001,B00100100,B10011110,B01000000,B00000010,B00011110,B11100000,B00000001,B11101110,B00000000,B00010000,B01000001,B00000000,B00101111,B00000011,B11010000, + B01001001,B00100100,B10010000,B01000000,B00010010,B00011110,B11100000,B00000001,B11011110,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B11111011,B10110011,B11001110,B11100000,B00001100,B00111110,B11110000,B00000011,B10111111,B00000000,B00100000,B10000010,B00000000,B00101111,B10000111,B11010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B11110000,B00000011,B10000111,B00000000,B00010000,B01000001,B00000000,B00100111,B10000111,B10010000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000011,B11111111,B00000000,B00001000,B00100000,B10000000,B00110011,B10000111,B00110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00111000,B00000000,B01110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B10000000,B00000000,B01111000,B00000000,B11111111,B11111111,B11000000,B00111111,B11111111,B11110000, + B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B00000000,B00000000,B00110000,B00000000,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000 + }; + +#endif // HOTENDS >= 2 diff --git a/config/examples/Felix/README.md b/config/examples/Felix/README.md new file mode 100644 index 0000000000..b1b8f36728 --- /dev/null +++ b/config/examples/Felix/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/Marlin +cp example_configurations/Felix/Configuration_adv.h . +``` + +The next step depends on your setup: + +### Single Extruder Configuration + + cp example_configurations/Felix/Configuration.h . + +### Dual Extruder Configuration + + cp example_configurations/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/Geeetech/Prusa i3 Pro B/README.md b/config/examples/Geeetech/Prusa i3 Pro B/README.md new file mode 100644 index 0000000000..ffb274caca --- /dev/null +++ b/config/examples/Geeetech/Prusa i3 Pro B/README.md @@ -0,0 +1,39 @@ +These are example configurations for the low-cost [Acrylic Prusa 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. \ No newline at end of file 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/Malyan/M150/README.md b/config/examples/Malyan/M150/README.md new file mode 100644 index 0000000000..6183603e05 --- /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 `Marlin/example_configurations/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..678a7a106f --- /dev/null +++ b/config/examples/Malyan/M150/_Bootscreen.h @@ -0,0 +1,70 @@ +/** + * 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: + * http://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/Micromake/C1/README.md b/config/examples/Micromake/C1/README.md new file mode 100644 index 0000000000..0111f6f00a --- /dev/null +++ b/config/examples/Micromake/C1/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/Velleman/K8200/README.md b/config/examples/Velleman/K8200/README.md new file mode 100644 index 0000000000..42cc1846ed --- /dev/null +++ b/config/examples/Velleman/K8200/README.md @@ -0,0 +1,20 @@ +# Example Configuration for Vellemann [K8200](http://www.k8200.eu/) +* Configuration files for **Vellemann K8200** (with [VM8201](http://www.vellemanprojects.eu/products/view/?id=416158) - LCD Option for K8200) +* K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report. + +* updated manually with parameters from genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch + +* VM8201 uses "DISPLAY_CHARSET_HD44870 JAPANESE" and "ULTIMAKERCONTROLLER" +* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support + +I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.12 for Mac (SD library added to IDE manually), 2016-11-18 - everything works well. + +**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)** +* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_v2.1.1.zip + +* V2 (with LCD/SD-Support, date branched: 2013-06-05): [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv2.zip + +* V1 (without LCD/SD-Support, date branched: 2012-10-02): [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip) + * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv1.zip diff --git a/config/examples/Velleman/K8400/README.md b/config/examples/Velleman/K8400/README.md new file mode 100644 index 0000000000..1ebdd16ef2 --- /dev/null +++ b/config/examples/Velleman/K8400/README.md @@ -0,0 +1,15 @@ +# Configuration for Velleman K8400 Vertex +http://www.k8400.eu/ + +Configuration files for the K8400, ported upstream from the official Velleman firmware. +Like its predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h. + +Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /src/config directory. + +**NOTE: This configuration includes the community sourced feed rate fix. Use 100% feed rate in Repetier!** + +For implementation and updated K8400 firmware, see https://github.com/birkett/Velleman-K8400-Firmware + +### Original Sources +Credit to Velleman for the original 1.0.x based code:
+http://www.vertex3dprinter.eu/downloads/files/vertex/firmware/vertex-m1-v1.4-h2.zip diff --git a/config/examples/delta/Anycubic/Kossel/README.md b/config/examples/delta/Anycubic/Kossel/README.md new file mode 100644 index 0000000000..874d71fae3 --- /dev/null +++ b/config/examples/delta/Anycubic/Kossel/README.md @@ -0,0 +1,50 @@ +# Readme + +These configurations activate many of the new advanced features of the Marlin firmware: + + * Auto Calibration + * Auto Bed Leveling + * Pause & Filament Change + +**Important**: Before doing anything else after updating the firmware, go to `Configuration > Advanced Settings > Initialize EEPROM` to get rid of old configurations. + +Then you should execute `Configuration > Delta Calibration > Set Delta Height` and also run `Configuration > Delta Configuration > Probe Z-offset` to verify the Probe offset. + +After that you should connect the Z-Probe and start `Configuration > Delta Calibration > Auto Calibration`. When it's done don't forget to also do `Configuration > Delta Calibration > Store Settings` to make it permanent. + +You should also do a `Motion > Bed Leveling > Level bed` followed by `Store Settings` to ensure a perfect leveling. + +Please do a manual paper test (moving the nozzle slowly down to Z0 and checking with a piece of paper). If it's not perfect, use `Configuration > Advanced Settings > Probe Z Offset` to correct the difference and execute the calibration again. + + +# Select the Configuration + +**Please select the correct values at the start of the Configuration.h file** + +The Kossel comes in 3 versions: + + * Pulley + * Linear + * Linear Plus + +Pulley and Linear use the same configuration, the Linear Plus is bigger and uses slightly different configurations. + +Typically the probes for the Anycubic Delta Kossel printers come in two different versions. + + * Version 1: Z Probe Offset of -19.0mm + + ![Version 1 Probe](images/Version1Probe.jpg) + + * Version 2: Z Probe Offset of -16.8mm + + ![Version 2 Probe](images/Version2Probe.jpg) + +If you select the `ANYCUBIC_PROBE_VERSION 0`: It's very important to follow the correct procedure to set it up after flashing the firmware, otherwise you might damage the printer by ramming the nozzle into the buildplate: + +* `Configuration > Advanced Settings > Initialize EEPROM` +* `Motion > Move Axis > Soft Endstops` : `Off` +* Auto Home and slowly move the nozzle down until it barely touches the bed. (Do a paper-test: A normal sheet of paper should just feel the drag of the nozzle) and note this number. +* Subtract this number from the value in `Configuration > Delta Calibration > Delta Settings > Height`. (If it's negative, add it). +* Save and try the paper test again to verify your height. +* `Configuration > Store Settings` +* Motion > Bed Leveling (using paper test) diff --git a/config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg b/config/examples/delta/Anycubic/Kossel/images/Version1Probe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..953373b1ab93d79f24f7cd3363e4c949a1e90d79 GIT binary patch literal 94933 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 literal 0 HcmV?d00001 diff --git a/config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg b/config/examples/delta/Anycubic/Kossel/images/Version2Probe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1f4baf2f283af826a79907925a4d13ba808e6a8 GIT binary patch literal 51853 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. + * + */ + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * http://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_BMPWIDTH 112 + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00011000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000000,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000000,B00110001,B00000000,B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000000,B00000000,B00000001,B11111001,B00000000,B00000000,B00000011,B11111000,B00000000,B00000000,B00000001,B11000000,B00000001, + B10000000,B00000000,B00000000,B00000110,B01001101,B00000000,B00000000,B00000111,B00111000,B00000000,B00000000,B00000001,B11000000,B00000001, + B10000000,B00000000,B00000000,B00001100,B00100110,B00000000,B00000111,B01100111,B00111001,B11010011,B11100001,B11110011,B11100111,B11000001, + B10000000,B00000000,B00000000,B00011001,B00010010,B00000000,B00001111,B11100111,B00111001,B11110111,B11110011,B11111011,B11101111,B11100001, + B10000000,B00000000,B00000000,B00110111,B11001110,B00000000,B00001110,B11100111,B00000001,B11110111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B00000000,B01100100,B01100110,B00000000,B00001110,B11100111,B00000001,B11000111,B11110011,B10111001,B11001111,B11100001, + B10000000,B00000000,B00000000,B01001011,B10100110,B00000000,B00001110,B11100111,B00111001,B11000111,B11110000,B11111001,B11001111,B11100001, + B10000000,B00000000,B00000000,B11001010,B10110100,B00000000,B00001111,B11100111,B00111001,B11000111,B00000011,B11111001,B11001110,B00000001, + B10000000,B00000000,B00000000,B11001101,B10100100,B00000000,B00000110,B11100111,B00111001,B11000111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B00000011,B10100110,B01101100,B00000000,B00000000,B11100111,B00111001,B11000111,B01110011,B10111001,B11001110,B11100001, + B10000000,B00000000,B11111111,B00010011,B11011000,B00000000,B00001110,B11100011,B11110001,B11000111,B11110011,B11111001,B11101111,B11100001, + B10000000,B00000001,B00100001,B10001000,B00011000,B00000000,B00001111,B11100001,B11100001,B11000011,B11100001,B10111001,B11100111,B11000001, + B10000000,B00000110,B01100001,B00010110,B00110000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000100,B01000001,B00100011,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00000100,B11111110,B01000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00001011,B10000110,B10001111,B00000000,B00000000,B00000000,B00000000,B00111111,B00011111,B10000000,B00000000,B00000000,B00000001, + B10000000,B00011110,B00000001,B10011010,B00000000,B00000000,B00000000,B00000000,B00111111,B00011111,B10000000,B00000000,B00000000,B00000001, + B10000000,B00011100,B00000111,B00100010,B00000000,B00000000,B00000111,B10111100,B00111111,B10011111,B10000001,B11111000,B11110001,B11100001, + B10000000,B00001000,B00011111,B11100010,B00000000,B00000000,B00001111,B11111100,B00111111,B10111111,B10000111,B11111110,B01110001,B11000001, + B10000000,B00000000,B00110011,B01100010,B00000000,B00000000,B00001111,B00111100,B00111101,B10110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000000,B11000010,B00100010,B00000000,B00000000,B00001111,B00111100,B00111101,B10110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000000,B11000010,B00111110,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000000,B01111110,B00111011,B10000001, + B10000000,B00000001,B11100110,B00011110,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000011,B11111110,B00111111,B10000001, + B10000000,B00000001,B00111100,B00010010,B00000000,B00000000,B00001111,B00111100,B00111101,B11110111,B10000111,B10011110,B00111011,B10000001, + B10000000,B00000001,B00011100,B00100110,B00000000,B00000000,B00001111,B11111100,B00111101,B11110111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000001,B01110000,B01100100,B00000000,B00000000,B00000111,B10111100,B00111100,B11100111,B10000111,B10011110,B01111011,B11000001, + B10000000,B00000011,B11000000,B01011000,B00000000,B00000000,B00000000,B00111100,B00111100,B11100111,B10000111,B11111110,B01110001,B11000001, + B10000000,B00001101,B10000000,B11110000,B00000000,B00000000,B00001111,B00111100,B00111100,B11100111,B10000011,B11011110,B11110001,B11100001, + B10000000,B00011010,B00000000,B11100000,B00000000,B00000000,B00001111,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B00100110,B00000000,B01000000,B00000000,B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B01001100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000000,B10110010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B10000001,B00000110,B00000000,B00000000,B00000000,B00000000,B00000111,B00011100,B00000011,B11000000,B00100000,B00010000,B00000000,B00000001, + B10000011,B00100100,B00000000,B00000000,B00000000,B00000000,B00001000,B10010010,B00000010,B00100000,B00000000,B00010000,B00000000,B00000001, + B00000010,B00100100,B00000000,B00000000,B00000000,B00000000,B00000000,B10010001,B00000010,B00100011,B00100111,B00111001,B10001100,B11100001, + B00000110,B00111000,B00000000,B00000000,B00000000,B00000000,B00000011,B00010001,B00000011,B11000010,B00100100,B10010010,B01001001,B00000001, + B00000100,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B10010001,B00000010,B00000010,B00100100,B10010011,B11001000,B11000001, + B00001101,B10100000,B00000000,B00000000,B00000000,B00000000,B00001000,B10010010,B00000010,B00000010,B00100100,B10010010,B00001000,B00100001, + B00001000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000111,B00011100,B00000010,B00000010,B00100100,B10011001,B11001001,B11000001, + B00011000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00010000,B00110000,B00000000,B00011100,B00000000,B00000000,B00000000,B00001100,B00011000,B00001111,B11100000,B00001111,B00000000,B00000001, + B00110000,B00100000,B00000000,B00110111,B00000000,B00000000,B00000000,B00010010,B00100100,B00001000,B00010000,B00001001,B00000000,B00000001, + B00100000,B00110000,B00000000,B01101101,B10000000,B00000000,B00000000,B00010010,B00100100,B00001001,B10001000,B00001001,B00000000,B00000001, + B00010000,B00011000,B00011111,B01100000,B11000000,B00000000,B00000000,B00010010,B00100100,B00001001,B01001000,B00001001,B00000000,B00000001, + B00110000,B00001100,B00111001,B11100000,B01100000,B00000000,B00000000,B00010010,B00100100,B00001001,B10010000,B00001001,B00000000,B00000001, + B00110000,B00000111,B10010000,B01110000,B01100000,B00000000,B00000000,B00010010,B00100100,B00001000,B01100000,B00001001,B00000000,B00000001, + B00010000,B00010110,B11110000,B00011000,B00100000,B00000000,B00000000,B00010010,B00100100,B00001000,B00010000,B00001001,B00000000,B00000001, + B00011010,B00010000,B01100000,B00001000,B00110000,B00000000,B00000000,B00010010,B00100100,B00001001,B11001000,B00001001,B00000000,B00000001, + B00001011,B00001001,B10000000,B00000000,B00110000,B00000000,B00000000,B00010010,B00100100,B00001001,B00100100,B00001001,B00000000,B00000001, + B00001110,B00000111,B10000000,B00000000,B00010000,B00000000,B00000000,B00010011,B11100100,B10001001,B11000100,B10001001,B11111001,B00000001, + B00000110,B00011110,B01000000,B00010000,B00010000,B00000000,B00000000,B00010000,B00000101,B11001000,B00001001,B11001000,B00001011,B10000001, + B00000110,B00000000,B01000000,B00100000,B00010000,B00000000,B00000000,B00001111,B11111000,B10001111,B11110000,B10001111,B11111001,B00000001, + B00000011,B10000000,B00000000,B00100000,B00110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001, + B00000001,B11111111,B11111111,B11111111,B11100000,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111 +};