GithubHelp home page GithubHelp logo

bigtreetech / bigtreetech-touchscreenfirmware Goto Github PK

View Code? Open in Web Editor NEW
1.3K 95.0 1.6K 242.41 MB

support TFT35 V1.0/V1.1/V1.2/V2.0/V3.0, TFT28, TFT24 V1.1, TFT43, TFT50, TFT70

License: GNU General Public License v3.0

Assembly 0.39% C 98.59% C++ 0.24% HTML 0.59% Python 0.08% Dockerfile 0.01% Pawn 0.11%

bigtreetech-touchscreenfirmware's Introduction

BigTreeTech TFT Touchscreen

license GitHub contributors release date Build Binaries

Important information related to BigTreeTech's TFT touchscreen 3D printer controllers

TFT35v3 Image with cable

Table of Contents

Supported Screens

Only the TFTs listed below are currently supported. Trying to install the firmware on a TFT which is not supported can harm the hardware.

BTT TFT

BTT_TFT24_V1.1
BTT_TFT28_V1.0 and V3.0
BTT_TFT35_V1.0, V1.1, V1.2, V2.0, V3.0, E3_V3.0 and B1_V3.0
BTT_TFT43_V3.0
BTT_TFT50_V3.0
BTT_TFT70_V3.0

BTT GD TFT

BTT_GD_TFT24_V1.1
BTT_GD_TFT35_V2.0, V3.0, E3_V3.0 and B1_V3.0
BTT_GD_TFT43_V3.0
BTT_GD_TFT50_V3.0
BTT_GD_TFT70_V3.0

MKS TFT

MKS_TFT28_V3.0 and V4.0
MKS_TFT28_NEW_GENIUS
MKS_TFT32_V1.3 and V1.4
MKS_TFT32L_V3.0
MKS_TFT35_V1.0

MKS GD TFT

MKS_GD_TFT28_V1.2-4 (V1.2 and V1.4)

WARNING: BTT does not officially provide MKS TFT hardware support. MKS TFT is maintained by open source contributors and BTT does not bear any risk of MKS TFT hardware using this firmware.

Software Repository

Firmware source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware

Main branch: Master


In the Master branch you will find:

  • The most recent source code updates
  • The most recent resources such as precompiled firmwares, themes, configuration and language files

IMPORTANT NOTE: The Master branch is currently the ONLY branch in the project to be used. The other currently existing branches develop and release-xx.27 are outdated and MUST NOT be used.

Marlin Dependencies

Minimum Marlin firmware version: 2.1.1
Distribution date: 2022-09-22
Firmware source: https://github.com/MarlinFirmware/Marlin/releases

To use all the features and functionalities supported by the TFT, the following options must be enabled in Marlin firmware.

General options which MUST be always activated:

EEPROM_SETTINGS (in Configuration.h)
BABYSTEPPING (in Configuration_adv.h)
AUTO_REPORT_TEMPERATURES (in Configuration_adv.h)
AUTO_REPORT_POSITION (in Configuration_adv.h)
EXTENDED_CAPABILITIES_REPORT (in Configuration_adv.h)
M115_GEOMETRY_REPORT (in Configuration_adv.h)
M114_DETAIL (in Configuration_adv.h)
REPORT_FAN_CHANGE (in Configuration_adv.h)

Options to support printing from onboard media:

SDSUPPORT (in Configuration.h)
LONG_FILENAME_HOST_SUPPORT (in Configuration_adv.h)
AUTO_REPORT_SD_STATUS (in Configuration_adv.h)
SDCARD_CONNECTION ONBOARD (in Configuration_adv.h)

Options to support dialog with host:

EMERGENCY_PARSER (in Configuration_adv.h)
SERIAL_FLOAT_PRECISION 4 (in Configuration_adv.h)
HOST_ACTION_COMMANDS (in Configuration_adv.h)
HOST_PROMPT_SUPPORT (in Configuration_adv.h)
HOST_STATUS_NOTIFICATIONS (in Configuration_adv.h)

Options to support M73 with host:

Options to support dialog with host (as pre requisite)
SET_PROGRESS_MANUALLY (in Configuration_adv.h)
M73_REPORT (in Configuration_adv.h)

Options to support ADVANCED_OK with host:

ADVANCED_OK (in Configuration_adv.h)

Options to support M600 with host & (Un)Load menu:

Options to support dialog with host (as pre requisite)
NOZZLE_PARK_FEATURE (in Configuration.h)
ADVANCED_PAUSE_FEATURE (in Configuration_adv.h)
PARK_HEAD_ON_PAUSE (in Configuration_adv.h)
FILAMENT_LOAD_UNLOAD_GCODES (in Configuration_adv.h)

Options to fully support Bed Leveling menu:

Z_MIN_PROBE_REPEATABILITY_TEST (in Configuration.h)
G26_MESH_VALIDATION (in Configuration.h)
Z_STEPPER_AUTO_ALIGN (in Configuration_adv.h)

Connecting the TFT to the Mainboard

Touch Mode Setup

In order to use the Touch Mode on your screen:

  1. Connect the 5pin serial cable according to the manual of your mainboard
  2. Define a serial port in Marlin, to activate the port used by the TFT
  3. Make sure the same BAUDRATE is defined on both the Marlin and TFT firmwares

In case one of the three points above is not properly done, the message:

No printer attached!

will be shown at the top of the screen. This is because the TFT can not "see" the mainboard through the serial cable.

Setting the Baudrate on the TFT Firmware

On TFT firmware, the baudrate can be changed in two ways:

  • by menu: After the firmware is installed, the baudrate can be changed from Menu->Settings->Connection->S. Ports menu
  • by configuration file: Set the parameter serial_port in config.ini file with the proper baudrate (e.g. serial_port:P1:6 for baudrate 115200). Please, see Configuration section for configuring config.ini file

Marlin Mode Setup

In order to use the Marlin Mode (emulation mode) on your screen:

  1. In case your TFT does not have an EXP connector at all (TFT28 v1 for example), you can not use the Marlin emulator mode.
  2. In case your mainboard provides EXP1 and EXP2, you have to connect 2 ribbon cables connecting EXP1 and EXP2 of the mainboard to EXP1 and EXP2 of the TFT. In the Marlin firmware of your mainboard, make sure that ONLY REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER is activated in Configuration.h and that all other controllers are Deactivated (especially CR10_STOCKDISPLAY).
  3. In case you have an "E3" mainboard which provides a single EXP connector, you have to connect 1 ribbon cable connecting EXP of the mainboard to EXP3 of the TFT. In case your TFT does not provide an EXP3 connector but only two 10pin connectors (TFT24 v1.1 for example) you will need a "Y-split" cable with one 10pin connector on one side (for the mainboard) and two 10pin connectors on the other side (for the TFT). In the Marlin firmware of your mainboard, make sure that ONLY CR10_STOCKDISPLAY is activated in Configuration.h and that all other controllers are Deactivated (especially REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).

Thomas White July 2021-1 Thomas White July 2021-2 Thomas White July 2021-3

Menus

Status Screen DISABLED Status Screen ENABLED
status screen 0 Unified Material Main Screen
If status_screen:0 is not defined in config.ini, define:
# UI Settings
# Status Screen
# Select the Main Screen flavour
# Options: [disable: 0, enable: 1]
status_screen:0
If status_screen:1 is not defined in config.ini, define:
# UI Settings
# Status Screen
# Select the Main Screen flavour
# Options: [disable: 0, enable: 1]
status_screen:1

Themes

Unified Menu Theme The Round Miracle Theme by Acenotass
Unified Material Main Screen Round Miracle Main Screen
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Unified Menu Material theme folder Use firmware, icons, and fonts from the Copy to SD Card root directory to update - The Round Miracle theme folder
Hybrid Red Material Theme by AntoszHUN Hybrid Mono Material Theme by bepstein111
Hybrid Red Menu Material Mainscreen Monochrome TFT35
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Hybrid Red Menu Material theme folder Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Hybrid Mono Menu Material theme folder
Rep Rap Firmware Dark Theme by xPew
Mainscreen-Rep Rap FW Dark Mainscreen
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Rep Rap Firmware Dark theme folder

Firmware Update

The TFT firmware update process is based on the following stages:

  1. Deployment Files: All the resources needed for the firmware update (up to four kinds of resources)
  2. Configuration: All the changes needed on configuration file before the firmware installation
  3. Installation: All the steps needed in order to install the firmware
  4. Post Installation: Post installation process in case of major changes applied by the installed firmware

Deployment Files

The following sections provide all the resources needed for the firmware update (up to four kinds of resources).

Firmware Binary

Precompiled firmwares are available on Copy to SD Card root directory to update folder.

For BTT TFTs, the firmwares use the naming convention BIGTREE_TFT*_V*.*.*.x.bin.

For BTT GD TFTs, the firmwares use the naming convention BIGTREE_GD_TFT*_V*.*.*.x.bin

GD Chip

For MKS TFTs:

  1. The firmwares use the naming convention MKS_TFT*_V*.*.*.x.bin
  2. Any binary file for an MKS firmware (e.g. MKS_TFT28_V4.0.27.x.bin) MUST be renamed to MKSTFT*.bin (e.g. MKSTFT28.bin, MKSTFT35.bin etc.) in order it can be recognized and installed by the TFT

For MKS GD TFTs:

For MKS TFT28 mounting GD32 MCU (GigaDevice MCU) (like the newest version of Genious Pro), you need to:

  1. Rename the right binary (e.g. MKS_GD_TFT28_V1_2_4.27.x.bin) to MKSTFT28EVO.bin
  2. Create an empty file named MKSTFT28.bin
  3. Create two empty directories named MKS_FONT and MKS_PIC

For example, for BTT TFT35 V3 select:

BIGTREE_TFT35_V3.0.27.x.bin

where:

  • BIGTREE_TFT35: Model
  • V3.0: Hardware version
  • 27.x: Software version

NOTE:

For BTT TFT35, there are currently three different kinds of firmware available:

  • V3.0
  • E3_V3.0
  • B1_V3.0

So, make sure to use the firmware matching your TFT screen.

Fonts and Icons

Themes are available on Copy to SD Card root directory to update folder.

The root folder for fonts and icons is TFT*, where * is the size of the TFT (e.g. TFT24, TFT35, TFT50 etc). Fonts and icons folder structure:

  • TFT*/font: Includes the fonts in .fon format and a readme.md
  • TFT*/bmp: Includes the icons in .bmp format and a readme.md

For MKS TFT32, the TFT28 folder has to be used and MUST be renamed to TFT32 in order it can be recognized and installed by the TFT.

Configuration File

Templates for configuration file are available on Copy to SD Card root directory to update folder.

The configuration file is named config.ini.

NOTE: RepRap firmware users have to make their changes using the config_rrf.ini template file and renaming it to config.ini.

Optional - Language Files

Optional language files are available on Copy to SD Card root directory to update/Language Packs folder.

Language files use the naming convention language_*.ini (e.g. language_it.ini).

Configuration

The firmware configuration can be modified by changing the config.ini (or the renamed config_rrf.ini) file using a simple text editor (make sure to use UTF encoding).

A configuration can be uploaded without the need to upload the firmware or the TFT folder again, as long as the firmware and the configuration file are from the same version (see Configuration Update).

Editing the Configuration File

NOTE: RepRap firmware users have to make their changes using the config_rrf.ini template file and renaming it to config.ini.

To edit the config.ini file, follow the instructions here: Detailed Instructions.

Installation

NOTE: For devices with USB flash drive support, it is possible to update the icons, fonts, config and the language files from a USB flash drive in the same way it is done through an SD card. However, the firmware can only be updated using an SD card.

The following steps are needed in order to install the firmware:

  1. Copy the precompiled BIGTREE_TFT*_V*.*.*.bin or your self compiled firmware, plus the TFT* folder of your preferred theme along with config.ini to the root of a blank SD card not greater than 8GB and formatted as FAT32:

    Firmware

  2. Optionally, copy one or more language_*.ini file(s) onto the SD card. Doing so, it will allow you to switch between English and the uploaded language(s) from the Language menu present in the TFT firmware. We recommend to upload the minimum amount of languages to keep the memory usage low. The language_*.ini file can be edited to change the text shown on the TFT:

    Language Pack

  3. Place the SD card with BIGTREE_TFT*_V*.*.*.bin, the TFT* folder, config.ini and the optional language_*.ini file(s) into the TFT's SD card reader and reset your TFT (or optionally - power cycle your printer) to start the update process:

    ⚠️ Failing to update your icons & fonts will result in missing icons and/or unreadable text ⚠️

    Update process shown on TFT screen:

    A successful update looks like this on the screen:

    Screenshot 2020-09-26 at 22 10 04

    ... and the name of the elements on the SD card changes to this:

    After Update

    In case one or several parts of the update failed, an error will be shown. Follow the information on the screen to update the missing or outdated elements:

    Screenshot 2020-10-23 at 14 37 36

    ⚠️ Errors during the update can not be ignored and must be solved before using the TFT ⚠️

    After the update is done and the files are renamed, it is possible to reuse them again. To do so, change the name of the element(s) to the pre-update name and start the update process again.

  4. After a successful update, the TFT will switch to one of the following menus:

    • Main menu: The update is completed and you can use the TFT
    • Touch Screen Calibration menu: A post installation process is needed before switching to Main menu. Please, see Post Installation section for completing the post installation process

TIP: Format the SD card after the firmware update in case you would like to print from it.

Post Installation

In case major changes have been applied by the installed firmware, a post installation process consisting on touch screen calibration is automatically started.

Please, see Touch Screen Calibration section for completing the process.

Configuration Update

Please, see Configuration section for configuring config.ini file.

NOTES:

  • For devices with USB flash drive support, it is possible to update the icons, fonts, config and the language files from a USB flash drive in the same way it is done through an SD card. However, the firmware can only be updated using an SD card
  • The following procedure can be also applied to any combination of resources (e.g. only icons, icons + fonts, config + language files etc.)

In order to update the firmware configuration:

  1. Copy your edited config.ini file to the root of the SD card. The SD card capacity should be less than or equal to 8GB and formatted as FAT32
  2. Insert the SD card into the TFT's SD card slot and press the reset button of the TFT (or power cycle your printer)
  3. The TFT's configuration will update from the configuration file on reboot
  4. The config.ini file will be renamed to config.ini.CUR after updating the configuration

Touch Screen Calibration

The touch screen calibration process begins showing a white screen with a red dot in the upper right corner and the following text:

Touch Screen Calibration - Please click on the red dot

Once the process is started, to calibrate the touch screen press (with your finger or a stylus):

  1. the red dot in the upper left corner
  2. then the red dot in the upper right corner
  3. then the red dot in the lower right corner
  4. and finally, the black dot in the middle of the screen to finish the calibration

Repeat the process in case the following message is shown:

Adjustment failed, please try again.

Forcing the Touch Screen Calibration

The touch screen calibration process can be forced in two ways:

  • by menu: The calibration can be started from Menu->Settings->Screen->TSC Adjust menu
  • by hard reset: The calibration is started at the end of the hard reset process (see Hard Reset)

Hard Reset

NOTES:

  • The hard reset process is typically used as the last chance when the firmware is not properly working (e.g. in case of freezes, errors on screen etc.)
  • Unless the default hard coded settings have been properly configured (e.g. a self compiled firmware was installed), after an hard reset the TFT typically needs to be reconfigured with the proper config.ini file (see Configuration Update)

The hard reset process consists in:

  1. resetting the TFT's configuration to the TFT's default hard coded settings
  2. starting the touch screen calibration process (see Touch Screen Calibration) at startup before moving to Main menu

In order to hard reset the firmware:

  1. Create a blank file named reset.txt
  2. Copy the reset.txt file to the root of the SD card. The SD card capacity should be less than or equal to 8GB and formatted as FAT32
  3. Insert the SD card into the TFT's SD card slot and press the reset button of the TFT (or power cycle your printer)
  4. The TFT's configuration will be reset to the TFT's default hard coded settings and the touch screen calibration process will start on reboot
  5. The reset.txt file will be renamed to reset.txt.DONE after the touch screen calibration process is completed

Resetting to Default Settings

When the default hard coded settings are properly configured for a TFT and the TFT's basic function such as surfing on the menus is working, in case of issues the user can opt to apply only a configuration reset (soft reset) instead of an hard reset.

In order to reset to default settings:

  • Enter on Menu->Settings->Feature menu
  • Select and press on Reset default settings item
  • Press on Ok button to confirm the reset
  • Leave the menu

Customization

Bootscreen and Icons

Please, see Customization Guides section for detailed information.

Firmware

View full instructions
  1. Setup Visual Studio Code with PlatformIO instructions
  2. Click on the PlatformIO icon (①) and then click on Open Project (②):

  3. Find the BIGTREETECH firmware source directory, then click Open:

  4. After opening the project, edit platformio.ini and change the default_envs to one that matches your TFT model and version:
    ;BIGTREE_TFT24_V1_1
    ;BIGTREE_TFT28_V1_0
    ;BIGTREE_TFT28_V3_0
    ;BIGTREE_TFT35_V1_0
    ;BIGTREE_TFT35_V1_1
    ;BIGTREE_TFT35_V1_2
    ;BIGTREE_TFT35_V2_0
    ;BIGTREE_TFT35_V3_0
    ;BIGTREE_TFT35_E3_V3_0
    ;BIGTREE_TFT35_B1_V3_0
    ;BIGTREE_TFT43_V3_0
    ;BIGTREE_TFT50_V3_0
    ;BIGTREE_TFT70_V3_0
    

    ;BIGTREE_GD_TFT24_V1_1 ;BIGTREE_GD_TFT35_V2_0 ;BIGTREE_GD_TFT35_V3_0 ;BIGTREE_GD_TFT35_E3_V3_0 ;BIGTREE_GD_TFT35_B1_V3_0 ;BIGTREE_GD_TFT43_V3_0 ;BIGTREE_GD_TFT50_V3_0 ;BIGTREE_GD_TFT70_V3_0

    ;MKS_TFT28_V3_0 ;MKS_TFT28_V4_0 ;MKS_TFT28_NEW_GENIUS ;MKS_TFT32_V1_3 ;MKS_TFT32_V1_4 ;MKS_TFT32_V1_4_NOBL ;MKS_TFT32L_V3_0 ;MKS_TFT35_V1_0

    ;MKS_GD_TFT28_V1_2_4

    [platformio] src_dir = TFT boards_dir = buildroot/boards default_envs = BIGTREE_TFT35_V3_0

  5. Click the check mark (✓) at the bottom of VSCode or press Ctrl+Alt+B (Windows) / Ctrl+Option+B (macOS) to compile:

  6. A BIGTREE_TFT*_V*.*.*.bin file will be generated in the hidden .pio\build\BIGTREE_TFT*_V*_* folder. Follow the update process outlined in the Firmware Update section above to update your TFT to the latest version

TIP: In case there is a problem compiling the TFT firmware try to restart VSC. If this does not help and you are using macOS, delete the packages and platforms folders usually present under the folder /Users/***username***/.platformio/.

Vertical Screen Orientation - Portrait Mode

All the precompiled firmwares available on Copy to SD Card root directory to update folder are compiled to support the standard (horizontal) screen orientation.

In case the TFT needs to be placed with a vertical orientation (e.g. 90°), the firmware needs to be compiled with the portrait mode support and installed following the procedure below:

  • Start VSC
  • Open platformio.ini
  • Uncomment (remove the leading ; character) the following line:
    ; -DPORTRAIT_MODE="_portrait" ; uncomment here to enable Portrait Mode .bin firmware generation
  • Compile the firmware
  • The binary file named BIGTREE_TFT*_V*.*.*.x_portrait.bin is created (see the presence of the _portrait suffix)
  • Rename the binary file to the standard name BIGTREE_TFT*_V*.*.*.x.bin
  • Copy BIGTREE_TFT*_V*.*.*.x.bin, the TFT* folder, config.ini and also reset.txt (needed to force the screen calibration) into the SD card
  • Proceed with the firmware update (following the usual procedure)

Troubleshooting

Firmware Update Failed

In case the firmware update process failed:

  1. Verify that you have been using the firmware matching your TFT
  2. Try to upload the firmware, the TFT* folder and config.ini again (like described above) using a new SD card - 8GB or smaller, FAT32 formatted

NOTE: Some uploads worked fine after executing a low level format of the SD card and not a quick format.

Worst Case Scenario

In case:

  • The screen remains black or the brightness is not stable
  • The screen does not react after pressing a button or executes clicks by itself or does something similar

and the reset described above did not help, try the following:

  • Remove the TFT from the enclosure and disconnect everything from the TFT, including the cable to the mainboard
  • Cut a USB cable you do not need anymore and connect the red and black wire to 5V and GND of the TFT
  • Do not use the unshielded wires directly but use a 2 pin connector instead
  • Power up the TFT and try to reset the TFT or to instal a new firmware like described in this document

NOTE: With only power supplied, you should be able to navigate through the menus using the touchscreen and even to switch to Marlin Mode (if available). Marlin Mode will not show any interface without a proper EXP connection (see Marlin Mode Setup).

Version History

Please, see BIGTREETECH-TouchScreenFirmware/releases section for a complete version history.

Appendix

Printing from Host

OctoPrint, ESP3D, Pronterface etc, connected to a TFT's serial port, can browse files on both the TFT's and mainboard's media devices and start a print that will be handled by the host (TFT or mainboard). The following actions and the related triggering G-codes are currently supported by the TFT fw:

TFT SD TFT USB onboard media
ACTION G-CODE G-CODE G-CODE
init media device M21 <S> <U>
release media device M22
list files M20 SD:<folder path>
or
M20 S <folder path>

Examples:
M20 SD:
M20 SD:/test
M20 S /test
M20 U:<folder path>
or
M20 U <folder path>
M20
select file M23 SD:<file path>
or
M23 S <file path>

Examples:
M23 SD:cap.gcode
M23 SD:/test/cap2.gcode
M23 S /test/cap2.gcode
M23 U:<file path>
or
M23 U <file path>
M23 <file path>
start/resume print M24 M24 M24
pause print M25 M25 M25
pause print and park head M125 M125 M125
abort print M524 M524 M524
report print status M27 [C] M27 [C] M27 [C] [S<seconds>]
start file write M28 SD:<file path>
or
M28 S <file path>

Examples:
M28 SD:cap.gcode
M28 SD:/test/cap2.gcode
M28 S /test/cap2.gcode
M28 U:<file path>
or
M28 U <file path>
M28 [B1] <file path>
stop file write M29 M29 M29
delete file M30 SD:<file path>
or
M30 S <file path>

Examples:
M30 SD:cap.gcode
M30 SD:/test/cap2.gcode
M30 S /test/cap2.gcode
M30 U:<file path>
or
M30 U <file path>
M30 <file path>
firmware info M115 TFT M115 TFT M115
play tone M300 TFT [P<ms>] [S<Hz>] M300 TFT [P<ms>] [S<Hz>] M300 [P<ms>] [S<Hz>]

NOTES:

  • TFT's media devices, if any, does not need to be initialized/released
  • When present, the G-code's options (e.g. M27 C) have the same meaning like in Marlin fw
  • G-code M300 TFT P0 (with a duration of 0 ms) will mute (with the exception of touch type sound, if enabled) the TFT if not already muted while a duration different than 0 will unmute the TFT if not already unmuted

Printing from Remote Host

OctoPrint, ESP3D, Pronterface etc, connected to a TFT's or mainboard's serial port, can host a print (print handled by the host) and optionally can trigger some actions to the TFT sending specific G-codes. The following actions and the related triggering G-codes are currently supported by the TFT fw:

ACTION G-CODE
start M118 P0 A1 action:print_start
end M118 P0 A1 action:print_end
cancel M118 P0 A1 action:cancel
pause M118 P0 A1 action:pause
resume M118 P0 A1 action:resume
remaining time progress M118 P0 A1 action:notification Time Left <XX>h<YY>m<ZZ>s
or
M117 Time Left <XX>h<YY>m<ZZ>s

Examples:
M118 P0 A1 action:notification Time Left 02h04m06s
M117 Time Left 02h04m06s
print layer progress M118 P0 A1 action:notification Layer Left <XXXX>/<YYYY>
or
M117 Layer Left <XXXX>/<YYYY>

Examples:
M118 P0 A1 action:notification Layer Left 51/940
M117 Layer Left 51/940
file data progress M118 P0 A1 action:notification Data Left <XXXX>/<YYYY>
or
M117 Data Left <XXXX>/<YYYY>

Examples:
M118 P0 A1 action:notification Data Left 123/12345
M117 Data Left 123/12345

When the trigger print_start is received, the TFT switches to Printing menu. When the trigger print_end or cancel is received, the TFT Printing menu is finalized (statistics available etc.). When on Printing menu, pressing on the pause, resume and stop buttons will trigger to the remote host the following notifications, respectively:

NOTIFICATION ACK MESSAGE
pause //action:notification remote pause
resume //action:notification remote resume
cancel //action:notification remote cancel

The remote host must properly handle the received notifications. For example, if //action:notification remote pause is received then the remote host must effectively pause the print and send M118 P0 A1 action:pause in order to trigger the pause action to the TFT.

NOTES:

  • A new plugin on OctoPrint implementing the above protocol should be the preferable way (available to everyone)
  • With the exception of TFT70, the maximum number of displayable layer count is 999 (there's no space to display layer number and count if the layer count is above 999)

Adding Gcode Thumbnails

The TFT can display embedded G-code thumbnails in the file viewer using two different flavors:

  • Bigtreetech-style
  • PrusaSlicer-style

ps-thumbnail

The first type is to store the thumbnails at a specific location in the G-code file using a dedicated Cura plugin or external post-processing script. The thumbnail's image data is raw encoded in a format which can be displayed on the TFT without any complex image transformation. Displaying these embedded thumbnails at the TFT is the fastest approach and suitable for all different BigTreeTech's TFT variants. Downside is that you either need a dedicated plugin, for example the BTT 3D Plug-In Suit, or you have to use the post-processing script.

The other type is to store the thumbnails using dedicated comments (thumbnail begin... and thumbnail end) which is implemented in stock by some slicers like Prusa-Slicer. The thumbnail's image data is a PNG file encoded in Base64 which cannot be displayed directly on the TFT: A base64 decoding and png decoding needs to be performed which is quite complex for the TFT. Displaying these thumbnails is slower but more flexible. Due to the memory requirements it is not suitable for all the different TFT variants (only for those with RAM_SIZE > 96).

Thumbnail generation needs to be specifically enabled in Prusa-Slicer. Under Printer Settings at the G-code thumbnails settings you have to enter the specific required thumbnail image size for your TFT.

ps-thumbnail-settings

Thumbnail image sizes are:

  • 70x70: TFT24 / TFT28
  • 95x80: TFT43 / TFT50
  • 95x95: TFT35
  • 160x140: TFT70

If this setting is not visible within the Prusa-Slicer you need to enable Expert Settings Mode:

ps-expert-settings

TFT Screen Configuration and Support for RRF

Overview

The most recent version of the standard bigtreetech TFT firmware has built in support for RepRap firmware. The pre-built images have this enabled by default.

Loading the Firmware

There is now an RRF config file. It needs to be renamed from config_rrf.ini to config.ini for updating the configuration of the TFT for RRF.

Configuration Changes

Add the following line to your config.g to enable the screen: M575 P1 S2 B57600.

Implemented Features

  • Auto detect fw type + separate config.ini for easier setup
  • Temperature/movement/cooling status monitoring and control
  • Print status monitoring with mid-print tuning/pausing
  • Macro support
  • Print from onboard/external SD card
  • Please see RRF further tweaks #2278 for more information.

Menu System for Macros

  • Thumbnail and menu system support for onboard G-codes
  • Load/unload menu
  • PID tune menu

Setup of BTT TFT35 E3 V3 with MKS SGEN L Mainboards

The following mainboards are covered by this document:

  • MKS GEN_L v1.0
  • MKS SGEN (LPC1769)
  • MKS SGEN_L v1.0 (LPC1768)
  • MKS SGEN_L v2.0 (LPC1769)

Connections

The TFT35 E3 V3.0 has 3 cables to connect to the mainboard. Two 10 pin ribbon cables and one 5 pin serial cable. The 2 ribbon cables connect to the EXP1 and the EXP2 connections on both the TFT35 E3 V3.0 and the MKS mainboards.

The RS232 cable is connected to the RS232 connection on the touchscreen, with the other end connecting to the AUX1 connection on the mainboard. The RS232 cable has 5 wires. One end has a single 5 wire connector that goes to the RS232 connector on the touchscreen, and the other end has two connectors, one has 4 wires, and the second one has one wire. That single wire is for the Reset and is not used on these MKS mainboards. The 4-pin connector plugs into the AUX1 connection. It must connect to the top row of pins when looking at the socket with the notch facing away from the mainboard and must be also plugged in with the 5v+ wire connected to the first pin in the upper left corner of the socket. The RESET wire is not connected to anything.

Serial

NOTE: On the MKS mainboards there is an issue that involves at least the MKS GEN_L, MKS SGEN, and MKS SGEN_L models. The EXP1 and EXP2 connections have the socket shell installed wrong way around. The notch that indexes the cable should be facing towards the mainboard. If you get a blank screen on the TFT35 E3 V3.0 touchscreen after connecting the two EXP cables and turning the printer on, turn printer off and disconnect the 10 pin cables from either the touch screen or the mainboard and using small diagonal cutters trim the tab down to be as close to flush as you can get on both cables (and only on one end) and plug them back in with the trimmed tab now facing the mainboard.

EXP

The second workaround for this issue is to carefully pry the two shells surrounding the pins on the mainboard upwards until they clear the pins. Do NOT use a metal tool for this, use a sturdy plastic or whalebone prying tool. Turn the shell 180 degrees and align the pins with the holes in the shells and push the shells back on with your thumb. Do not push the shell back on with something that could cause damage if it were to slip. Once the shells are installed you can use the stock (unaltered) cables as they are.

Firmware

Edit the Configuration.h file and enable (uncomment) REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER. Rebuild and deploy the Marlin firmware to your 3D Printer.

Show more statistics at the end of the print

Statistics as filament length, filament weight and filament cost can be embedded into the G-code. After the print is finished there will be an infobox that you can click and a popup will present you the printed filename (limited to the first 25 characters), the time needed for the print, the filament length used, the filament weight and its cost. In the case of multi-filament usage the statistics will show the sum of all individual data (sum of length, sum of weight, sum of cost). The statistic data in the G-code must have the following format (a good practice would be to include this at the beginning of the G-code):

  • M118 P0 filament_data L:{12.3456}m L: represents the length in meters
  • M118 P0 filemant_data W:{1.23456}g W: represents the weight in grams
  • M118 P0 filament_data C:{0.1234} C: represents the cost without a unit

The values of every filament data can be in a brackets, parentheses, apostrophes, etc. or without them, measurement units can be there or not. So M118 P0 filament_data L:(12.3456)m, M118 P0 filament_data L:12.3456meters, M118 P0 filament_data L:[12.3456] and so on are all valid formats.

For multi-filament print statistics the data for each used filament should be written, they can be separated by comma, space, asterix, whatever, except ; and .. Examples for multi-filament:

  • M118 P0 filament_data L:(12.3456, 8.2520974)m
  • M118 P0 filament_data W: 24.87652 15.568264 gramm
  • M118 P0 filament_data C:[1.3456], [0.56024]

The inclusion of the filament data into the G-code can be automated. In Cura all you have to do is to insert the following into the Start G-Code:

  • M118 P0 filament_data L:{filament_amount}m
  • M118 P0 filament_data W:{filament_weight}g
  • M118 P0 filament_data C:{filament_cost}

In case the G-code file has been generated using the BTT 3D Plug-In Suit, the data is automatically added.

In case filament data is not present in the G-code, the filament length data is calculated during print. Length is calculated regardless of using the TFT USB, TFT SD or the onboard media. Calculations are done in both absolute or relative extrusion mode. Filament data takes into account the flow rate also but with a caveat. It has to be the same flow rate during the entire time of the printing, because the end result is calculated based on the flow rate at the time the print has finished. If flow rate changes during the print the results will not be accurate anymore.

bigtreetech-touchscreenfirmware's People

Contributors

0purple avatar 3darena avatar acenotass avatar antoszhun avatar bepstein111 avatar bigtreetech avatar bryan065 avatar bscmod avatar chzj333 avatar digant73 avatar geminiserver avatar guilouz avatar guruathwal avatar kisslorand avatar lightmaster avatar mangavalk avatar mehmetsutas avatar msq001 avatar novaxim avatar oldman4u avatar pfn avatar radek8 avatar rebel1 avatar robbycandra avatar subcircuit avatar thisiskeithb avatar thro42 avatar traffic-light avatar unknownhero99 avatar wololo3d avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bigtreetech-touchscreenfirmware's Issues

connecting TFT 35 V1.2 to Raspberry

Hello,
how can I connect the TFT 35 V1.2 to a Raspberry PI as an normal TFT?
I want to run Octoprint on the PI.
Thank you for answering

Heikoho

Russian Language

The Russian language no longer works, but it did with the original firmware that came with the LCD display. I noticed it was commented out in the code and the language_ru.h has weird encoding(in the source code) instead of the UTF-8. And additional related issue: the font for Russian was uneven. Some letters higher or lower than they should be. I am assuming its some sort problem with font itself? Is there any way to load custom .fon fonts? Where do we get them from. Thank you.

SKR1.3 + TFT35 v2.0 + WiFi

Hi,

I have received my order of an SKR 1.3 with 2209 v1.3 drivers along with a TFT v2.0 and a WiFi expansion from Aliexpress. I'm searching through the repository and internet in general to find some instructions as to make this combination functional, especially for the screen and the WiFi interface. Can someone help me or point me to the right direction?

Thank and best regards.

Gregoris

Font Change?

I've been trying to change the font on my screen. I can't figure out what type of file the font is stored as. The readme says it's a bitmap font, but I've tried several converters and viewers for bitmap and raster fonts but can't seem to open them. Is there a special program used to view/edit the fonts?

Please add a status screen

To make this screen a little more useful, can you add a status screen that shows while the printer is printing something? I would like to see the details you normally see on an LCD12864 all together on this status screen:

  • Printing time
  • Progress (when printing from SD)
  • Nozzle temperature
  • Bed temperature
  • X/Y/Z position
  • Fan speed
  • Info that can be placed using M117

Second extruder and second Hot-End not displayed

My TFT35 v2.0 doesn't show second extruder neither second Hot-End
My SKR Pro V1.1 is setup with two extruders and two hot ends but the second extruder neither the second hot-end do show up in the menu. (There are also no BMP ICONS for extruder 2 and hot-end 2)
If anyone could help me that would be great.
TFT 35 configuration file

LCD overview main screen plans?

the touch screen seems to be wonderful, but the firmware at this point it still needs alot of development
is there any plans to have a section or a main view where you see everything that is happening with machine while is printing?
like the reprap FULL GRAPHIC SMART CONTROLER that shows on main page
the movements of machine while printing
bed temperature actual and target
hotend temperature actual an target
fan percentage
print status
etc....
all in one page...

Firmware update "stuck"

When putting BIGTREE_TFT24_V1.1.21.bin and the TFT24 folder alone at the root of the SD and re-powering. The screen says:

Program size: 82kb
Updating: %

And stays like this the whole time.

Stop working after G29

hello,
On TFT24 V1.1.22, in TouchScreen mode, when I run a print from SD Card, it stop working after the G29 command.
even with a simple gcode like :

G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G29 ; Auto Bed Leveling
M117 AutoLevel done

"AutoLevel done" never display on 12864 LCD (still connected for test)
maybe G29 take too much time and there is an over flow in buffer on printer ?
bt actually I can't use it :(
let me know if you have the same issue
thanks for your help

Case sensitivity: parseACK.h

Found some little bug that prevents me from building.
In:
TFT/src/User/API/parseACK.h
should be upper case:
#include "Configuration.h"

TFT35 V3.0 unable to update firmware (MKS-TFT)

Hi Everyone,

I recently bought a TFT35 V3.0. It has the STM32 uC. I was able to flash the latest TFT35 firmware. I am using this to interface with a MKS GEN 1.4 controller, so I would like to flash the latest MKS TFT firmware. For some reason, I can load any compatible version of TFT35 V3.0 firmware, but the MKS firmware won't upload.

I noticed other threads mention renaming the .bin file name. I intuitively thought I should rename the MKS TFT bin to match the stock firmware bin, but that didn't work. Anything else I should try?

Thanks, - A

Armenian language

I want to add custom characters (Armenian fonts). How can I do that?

Thank you.

Wrogn icons display and bitmap update stop @ 50/66 SD icons files

I have make a new .bin file from source, it's include TFT_SD or OnboadSD printing functions, details:

Hardware version: BIGTREETECH-TFT35-V1.2
Firmware version: BIQU_TFT35_V1.2.20.bin (previously -> BIQU_TFT35_V1.2.13.x.bin but same issues)

I have used the complete and original bmp files folder from github https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/issues/new

the issues is:

  1. no correct icons display in "print" menu, after start print from TFT_SD or OnboardSD, the "printing" menu don't display some icons, display the white square

print_menu

  1. in this "printing" menu is't present the "back" icon button to return on main page, after printing a file from SD, the TFT display can be reset "poweroff - poweron" to return on the main page.

printing_menu

  1. no correct icons display in "Babystep"

babystep1_menu

and

babystep2_menu

MENUITEMS babyStepItems = { // title LABEL_BABYSTEP, //icon label {{ICON_DEC, LABEL_DEC}, {ICON_BACKGROUND, LABEL_BACKGROUND}, {ICON_BACKGROUND, LABEL_BACKGROUND}, {ICON_INC, LABEL_INC}, {ICON_NOZZLE, LABEL_NOZZLE}, {ICON_01_MM, LABEL_01_MM}, {ICON_NORMAL_SPEED, LABEL_VALUE_ZERO}, {ICON_BACK, LABEL_BACK},} };

  1. when firmware updating from TFT_SD, the updating bmp files process whas display some icons pics and count of total icons, stop any bmp icons update whet OS reach 50 icons of 66 icon present. the complete firmware update continue without any error.

  2. I have try to update only the last bmp files like:

  • OnTFTSD.bmp
  • OnBoardSD.bmp
  • U_Disk.bmp

the updating process terminate without updating any new icons and without any errors

Updating Firmware on TFT35 v2.0.20

I am posting a follow up issue. There was a failure to resolve the issue in the thread: " Unable to update firmware "

There seems to be an inherit issue with TFT35 v2.0 boards prepared with version 20.

I am unable to update the firmware using the SD card and .bin file names. Multiple names have been suggested and used. Multiple SD cards and formats have also been used.

The best "fix" found in the previous thread was to use an ST-Link device and burn a new bootloader.

Many others have reported similar issues with the same board and firmware version.

I am hoping that @bigtreetech can elude to more details and provide a simpler fix for those that purchased the board expecting compatibility and simple firmware editing.

How to change or add font

Is there any manual about changing or adding font files for any other languages? I'm trying to add korean to the firmware, but the font doesn't print korean.

Firmware version history

please can you add a firmware version history to BIGTREETECH-TouchScreenFirmware repository?

from BIQU_TFT35_V1.2.12.bin to BIQU_TFT35_V1.2.20.bin what are the changes made?

thx! :)

Print is done, I press "OK", the head rapidly.....

So when a print is done, the printer does the end-gcode. Just like normal.

But the TFT asks to press OK. I think it says "waiting for M31" "OK" ?

So when I press "OK", the printer rapidly starts to move close to 0, 0 , 10 (?). But it's not homing.
The Z axis moved down very quickly (over 100mm down), I was afraid it would crash down but it stopped early enough. Not by Z endstop but somewhere in mid air.

I guess the stepper motors do not deactive ? How would it know to stop?

And why does it do this anyways? If you forget to remove the printed massive object and press Ok: say goodbye to your object and maybe even printer.

What happened to WiFi support?

Pretty much what the title says. One the FW my display came with (tft35 v2.0), there was a wifi option (which did absolutely nothing, but it was there). Now, this option totally disappeared.
So, will the WiFi support be added back in?

Latest version does not compile for TFT24

I saw the changes to the report this morning and 'pulled' the changes and tried to compile for TFT24 v1.1, but got these errors

Executing task in folder BIGTREETECH-TouchScreenFirmware: C:\Users\dave.platformio\penv\Scripts\platformio.exe run <

Processing BIGTREE_TFT24_V1_1 (platform: ststm32; framework: stm32cube; board: STM32F105RC)

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/STM32F105RC.html
PLATFORM: ST STM32 5.7.0 > STM32F105RC (48k RAM. 256k Flash)
HARDWARE: STM32F105RCT6 72MHz, 48KB RAM, 256KB Flash
DEBUG: Current (blackmagic) External (blackmagic, cmsis-dap, jlink, stlink)
PACKAGES: toolchain-gccarmnoneeabi 1.70201.0 (7.2.1), framework-stm32cube 2.0.181130
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
Dependency Graph
|--
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\Gcode\gcode.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\Gcode\mygcodefs.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\LCD_Encoder.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\Language\Language.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\Language\utf8_decode.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\UI\GUI.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\UI\ST7920_Simulator.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\UI\touch_process.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\UI\ui_draw.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\Vfs\vfs.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\boot.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\extend.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\interfaceCmd.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\API\parseACK.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Fatfs\myfatfs.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Hal\LCD_Init.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Hal\stm32f10x\Serial.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Hal\stm32f10x\lcd.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Hal\xpt2046.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\BabyStep.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Extrude.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Fan.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Heat.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Home.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\MainPage.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Mode.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Move.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Popup.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\PowerFailed.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Print.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Printing.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\ProbeOffset.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Settings.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\Speed.o
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\leveling.o
TFT\src\User\Menu\Mode.c: In function 'menuMode':
TFT\src\User\Menu\Mode.c:92:11: warning: unused variable 'nowEncoder' [-Wunused-variable]
int16_t nowEncoder = encoderPosition = 0;
^~~~~~~~~~
TFT\src\User\Menu\Print.c: In function 'menuSendGcode':
TFT\src\User\Menu\Print.c:240:90: warning: pointer targets in passing argument 5 of 'GUI_DispStringInRect' differ in signedness [-Wpointer-sign]
GUI_DispStringInRect(LCD_WIDTH-GCODE_KEYW-START_GKX,10,LCD_WIDTH-10,10+BYTE_HEIGHT+5,"Send", 0);
^~~~~~
In file included from TFT\src\User/includes.h:22:0,
from TFT\src\User\Menu\Print.c:2:
TFT\src\User\API\UI/GUI.h:55:6: note: expected 'const uint8_t * {aka const unsigned char *}' but argument is of type 'char *'
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\Menu\menu.o
void GUI_DispStringInRect(int16_t sx, int16_t sy, int16_t ex, int16_t ey, const uint8_t *p, uint8_t mode);
^~~~~~~~~~~~~~~~~~~~
TFT\src\User\Menu\Print.c:241:70: warning: pointer targets in passing argument 5 of 'GUI_DispStringInRect' differ in signedness [-Wpointer-sign]
GUI_DispStringInRect(10,10,GCODE_KEYW+START_GKX,10+BYTE_HEIGHT+5,"Back", 0);
^~~~~~
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\main.o
In file included from TFT\src\User/includes.h:22:0,
Compiling .pio\build\BIGTREE_TFT24_V1_1\src\src\User\os_timer.o
from TFT\src\User\Menu\Print.c:2:
TFT\src\User\API\UI/GUI.h:55:6: note: expected 'const uint8_t * {aka const unsigned char *}' but argument is of type 'char *'
void GUI_DispStringInRect(int16_t sx, int16_t sy, int16_t ex, int16_t ey, const uint8_t *p, uint8_t mode);
^~~~~~~~~~~~~~~~~~~~
TFT\src\User\Menu\Settings.c:200:12: warning: 'item_runout_i' defined but not used [-Wunused-variable]
static u8 item_runout_i = 0;
^~~~~~~~~~~~~
Linking .pio\build\BIGTREE_TFT24_V1_1\BIGTREE_TFT24_V1.1.24.1.elf
.pio/build/BIGTREE_TFT24_V1_1/src/src/User/API/interfaceCmd.o: In function sendQueueCmd': c:\Users\dave\3D-Printing\BTT_TFT_Firmware\BIGTREETECH-TouchScreenFirmware/TFT\src\User\API/interfaceCmd.c:230: undefined reference to positionSetUpdateWaiting'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\BIGTREE_TFT24_V1_1\BIGTREE_TFT24_V1.1.24.1.elf] Error 1
======================================================================================== [FAILED] Took 4.22 seconds ========================================================================================

Environment Status Duration


BIGTREE_TFT35_V1_0 IGNORED
BIGTREE_TFT35_V1_1 IGNORED
BIGTREE_TFT35_V1_2 IGNORED
BIGTREE_TFT35_V2_0 IGNORED
BIGTREE_TFT35_V3_0 IGNORED
BIGTREE_TFT28 IGNORED
BIGTREE_TFT24_V1_1 FAILED 00:00:04.218
================================================================================== 1 failed, 0 succeeded in 00:00:04.218 ==================================================================================
The terminal process terminated with exit code: 1

Terminal will be reused by tasks, press any key to close it.

Seems as thought there is problems with the code.

How to operate 12864 mode with skr mini e3 board

How could I use 12864 mode with SKR mini e3 board?
I can see 12864 mode with press control switch long time but no screen at all.
Touch mode is ok but no screen for 128664 mode.
Please let me know how to use 128664 mode with skr mini e3 board.

TFT 35 V1.2 no Print with M501

Hi if i have in my starting script the following lines i can not start the print.

"G28; home all axes
M501; load eprom
M420 S1; active bed leveling"

the error is due to M501 but it works on other boards

No display for M117 messages or nozzle position

Does the display (TFT24 v1.1) support displaying message that were sent via g-code M117?
Also, the nozzle position.

The lcd 12864 would have these information (right at it's main page) which i think is very important. However, in the Touchscreen TFT mode, i can't seem to see those information.

I've created a fork and trying to display the message in a custom menu (page) but i can't seem to find anything in code for the Touchscreen side. The 12864 emulator might have it but it would be better if the touchscreen side also have it by default.

If there isn't any support for this, could anyone point me in the right direction?
So, i can add the feature myself.
e.g. How to receive/parse M117 received from an SKR 1.3 board

(note this is my first time modifying an LCD firmware, so i'm really new to this)

Support 500000 baudrate

Does TFT35 hardware support higher baudrate? My marlin settings set up to 500000 baudrate.

Background Colour (RGB / HEX) / Image + Change Fonts

How can we change the Background Colour with RGB or # Colours? or even with a BMP Image?

And there is no information about the FONT and how to change it and how to create a new font and add / replace it...

Can we please get some more information about this stuff? The Thunder has a GUI with images and more information on it and it uses a TFT35?

If you want to sell more of your kits to the DIY community go add more guides / tutorials how to create custom GUI's and FONT's

TFT24: compile error: RAM overflowed by 3376 bytes

I cannot even compile it. Got it from github, changed default_envs = BIGTREE_TFT24_V1_1
from platform.io / visual studio code. And I just get an error:

Linking .pio\build\BIGTREE_TFT24_V1_1\BIGTREE_TFT24_V1.1.23.elf
c:/users/john/.platformio/packages/[email protected]/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: .pio\build\BIGTREE_TFT24_V1_1\BIGTREE_TFT24_V1.1.23.elf section `._user_heap_stack' will not fit in region `RAM'
c:/users/john/.platformio/packages/[email protected]/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: region `RAM' overflowed by 3376 bytes
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\BIGTREE_TFT24_V1_1\BIGTREE_TFT24_V1.1.23.elf] Error 1

Small bug and request

Firmware BIGTREE_TFT35_V3.0.23 (master)
In the Settings menu, the "Rotate UI" has the "Shut down" picture, and "Runout" haven't picture.

Request : Please, could you add Z position in the "Printing interface", and all positions in the "Move interface"

Thanks for your job.

[BUG][TFT24] Several bad prints at the same point

Several bad prints at the same point

  • was printer from onboard SD card
  • several attempts with power-cycling all boards in between
  • looks like a gcode handling issue by onboard controller
  • the same file was printed just fine by using OctoPrint.

Charset encoding language file.

20190929_170110
Every time I edit a language file, I have a problem with the character encoding. For example, a degree symbol. How should these files be encoded?

TFT35 V3.0 mode 12854 background color and text

was wondering if this feature is working on TFT35?
i have trIed diferent colors and it seems it wont work

#define ST7920_BKCOLOR BLACK
#define ST7920_FNCOLOR BLUE

can anyone confirm this?
thanks

Compatability

Hi.

According to BTT, this firmware should be compatible with the following boards:
TFT35 V1.0/V1.1/V1.2/V2.0/V3.0, TFT28, TFT24 V1.1

My question is if there is a single user out there using a TFT28 successfully with this firmware and IF yes, if he could provide us the files he is using or a firmware. I bought the TFT28 because it was mentioned to be compatible and i saw that there is a lot of development going on, but all i get is a white screen using this firmware.

If this firmware is not compatible i would like to see BTT to make this officially and remove the screen from the list of compatible devices.

Thank you

Changing mode affect the printer

The way to change the mode (touchscreen / lcd12864) by holding and turning the rotary encoder is a bad idea :

Rotary encoder is directly connected to printer, so when we change the mode, we go into menu in printer without knowing it, and sometime that change configuration or something else.

An other approche could be :

  • touchscreen -> lcd12864 : clic on a specific icon in settings for exemple
  • lcd12864 -> touchscreen : hold a long press on the touchscreen as it’s not used in this mode

What do you think about that ?

Regards

switching mode desable com port receiver

tested on :
TFT35 V3.0.23
TFT35 V3.0.21

to reproduce :

  • start in TFT mode
  • go to temperature menu
  • change hotend's temperature
  • check you see temperature increase
    -> TFT serial com port receiver works well
  • switch to LCD12864 mode
  • change bed's temperature
  • switch back to TFT mode
  • go to temperature menu
  • températures don't change
    -> TFT serial com port receiver doesn't work anymore

do you have the same issue ?

[Request] option to disable sd card in touchscreen mode

I really love the TFT2.4 V1.1 screen.
But I often have issue when I run a print from SD card in Touchmode, absolutely no issue in 12864 emulator mode.

The touchmode is very convenient to prepare the printer, move axis, etc.

So I would like to find a way to switch the mode without affecting the printer.

I think the first step is to be able to disable to the SD card by the SMT32.

Some one as an idea how to disable it in source code ?

Thanks for your help

French language

Could you add the French language please.
Thanks in advance.

Set up baby stepping on TFT35 V2

Hi,

How do I setup baby stepping on TFT35 V2?
Also how do I enable 12864 mode?

PS: I'm using this display with skr v1.3.

Thank you.

Unable to update the firmware

I'm unable to update the firmware of my board tft35 ( hardware : V1.2, firmware : 1.2.6)

when i put the firmware on the SD card and reset nothing happen ( no firmware update), but when i put the bmp and font they get updated ( but still not the firmware)

Can please some one help ?

180-degree rotation of the screen

I was able to achieve screen rotation in the following way:
LCD_Init.c
LCD_WR_REG(0x36);
LCD_WR_DATA(0xE8); //0x28
But this does not affect the touchscreen.
Really need a 180-degree rotation of the screen!!

Window "Processing" with confirmation

I use a TFT35 V3
Is it possible to deactivate the processing window during the printing process?
It's activated at the homing process, but also with every head change.
In multi-material printing, this window permanently hides printing information.

Another request : is it possible to display the temperature of the 2 heads during printing and Z position?

Thanks,

(Good job for the V0.24 improvements)

tft35 v3.0 no printer attached on serial mode

When you switch between mode 12864 mode and serial mode gives error. on 12864 mode it says "printer is ready", on serial mode it says" no Printer attached". updated the firmware same error is initiated

Filament Runout Error.

When i start a print i get this error(filament runout).
But I dont have a filament sensor.
Dont see in the settings a way to turn it off.

In the printerfirmware its disabled but it looks like its a TFT firmware thing.

GImage of error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.