From 5e0d1b952e933096b494cfc90356ac8c7a6a9634 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d-gussner@users.noreply.github.com> Date: Wed, 23 Aug 2017 17:13:04 +0200 Subject: [PATCH 01/29] Updated German translation modified few things in language.en to get less warnings with length of the messages --- Firmware/language_all.cpp | 7230 +++++++++++++++++++------------------ Firmware/language_all.h | 1342 +++---- Firmware/language_de.h | 623 ++-- Firmware/language_en.h | 88 +- 4 files changed, 4660 insertions(+), 4623 deletions(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 7035a2d8f..de2b8e340 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1,3599 +1,3631 @@ - -#include "Configuration_prusa.h" -#include "language_all.h" - -#define LCD_WIDTH 20 -extern unsigned char lang_selected; - -const char MSG_ACTIVE_EXTRUDER_EN[] PROGMEM = "Active Extruder: "; -const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_ACTIVE_EXTRUDER_EN -}; - -const char MSG_ADJUSTZ_EN[] PROGMEM = "Auto adjust Z?"; -const char MSG_ADJUSTZ_CZ[] PROGMEM = "Auto doladit Z ?"; -const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; -const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; -const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; -const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; -const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ADJUSTZ_EN, - MSG_ADJUSTZ_CZ, - MSG_ADJUSTZ_IT, - MSG_ADJUSTZ_ES, - MSG_ADJUSTZ_PL, - MSG_ADJUSTZ_DE -}; - -const char MSG_ALL_EN[] PROGMEM = "All"; -const char MSG_ALL_CZ[] PROGMEM = "Vse"; -const char MSG_ALL_IT[] PROGMEM = "Tutti"; -const char MSG_ALL_ES[] PROGMEM = "Todos"; -const char MSG_ALL_PL[] PROGMEM = "Wszystko"; -const char MSG_ALL_DE[] PROGMEM = "Alle"; -const char * const MSG_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ALL_EN, - MSG_ALL_CZ, - MSG_ALL_IT, - MSG_ALL_ES, - MSG_ALL_PL, - MSG_ALL_DE -}; - -const char MSG_AMAX_EN[] PROGMEM = "Amax "; -const char * const MSG_AMAX_LANG_TABLE[1] PROGMEM = { - MSG_AMAX_EN -}; - -const char MSG_AUTHOR_EN[] PROGMEM = " | Author: "; -const char * const MSG_AUTHOR_LANG_TABLE[1] PROGMEM = { - MSG_AUTHOR_EN -}; - -const char MSG_AUTO_HOME_EN[] PROGMEM = "Auto home"; -const char MSG_AUTO_HOME_IT[] PROGMEM = "Trova origine"; -const char MSG_AUTO_HOME_ES[] PROGMEM = "Llevar al origen"; -const char MSG_AUTO_HOME_DE[] PROGMEM = "Startposition"; -const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_IT, - MSG_AUTO_HOME_ES, - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_DE -}; - -const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; -const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { - MSG_A_RETRACT_EN -}; - -const char MSG_BABYSTEPPING_X_EN[] PROGMEM = "Babystepping X"; -const char * const MSG_BABYSTEPPING_X_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_X_EN -}; - -const char MSG_BABYSTEPPING_Y_EN[] PROGMEM = "Babystepping Y"; -const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_Y_EN -}; - -const char MSG_BABYSTEPPING_Z_EN[] PROGMEM = "Adjusting Z"; -const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_Z_EN -}; - -const char MSG_BABYSTEP_X_EN[] PROGMEM = "Babystep X"; -const char * const MSG_BABYSTEP_X_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEP_X_EN -}; - -const char MSG_BABYSTEP_Y_EN[] PROGMEM = "Babystep Y"; -const char * const MSG_BABYSTEP_Y_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEP_Y_EN -}; - -const char MSG_BABYSTEP_Z_EN[] PROGMEM = "Live adjust Z"; -const char MSG_BABYSTEP_Z_CZ[] PROGMEM = "Doladeni osy Z"; -const char MSG_BABYSTEP_Z_IT[] PROGMEM = "Compensazione Z"; -const char MSG_BABYSTEP_Z_ES[] PROGMEM = "Micropaso Eje Z"; -const char MSG_BABYSTEP_Z_PL[] PROGMEM = "Dostrojenie osy Z"; -const char MSG_BABYSTEP_Z_DE[] PROGMEM = "Z einstellen"; -const char * const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_EN, - MSG_BABYSTEP_Z_CZ, - MSG_BABYSTEP_Z_IT, - MSG_BABYSTEP_Z_ES, - MSG_BABYSTEP_Z_PL, - MSG_BABYSTEP_Z_DE -}; - -const char MSG_BABYSTEP_Z_NOT_SET_EN[] PROGMEM = "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_CZ[] PROGMEM = "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."; -const char MSG_BABYSTEP_Z_NOT_SET_IT[] PROGMEM = "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_ES[] PROGMEM = "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_PL[] PROGMEM = "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."; -const char MSG_BABYSTEP_Z_NOT_SET_DE[] PROGMEM = "Der Abstand zwischen der Spitze der Duese und der Bed ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration."; -const char * const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_NOT_SET_EN, - MSG_BABYSTEP_Z_NOT_SET_CZ, - MSG_BABYSTEP_Z_NOT_SET_IT, - MSG_BABYSTEP_Z_NOT_SET_ES, - MSG_BABYSTEP_Z_NOT_SET_PL, - MSG_BABYSTEP_Z_NOT_SET_DE -}; - -const char MSG_BED_EN[] PROGMEM = "Bed"; -const char MSG_BED_IT[] PROGMEM = "Letto"; -const char MSG_BED_ES[] PROGMEM = "Base"; -const char MSG_BED_PL[] PROGMEM = "Stolik"; -const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_EN, - MSG_BED_EN, - MSG_BED_IT, - MSG_BED_ES, - MSG_BED_PL, - MSG_BED_EN -}; - -const char MSG_BED_CORRECTION_FRONT_EN[] PROGMEM = "Front side[um]"; -const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; -const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Fronte [um]"; -const char MSG_BED_CORRECTION_FRONT_ES[] PROGMEM = "Adelante [um]"; -const char MSG_BED_CORRECTION_FRONT_PL[] PROGMEM = "Do przodu [um]"; -const char MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; -const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_FRONT_EN, - MSG_BED_CORRECTION_FRONT_CZ, - MSG_BED_CORRECTION_FRONT_IT, - MSG_BED_CORRECTION_FRONT_ES, - MSG_BED_CORRECTION_FRONT_PL, - MSG_BED_CORRECTION_FRONT_DE -}; - -const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]"; -const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]"; -const char MSG_BED_CORRECTION_LEFT_IT[] PROGMEM = "Sinistra [um]"; -const char MSG_BED_CORRECTION_LEFT_ES[] PROGMEM = "Izquierda [um]"; -const char MSG_BED_CORRECTION_LEFT_PL[] PROGMEM = "W lewo [um]"; -const char MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; -const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_LEFT_EN, - MSG_BED_CORRECTION_LEFT_CZ, - MSG_BED_CORRECTION_LEFT_IT, - MSG_BED_CORRECTION_LEFT_ES, - MSG_BED_CORRECTION_LEFT_PL, - MSG_BED_CORRECTION_LEFT_DE -}; - -const char MSG_BED_CORRECTION_MENU_EN[] PROGMEM = "Bed level correct"; -const char MSG_BED_CORRECTION_MENU_CZ[] PROGMEM = "Korekce podlozky"; -const char MSG_BED_CORRECTION_MENU_IT[] PROGMEM = "Correz. liv.letto"; -const char MSG_BED_CORRECTION_MENU_ES[] PROGMEM = "Corr. de la cama"; -const char MSG_BED_CORRECTION_MENU_PL[] PROGMEM = "Korekta podkladki"; -const char MSG_BED_CORRECTION_MENU_DE[] PROGMEM = "Bed level Korrekt"; -const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_MENU_EN, - MSG_BED_CORRECTION_MENU_CZ, - MSG_BED_CORRECTION_MENU_IT, - MSG_BED_CORRECTION_MENU_ES, - MSG_BED_CORRECTION_MENU_PL, - MSG_BED_CORRECTION_MENU_DE -}; - -const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]"; -const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]"; -const char MSG_BED_CORRECTION_REAR_IT[] PROGMEM = "Retro [um]"; -const char MSG_BED_CORRECTION_REAR_ES[] PROGMEM = "Atras [um]"; -const char MSG_BED_CORRECTION_REAR_PL[] PROGMEM = "Do tylu [um]"; -const char MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; -const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_REAR_EN, - MSG_BED_CORRECTION_REAR_CZ, - MSG_BED_CORRECTION_REAR_IT, - MSG_BED_CORRECTION_REAR_ES, - MSG_BED_CORRECTION_REAR_PL, - MSG_BED_CORRECTION_REAR_DE -}; - -const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; -const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Ruecksetzen"; -const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_DE -}; - -const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side[um]"; -const char MSG_BED_CORRECTION_RIGHT_CZ[] PROGMEM = "Vpravo [um]"; -const char MSG_BED_CORRECTION_RIGHT_IT[] PROGMEM = "Destra [um]"; -const char MSG_BED_CORRECTION_RIGHT_ES[] PROGMEM = "Derecha [um]"; -const char MSG_BED_CORRECTION_RIGHT_PL[] PROGMEM = "W prawo [um]"; -const char MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; -const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RIGHT_EN, - MSG_BED_CORRECTION_RIGHT_CZ, - MSG_BED_CORRECTION_RIGHT_IT, - MSG_BED_CORRECTION_RIGHT_ES, - MSG_BED_CORRECTION_RIGHT_PL, - MSG_BED_CORRECTION_RIGHT_DE -}; - -const char MSG_BED_DONE_EN[] PROGMEM = "Bed done"; -const char MSG_BED_DONE_CZ[] PROGMEM = "Bed OK."; -const char MSG_BED_DONE_IT[] PROGMEM = "Piatto fatto."; -const char MSG_BED_DONE_ES[] PROGMEM = "Base preparada"; -const char MSG_BED_DONE_PL[] PROGMEM = "Stolik OK."; -const char MSG_BED_DONE_DE[] PROGMEM = "Bed OK"; -const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_DONE_EN, - MSG_BED_DONE_CZ, - MSG_BED_DONE_IT, - MSG_BED_DONE_ES, - MSG_BED_DONE_PL, - MSG_BED_DONE_DE -}; - -const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; -const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; -const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto"; -const char MSG_BED_HEATING_ES[] PROGMEM = "Calentando Base"; -const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; -const char MSG_BED_HEATING_DE[] PROGMEM = "Bed aufwaermen"; -const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_HEATING_EN, - MSG_BED_HEATING_CZ, - MSG_BED_HEATING_IT, - MSG_BED_HEATING_ES, - MSG_BED_HEATING_PL, - MSG_BED_HEATING_DE -}; - -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_EN[] PROGMEM = "Bed leveling failed. Sensor triggered too high. Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_IT[] PROGMEM = "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_ES[] PROGMEM = "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_PL[] PROGMEM = "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_DE[] PROGMEM = "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset."; -const char * const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_HIGH_EN, - MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ, - MSG_BED_LEVELING_FAILED_POINT_HIGH_IT, - MSG_BED_LEVELING_FAILED_POINT_HIGH_ES, - MSG_BED_LEVELING_FAILED_POINT_HIGH_PL, - MSG_BED_LEVELING_FAILED_POINT_HIGH_DE -}; - -const char MSG_BED_LEVELING_FAILED_POINT_LOW_EN[] PROGMEM = "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_IT[] PROGMEM = "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_ES[] PROGMEM = "Nivelacion fallada. Sensor no funciona. Escombros en Boqui.? Esperando reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_PL[] PROGMEM = "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_DE[] PROGMEM = "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset"; -const char * const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_LOW_EN, - MSG_BED_LEVELING_FAILED_POINT_LOW_CZ, - MSG_BED_LEVELING_FAILED_POINT_LOW_IT, - MSG_BED_LEVELING_FAILED_POINT_LOW_ES, - MSG_BED_LEVELING_FAILED_POINT_LOW_PL, - MSG_BED_LEVELING_FAILED_POINT_LOW_DE -}; - -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN[] PROGMEM = "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT[] PROGMEM = "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES[] PROGMEM = "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL[] PROGMEM = "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE[] PROGMEM = "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset."; -const char * const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration failed. Front calibration points not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delanteros no alcanzables."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration failed. Left front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration failed. Right front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN[] PROGMEM = "XYZ calibration failed. Please consult the manual."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ[] PROGMEM = "Kalibrace XYZ selhala. Nahlednete do manualu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT[] PROGMEM = "Calibrazione XYZ fallita. Si prega di consultare il manuale."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES[] PROGMEM = "Calibracion XYZ fallada. Consultar el manual por favor."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL[] PROGMEM = "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN[] PROGMEM = "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN[] PROGMEM = "XYZ calibration failed. Bed calibration point was not found."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ[] PROGMEM = "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT[] PROGMEM = "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES[] PROGMEM = "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL[] PROGMEM = "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bed-Kalibrierpunkt nicht gefunden."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "XYZ calibration all right. Skew will be corrected automatically."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE[] PROGMEM = "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE[] PROGMEM = "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration compromised. Front calibration points not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Left front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Right front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE -}; - -const char MSG_BEGIN_FILE_LIST_EN[] PROGMEM = "Begin file list"; -const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[1] PROGMEM = { - MSG_BEGIN_FILE_LIST_EN -}; - -const char MSG_BROWNOUT_RESET_EN[] PROGMEM = " Brown out Reset"; -const char * const MSG_BROWNOUT_RESET_LANG_TABLE[1] PROGMEM = { - MSG_BROWNOUT_RESET_EN -}; - -const char MSG_CALIBRATE_BED_EN[] PROGMEM = "Calibrate XYZ"; -const char MSG_CALIBRATE_BED_CZ[] PROGMEM = "Kalibrace XYZ"; -const char MSG_CALIBRATE_BED_IT[] PROGMEM = "Calibra XYZ"; -const char MSG_CALIBRATE_BED_ES[] PROGMEM = "Calibra XYZ"; -const char MSG_CALIBRATE_BED_PL[] PROGMEM = "Kalibracja XYZ"; -const char MSG_CALIBRATE_BED_DE[] PROGMEM = "Kalibrierung XYZ"; -const char * const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_EN, - MSG_CALIBRATE_BED_CZ, - MSG_CALIBRATE_BED_IT, - MSG_CALIBRATE_BED_ES, - MSG_CALIBRATE_BED_PL, - MSG_CALIBRATE_BED_DE -}; - -const char MSG_CALIBRATE_BED_RESET_EN[] PROGMEM = "Reset XYZ calibr."; -const char MSG_CALIBRATE_BED_RESET_CZ[] PROGMEM = "Reset XYZ kalibr."; -const char MSG_CALIBRATE_BED_RESET_PL[] PROGMEM = "Reset kalibr. XYZ"; -const char MSG_CALIBRATE_BED_RESET_DE[] PROGMEM = "Reset XYZ Kalibr."; -const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_CZ, - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_PL, - MSG_CALIBRATE_BED_RESET_DE -}; - -const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E"; -const char MSG_CALIBRATE_E_CZ[] PROGMEM = "Kalibrovat E"; -const char MSG_CALIBRATE_E_IT[] PROGMEM = "Calibra E"; -const char MSG_CALIBRATE_E_ES[] PROGMEM = "Calibrar E"; -const char MSG_CALIBRATE_E_PL[] PROGMEM = "Kalibruj E"; -const char MSG_CALIBRATE_E_DE[] PROGMEM = "Kalibriere E"; -const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_E_EN, - MSG_CALIBRATE_E_CZ, - MSG_CALIBRATE_E_IT, - MSG_CALIBRATE_E_ES, - MSG_CALIBRATE_E_PL, - MSG_CALIBRATE_E_DE -}; - -const char MSG_CALIBRATE_PINDA_EN[] PROGMEM = "Calibrate"; -const char MSG_CALIBRATE_PINDA_CZ[] PROGMEM = "Zkalibrovat"; -const char MSG_CALIBRATE_PINDA_IT[] PROGMEM = "Calibrare"; -const char MSG_CALIBRATE_PINDA_ES[] PROGMEM = "Calibrar"; -const char MSG_CALIBRATE_PINDA_PL[] PROGMEM = "Skalibrowac"; -const char MSG_CALIBRATE_PINDA_DE[] PROGMEM = "Kalibrieren"; -const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_PINDA_EN, - MSG_CALIBRATE_PINDA_CZ, - MSG_CALIBRATE_PINDA_IT, - MSG_CALIBRATE_PINDA_ES, - MSG_CALIBRATE_PINDA_PL, - MSG_CALIBRATE_PINDA_DE -}; - -const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; -const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; -const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; -const char MSG_CALIBRATION_PINDA_MENU_ES[] PROGMEM = "Calibracion temp."; -const char MSG_CALIBRATION_PINDA_MENU_PL[] PROGMEM = "Cieplna kalibr."; -const char MSG_CALIBRATION_PINDA_MENU_DE[] PROGMEM = "Temp. kalibrieren"; -const char * const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATION_PINDA_MENU_EN, - MSG_CALIBRATION_PINDA_MENU_CZ, - MSG_CALIBRATION_PINDA_MENU_IT, - MSG_CALIBRATION_PINDA_MENU_ES, - MSG_CALIBRATION_PINDA_MENU_PL, - MSG_CALIBRATION_PINDA_MENU_DE -}; - -const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD"; -const char MSG_CARD_MENU_CZ[] PROGMEM = "Tisk z SD"; -const char MSG_CARD_MENU_IT[] PROGMEM = "Stampa da SD"; -const char MSG_CARD_MENU_ES[] PROGMEM = "Menu tarjeta SD"; -const char MSG_CARD_MENU_PL[] PROGMEM = "Druk z SD"; -const char MSG_CARD_MENU_DE[] PROGMEM = "Drucken von SD"; -const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CARD_MENU_EN, - MSG_CARD_MENU_CZ, - MSG_CARD_MENU_IT, - MSG_CARD_MENU_ES, - MSG_CARD_MENU_PL, - MSG_CARD_MENU_DE -}; - -const char MSG_CENTER_EN[] PROGMEM = "Center:"; -const char MSG_CENTER_CZ[] PROGMEM = "Stred:"; -const char MSG_CENTER_IT[] PROGMEM = "Centro:"; -const char MSG_CENTER_ES[] PROGMEM = "Centro:"; -const char MSG_CENTER_PL[] PROGMEM = "Srodek:"; -const char MSG_CENTER_DE[] PROGMEM = "Mitte:"; -const char * const MSG_CENTER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CENTER_EN, - MSG_CENTER_CZ, - MSG_CENTER_IT, - MSG_CENTER_ES, - MSG_CENTER_PL, - MSG_CENTER_DE -}; - -const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder"; -const char MSG_CHANGE_EXTR_CZ[] PROGMEM = "Zmenit extruder"; -const char MSG_CHANGE_EXTR_IT[] PROGMEM = "Cambio estrusore."; -const char MSG_CHANGE_EXTR_ES[] PROGMEM = "Cambiar extrusor."; -const char MSG_CHANGE_EXTR_PL[] PROGMEM = "Zmienic ekstruder"; -const char MSG_CHANGE_EXTR_DE[] PROGMEM = "Wechsel extruder"; -const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_EXTR_EN, - MSG_CHANGE_EXTR_CZ, - MSG_CHANGE_EXTR_IT, - MSG_CHANGE_EXTR_ES, - MSG_CHANGE_EXTR_PL, - MSG_CHANGE_EXTR_DE -}; - -const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; -const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; -const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!"; -const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambio correcto"; -const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; -const char MSG_CHANGE_SUCCESS_DE[] PROGMEM = "Wechsel erfolgr.!"; -const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_SUCCESS_EN, - MSG_CHANGE_SUCCESS_CZ, - MSG_CHANGE_SUCCESS_IT, - MSG_CHANGE_SUCCESS_ES, - MSG_CHANGE_SUCCESS_PL, - MSG_CHANGE_SUCCESS_DE -}; - -const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; -const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; -const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; -const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; -const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; -const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; -const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGING_FILAMENT_EN, - MSG_CHANGING_FILAMENT_CZ, - MSG_CHANGING_FILAMENT_IT, - MSG_CHANGING_FILAMENT_ES, - MSG_CHANGING_FILAMENT_PL, - MSG_CHANGING_FILAMENT_DE -}; - -const char MSG_CHOOSE_EXTRUDER_EN[] PROGMEM = "Choose extruder:"; -const char MSG_CHOOSE_EXTRUDER_CZ[] PROGMEM = "Vyberte extruder:"; -const char MSG_CHOOSE_EXTRUDER_IT[] PROGMEM = "Seleziona estrusore:"; -const char MSG_CHOOSE_EXTRUDER_ES[] PROGMEM = "Elegir extrusor:"; -const char MSG_CHOOSE_EXTRUDER_PL[] PROGMEM = "Wybierz ekstruder"; -const char MSG_CHOOSE_EXTRUDER_DE[] PROGMEM = "Waehlen Sie Extruder"; -const char * const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHOOSE_EXTRUDER_EN, - MSG_CHOOSE_EXTRUDER_CZ, - MSG_CHOOSE_EXTRUDER_IT, - MSG_CHOOSE_EXTRUDER_ES, - MSG_CHOOSE_EXTRUDER_PL, - MSG_CHOOSE_EXTRUDER_DE -}; - -const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done."; -const char MSG_CLEAN_NOZZLE_E_CZ[] PROGMEM = "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem."; -const char MSG_CLEAN_NOZZLE_E_IT[] PROGMEM = "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."; -const char MSG_CLEAN_NOZZLE_E_ES[] PROGMEM = "E calibrado. Limpiar la boquilla. Haga clic una vez terminado."; -const char MSG_CLEAN_NOZZLE_E_PL[] PROGMEM = "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "; -const char MSG_CLEAN_NOZZLE_E_DE[] PROGMEM = "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."; -const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CLEAN_NOZZLE_E_EN, - MSG_CLEAN_NOZZLE_E_CZ, - MSG_CLEAN_NOZZLE_E_IT, - MSG_CLEAN_NOZZLE_E_ES, - MSG_CLEAN_NOZZLE_E_PL, - MSG_CLEAN_NOZZLE_E_DE -}; - -const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card"; -const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = { - MSG_CNG_SDCARD_EN -}; - -const char MSG_CONFIGURATION_VER_EN[] PROGMEM = " Last Updated: "; -const char * const MSG_CONFIGURATION_VER_LANG_TABLE[1] PROGMEM = { - MSG_CONFIGURATION_VER_EN -}; - -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN[] PROGMEM = "Are left and right Z~carriages all up?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ[] PROGMEM = "Dojely oba Z voziky k~hornimu dorazu?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT[] PROGMEM = "I carrelli Z sin/des sono altezza max?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES[] PROGMEM = "Carros Z izq./der. estan arriba maximo?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL[] PROGMEM = "Oba wozki dojechaly do gornej ramy?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE[] PROGMEM = "Ist der Schlitten ganz oben?"; -const char * const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE -}; - -const char MSG_CONFIRM_NOZZLE_CLEAN_EN[] PROGMEM = "Please clean the nozzle for calibration. Click when done."; -const char MSG_CONFIRM_NOZZLE_CLEAN_CZ[] PROGMEM = "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_IT[] PROGMEM = "Pulire l'ugello per la calibrazione, poi fare click."; -const char MSG_CONFIRM_NOZZLE_CLEAN_ES[] PROGMEM = "Limpiar boquilla para calibracion. Click cuando acabes."; -const char MSG_CONFIRM_NOZZLE_CLEAN_PL[] PROGMEM = "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_DE[] PROGMEM = "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."; -const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_NOZZLE_CLEAN_EN, - MSG_CONFIRM_NOZZLE_CLEAN_CZ, - MSG_CONFIRM_NOZZLE_CLEAN_IT, - MSG_CONFIRM_NOZZLE_CLEAN_ES, - MSG_CONFIRM_NOZZLE_CLEAN_PL, - MSG_CONFIRM_NOZZLE_CLEAN_DE -}; - -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN[] PROGMEM = "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig."; -const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE -}; - -const char MSG_CONTROL_EN[] PROGMEM = "Control"; -const char * const MSG_CONTROL_LANG_TABLE[1] PROGMEM = { - MSG_CONTROL_EN -}; - -const char MSG_COOLDOWN_EN[] PROGMEM = "Cooldown"; -const char MSG_COOLDOWN_CZ[] PROGMEM = "Zchladit"; -const char MSG_COOLDOWN_IT[] PROGMEM = "Raffredda"; -const char MSG_COOLDOWN_ES[] PROGMEM = "Enfriar"; -const char MSG_COOLDOWN_PL[] PROGMEM = "Wychlodzic"; -const char MSG_COOLDOWN_DE[] PROGMEM = "Abkuehlen"; -const char * const MSG_COOLDOWN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_COOLDOWN_EN, - MSG_COOLDOWN_CZ, - MSG_COOLDOWN_IT, - MSG_COOLDOWN_ES, - MSG_COOLDOWN_PL, - MSG_COOLDOWN_DE -}; - -const char MSG_CORRECTLY_EN[] PROGMEM = "Changed correctly?"; -const char MSG_CORRECTLY_CZ[] PROGMEM = "Vymena ok?"; -const char MSG_CORRECTLY_IT[] PROGMEM = "Cambiato corr.?"; -const char MSG_CORRECTLY_ES[] PROGMEM = "Cambiado correct.?"; -const char MSG_CORRECTLY_PL[] PROGMEM = "Wymiana ok?"; -const char MSG_CORRECTLY_DE[] PROGMEM = "Wechsel ok?"; -const char * const MSG_CORRECTLY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CORRECTLY_EN, - MSG_CORRECTLY_CZ, - MSG_CORRECTLY_IT, - MSG_CORRECTLY_ES, - MSG_CORRECTLY_PL, - MSG_CORRECTLY_DE -}; - -const char MSG_COUNT_X_EN[] PROGMEM = " Count X: "; -const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { - MSG_COUNT_X_EN -}; - -const char MSG_CURRENT_EN[] PROGMEM = "Current"; -const char MSG_CURRENT_CZ[] PROGMEM = "Pouze aktualni"; -const char MSG_CURRENT_IT[] PROGMEM = "Attuale"; -const char MSG_CURRENT_ES[] PROGMEM = "Actual"; -const char MSG_CURRENT_PL[] PROGMEM = "Tylko aktualne"; -const char MSG_CURRENT_DE[] PROGMEM = "Aktuelles"; -const char * const MSG_CURRENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CURRENT_EN, - MSG_CURRENT_CZ, - MSG_CURRENT_IT, - MSG_CURRENT_ES, - MSG_CURRENT_PL, - MSG_CURRENT_DE -}; - -const char MSG_DATE_EN[] PROGMEM = "Date:"; -const char MSG_DATE_CZ[] PROGMEM = "Datum:"; -const char MSG_DATE_IT[] PROGMEM = "Data"; -const char MSG_DATE_ES[] PROGMEM = "Fecha:"; -const char MSG_DATE_PL[] PROGMEM = "Data:"; -const char MSG_DATE_DE[] PROGMEM = "Datum"; -const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DATE_EN, - MSG_DATE_CZ, - MSG_DATE_IT, - MSG_DATE_ES, - MSG_DATE_PL, - MSG_DATE_DE -}; - -const char MSG_DEFAULT_SETTINGS_LOADED_EN[] PROGMEM = "Default settings loaded"; -const char * const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[1] PROGMEM = { - MSG_DEFAULT_SETTINGS_LOADED_EN -}; - -const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers"; -const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory"; -const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori"; -const char MSG_DISABLE_STEPPERS_ES[] PROGMEM = "Apagar motores"; -const char MSG_DISABLE_STEPPERS_PL[] PROGMEM = "Wylaczyc silniki"; -const char MSG_DISABLE_STEPPERS_DE[] PROGMEM = "Motoren aus"; -const char * const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DISABLE_STEPPERS_EN, - MSG_DISABLE_STEPPERS_CZ, - MSG_DISABLE_STEPPERS_IT, - MSG_DISABLE_STEPPERS_ES, - MSG_DISABLE_STEPPERS_PL, - MSG_DISABLE_STEPPERS_DE -}; - -const char MSG_DWELL_EN[] PROGMEM = "Sleep..."; -const char MSG_DWELL_IT[] PROGMEM = "Sospensione..."; -const char MSG_DWELL_ES[] PROGMEM = "En espera"; -const char MSG_DWELL_DE[] PROGMEM = "Einen Moment bitte."; -const char * const MSG_DWELL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DWELL_EN, - MSG_DWELL_EN, - MSG_DWELL_IT, - MSG_DWELL_ES, - MSG_DWELL_EN, - MSG_DWELL_DE -}; - -const char MSG_ENDSTOPS_HIT_EN[] PROGMEM = "endstops hit: "; -const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOPS_HIT_EN -}; - -const char MSG_ENDSTOP_HIT_EN[] PROGMEM = "TRIGGERED"; -const char * const MSG_ENDSTOP_HIT_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOP_HIT_EN -}; - -const char MSG_ENDSTOP_OPEN_EN[] PROGMEM = "open"; -const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOP_OPEN_EN -}; - -const char MSG_END_FILE_LIST_EN[] PROGMEM = "End file list"; -const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { - MSG_END_FILE_LIST_EN -}; - -const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; -const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; -const char MSG_ERROR_IT[] PROGMEM = "ERRORE:"; -const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; -const char MSG_ERROR_DE[] PROGMEM = "FEHLER:"; -const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ERROR_EN, - MSG_ERROR_CZ, - MSG_ERROR_IT, - MSG_ERROR_EN, - MSG_ERROR_PL, - MSG_ERROR_DE -}; - -const char MSG_ERR_CHECKSUM_MISMATCH_EN[] PROGMEM = "checksum mismatch, Last Line: "; -const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1] PROGMEM = { - MSG_ERR_CHECKSUM_MISMATCH_EN -}; - -const char MSG_ERR_COLD_EXTRUDE_STOP_EN[] PROGMEM = " cold extrusion prevented"; -const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { - MSG_ERR_COLD_EXTRUDE_STOP_EN -}; - -const char MSG_ERR_KILLED_EN[] PROGMEM = "Printer halted. kill() called!"; -const char * const MSG_ERR_KILLED_LANG_TABLE[1] PROGMEM = { - MSG_ERR_KILLED_EN -}; - -const char MSG_ERR_LINE_NO_EN[] PROGMEM = "Line Number is not Last Line Number+1, Last Line: "; -const char * const MSG_ERR_LINE_NO_LANG_TABLE[1] PROGMEM = { - MSG_ERR_LINE_NO_EN -}; - -const char MSG_ERR_LONG_EXTRUDE_STOP_EN[] PROGMEM = " too long extrusion prevented"; -const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { - MSG_ERR_LONG_EXTRUDE_STOP_EN -}; - -const char MSG_ERR_NO_CHECKSUM_EN[] PROGMEM = "No Checksum with line number, Last Line: "; -const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_CHECKSUM_EN -}; - -const char MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN[] PROGMEM = "No Line Number with checksum, Last Line: "; -const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN -}; - -const char MSG_ERR_NO_THERMISTORS_EN[] PROGMEM = "No thermistors - no temperature"; -const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_THERMISTORS_EN -}; - -const char MSG_ERR_STOPPED_EN[] PROGMEM = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; -const char * const MSG_ERR_STOPPED_LANG_TABLE[1] PROGMEM = { - MSG_ERR_STOPPED_EN -}; - -const char MSG_EXTERNAL_RESET_EN[] PROGMEM = " External Reset"; -const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = { - MSG_EXTERNAL_RESET_EN -}; - -const char MSG_EXTRUDER_EN[] PROGMEM = "Extruder"; -const char MSG_EXTRUDER_IT[] PROGMEM = "Estrusore"; -const char MSG_EXTRUDER_ES[] PROGMEM = "Extrusor"; -const char MSG_EXTRUDER_PL[] PROGMEM = "Ekstruder"; -const char * const MSG_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_EN, - MSG_EXTRUDER_EN, - MSG_EXTRUDER_IT, - MSG_EXTRUDER_ES, - MSG_EXTRUDER_PL, - MSG_EXTRUDER_EN -}; - -const char MSG_EXTRUDER_1_EN[] PROGMEM = "Extruder 1"; -const char MSG_EXTRUDER_1_IT[] PROGMEM = "Estrusore 1"; -const char MSG_EXTRUDER_1_ES[] PROGMEM = "Extrusor 1"; -const char MSG_EXTRUDER_1_PL[] PROGMEM = "Ekstruder 1"; -const char * const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_1_EN, - MSG_EXTRUDER_1_EN, - MSG_EXTRUDER_1_IT, - MSG_EXTRUDER_1_ES, - MSG_EXTRUDER_1_PL, - MSG_EXTRUDER_1_EN -}; - -const char MSG_EXTRUDER_2_EN[] PROGMEM = "Extruder 2"; -const char MSG_EXTRUDER_2_IT[] PROGMEM = "Estrusore 2"; -const char MSG_EXTRUDER_2_ES[] PROGMEM = "Extrusor 2"; -const char MSG_EXTRUDER_2_PL[] PROGMEM = "Ekstruder 2"; -const char * const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_2_EN, - MSG_EXTRUDER_2_EN, - MSG_EXTRUDER_2_IT, - MSG_EXTRUDER_2_ES, - MSG_EXTRUDER_2_PL, - MSG_EXTRUDER_2_EN -}; - -const char MSG_EXTRUDER_3_EN[] PROGMEM = "Extruder 3"; -const char MSG_EXTRUDER_3_IT[] PROGMEM = "Estrusore 3"; -const char MSG_EXTRUDER_3_ES[] PROGMEM = "Extrusor 3"; -const char MSG_EXTRUDER_3_PL[] PROGMEM = "Ekstruder 3"; -const char * const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_3_EN, - MSG_EXTRUDER_3_EN, - MSG_EXTRUDER_3_IT, - MSG_EXTRUDER_3_ES, - MSG_EXTRUDER_3_PL, - MSG_EXTRUDER_3_EN -}; - -const char MSG_EXTRUDER_4_EN[] PROGMEM = "Extruder 4"; -const char MSG_EXTRUDER_4_IT[] PROGMEM = "Estrusore 4"; -const char MSG_EXTRUDER_4_ES[] PROGMEM = "Extrusor 4"; -const char MSG_EXTRUDER_4_PL[] PROGMEM = "Ekstruder 4"; -const char * const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_4_EN, - MSG_EXTRUDER_4_EN, - MSG_EXTRUDER_4_IT, - MSG_EXTRUDER_4_ES, - MSG_EXTRUDER_4_PL, - MSG_EXTRUDER_4_EN -}; - -const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done."; -const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."; -const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."; -const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."; -const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; -const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_E_CAL_KNOB_EN, - MSG_E_CAL_KNOB_CZ, - MSG_E_CAL_KNOB_IT, - MSG_E_CAL_KNOB_ES, - MSG_E_CAL_KNOB_PL, - MSG_E_CAL_KNOB_DE -}; - -const char MSG_Enqueing_EN[] PROGMEM = "enqueing \""; -const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = { - MSG_Enqueing_EN -}; - -const char MSG_FACTOR_EN[] PROGMEM = " \002 Fact"; -const char * const MSG_FACTOR_LANG_TABLE[1] PROGMEM = { - MSG_FACTOR_EN -}; - -const char MSG_FAN_SPEED_EN[] PROGMEM = "Fan speed"; -const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; -const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; -const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; -const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; -const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; -const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FAN_SPEED_EN, - MSG_FAN_SPEED_CZ, - MSG_FAN_SPEED_IT, - MSG_FAN_SPEED_ES, - MSG_FAN_SPEED_PL, - MSG_FAN_SPEED_DE -}; - -const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; -const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = { - MSG_FARM_CARD_MENU_EN -}; - -const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament"; -const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; -const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; -const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; -const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; -const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; -const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENTCHANGE_EN, - MSG_FILAMENTCHANGE_CZ, - MSG_FILAMENTCHANGE_IT, - MSG_FILAMENTCHANGE_ES, - MSG_FILAMENTCHANGE_PL, - MSG_FILAMENTCHANGE_DE -}; - -const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?"; -const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?"; -const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?"; -const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?"; -const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?"; -const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; -const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_CLEAN_EN, - MSG_FILAMENT_CLEAN_CZ, - MSG_FILAMENT_CLEAN_IT, - MSG_FILAMENT_CLEAN_ES, - MSG_FILAMENT_CLEAN_PL, - MSG_FILAMENT_CLEAN_DE -}; - -const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; -const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte filament do extruderu 1. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare."; -const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T0_DE[] PROGMEM = "Filament in extruder 1 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T0_EN, - MSG_FILAMENT_LOADING_T0_CZ, - MSG_FILAMENT_LOADING_T0_IT, - MSG_FILAMENT_LOADING_T0_ES, - MSG_FILAMENT_LOADING_T0_PL, - MSG_FILAMENT_LOADING_T0_DE -}; - -const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; -const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte filament do extruderu 2. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare."; -const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T1_DE[] PROGMEM = "Filament in extruder 2 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T1_EN, - MSG_FILAMENT_LOADING_T1_CZ, - MSG_FILAMENT_LOADING_T1_IT, - MSG_FILAMENT_LOADING_T1_ES, - MSG_FILAMENT_LOADING_T1_PL, - MSG_FILAMENT_LOADING_T1_DE -}; - -const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; -const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte filament do extruderu 3. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare."; -const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T2_DE[] PROGMEM = "Filament in extruder 3 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T2_EN, - MSG_FILAMENT_LOADING_T2_CZ, - MSG_FILAMENT_LOADING_T2_IT, - MSG_FILAMENT_LOADING_T2_ES, - MSG_FILAMENT_LOADING_T2_PL, - MSG_FILAMENT_LOADING_T2_DE -}; - -const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; -const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte filament do extruderu 4. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare."; -const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T3_DE[] PROGMEM = "Filament in extruder 4 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T3_EN, - MSG_FILAMENT_LOADING_T3_CZ, - MSG_FILAMENT_LOADING_T3_IT, - MSG_FILAMENT_LOADING_T3_ES, - MSG_FILAMENT_LOADING_T3_PL, - MSG_FILAMENT_LOADING_T3_DE -}; - -const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; -const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { - MSG_FILE_PRINTED_EN -}; - -const char MSG_FILE_SAVED_EN[] PROGMEM = "Done saving file."; -const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = { - MSG_FILE_SAVED_EN -}; - -const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait."; -const char MSG_FIL_ADJUSTING_CZ[] PROGMEM = "Probiha srovnani filamentu. Prosim cekejte."; -const char MSG_FIL_ADJUSTING_IT[] PROGMEM = "Filamento in fase di regolazione. Attendere prego."; -const char MSG_FIL_ADJUSTING_ES[] PROGMEM = "Ajustando filamentos. Esperar por favor."; -const char MSG_FIL_ADJUSTING_PL[] PROGMEM = "Przebiega wyrownanie filamentow. Prosze czekac."; -const char MSG_FIL_ADJUSTING_DE[] PROGMEM = "Filament positionieren. Bitte warten."; -const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIL_ADJUSTING_EN, - MSG_FIL_ADJUSTING_CZ, - MSG_FIL_ADJUSTING_IT, - MSG_FIL_ADJUSTING_ES, - MSG_FIL_ADJUSTING_PL, - MSG_FIL_ADJUSTING_DE -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Searching bed calibration point"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Hledam kalibracni bod podlozky"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Ricerca del letto punto di calibraz."; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Buscando cama punto de calibracion"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Szukam punktu kalibracyjnego podkladki"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Suchen Bed Kalibrierpunkt"; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE -}; - -const char MSG_FINISHING_MOVEMENTS_EN[] PROGMEM = "Finishing movements"; -const char MSG_FINISHING_MOVEMENTS_CZ[] PROGMEM = "Dokoncovani pohybu"; -const char MSG_FINISHING_MOVEMENTS_IT[] PROGMEM = "Arresto in corso"; -const char MSG_FINISHING_MOVEMENTS_ES[] PROGMEM = "Term. movimientos"; -const char MSG_FINISHING_MOVEMENTS_PL[] PROGMEM = "Konczenie druku"; -const char MSG_FINISHING_MOVEMENTS_DE[] PROGMEM = "Bewegung beenden"; -const char * const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FINISHING_MOVEMENTS_EN, - MSG_FINISHING_MOVEMENTS_CZ, - MSG_FINISHING_MOVEMENTS_IT, - MSG_FINISHING_MOVEMENTS_ES, - MSG_FINISHING_MOVEMENTS_PL, - MSG_FINISHING_MOVEMENTS_DE -}; - -const char MSG_FLOW_EN[] PROGMEM = "Flow"; -const char MSG_FLOW_CZ[] PROGMEM = "Prutok"; -const char MSG_FLOW_IT[] PROGMEM = "Flusso"; -const char MSG_FLOW_ES[] PROGMEM = "Flujo"; -const char MSG_FLOW_PL[] PROGMEM = "Przeplyw"; -const char MSG_FLOW_DE[] PROGMEM = "Durchfluss"; -const char * const MSG_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FLOW_EN, - MSG_FLOW_CZ, - MSG_FLOW_IT, - MSG_FLOW_ES, - MSG_FLOW_PL, - MSG_FLOW_DE -}; - -const char MSG_FLOW0_EN[] PROGMEM = "Flow 0"; -const char * const MSG_FLOW0_LANG_TABLE[1] PROGMEM = { - MSG_FLOW0_EN -}; - -const char MSG_FLOW1_EN[] PROGMEM = "Flow 1"; -const char * const MSG_FLOW1_LANG_TABLE[1] PROGMEM = { - MSG_FLOW1_EN -}; - -const char MSG_FLOW2_EN[] PROGMEM = "Flow 2"; -const char * const MSG_FLOW2_LANG_TABLE[1] PROGMEM = { - MSG_FLOW2_EN -}; - -const char MSG_FOLLOW_CALIBRATION_FLOW_EN[] PROGMEM = "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."; -const char MSG_FOLLOW_CALIBRATION_FLOW_CZ[] PROGMEM = "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."; -const char MSG_FOLLOW_CALIBRATION_FLOW_IT[] PROGMEM = "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."; -const char MSG_FOLLOW_CALIBRATION_FLOW_ES[] PROGMEM = "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."; -const char MSG_FOLLOW_CALIBRATION_FLOW_PL[] PROGMEM = "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."; -const char MSG_FOLLOW_CALIBRATION_FLOW_DE[] PROGMEM = "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow."; -const char * const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FOLLOW_CALIBRATION_FLOW_EN, - MSG_FOLLOW_CALIBRATION_FLOW_CZ, - MSG_FOLLOW_CALIBRATION_FLOW_IT, - MSG_FOLLOW_CALIBRATION_FLOW_ES, - MSG_FOLLOW_CALIBRATION_FLOW_PL, - MSG_FOLLOW_CALIBRATION_FLOW_DE -}; - -const char MSG_FREE_MEMORY_EN[] PROGMEM = " Free Memory: "; -const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { - MSG_FREE_MEMORY_EN -}; - -const char MSG_HEATING_EN[] PROGMEM = "Heating"; -const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; -const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; -const char MSG_HEATING_ES[] PROGMEM = "Calentando..."; -const char MSG_HEATING_PL[] PROGMEM = "Grzanie..."; -const char MSG_HEATING_DE[] PROGMEM = "Aufwaermen"; -const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_EN, - MSG_HEATING_CZ, - MSG_HEATING_IT, - MSG_HEATING_ES, - MSG_HEATING_PL, - MSG_HEATING_DE -}; - -const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; -const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; -const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo"; -const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentamiento final."; -const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; -const char MSG_HEATING_COMPLETE_DE[] PROGMEM = "Aufwaermen OK"; -const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_COMPLETE_EN, - MSG_HEATING_COMPLETE_CZ, - MSG_HEATING_COMPLETE_IT, - MSG_HEATING_COMPLETE_ES, - MSG_HEATING_COMPLETE_PL, - MSG_HEATING_COMPLETE_DE -}; - -const char MSG_HOMEYZ_EN[] PROGMEM = "Calibrate Z"; -const char MSG_HOMEYZ_CZ[] PROGMEM = "Kalibrovat Z"; -const char MSG_HOMEYZ_IT[] PROGMEM = "Calibra Z"; -const char MSG_HOMEYZ_ES[] PROGMEM = "Calibrar Z"; -const char MSG_HOMEYZ_PL[] PROGMEM = "Kalibruj Z"; -const char MSG_HOMEYZ_DE[] PROGMEM = "Kalibrieren Z"; -const char * const MSG_HOMEYZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_EN, - MSG_HOMEYZ_CZ, - MSG_HOMEYZ_IT, - MSG_HOMEYZ_ES, - MSG_HOMEYZ_PL, - MSG_HOMEYZ_DE -}; - -const char MSG_HOMEYZ_DONE_EN[] PROGMEM = "Calibration done"; -const char MSG_HOMEYZ_DONE_CZ[] PROGMEM = "Kalibrace OK"; -const char MSG_HOMEYZ_DONE_IT[] PROGMEM = "Calibrazione OK"; -const char MSG_HOMEYZ_DONE_ES[] PROGMEM = "Calibracion OK"; -const char MSG_HOMEYZ_DONE_PL[] PROGMEM = "Kalibracja OK"; -const char MSG_HOMEYZ_DONE_DE[] PROGMEM = "Kalibrierung OK"; -const char * const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_DONE_EN, - MSG_HOMEYZ_DONE_CZ, - MSG_HOMEYZ_DONE_IT, - MSG_HOMEYZ_DONE_ES, - MSG_HOMEYZ_DONE_PL, - MSG_HOMEYZ_DONE_DE -}; - -const char MSG_HOMEYZ_PROGRESS_EN[] PROGMEM = "Calibrating Z"; -const char MSG_HOMEYZ_PROGRESS_CZ[] PROGMEM = "Kalibruji Z"; -const char MSG_HOMEYZ_PROGRESS_IT[] PROGMEM = "Calibrando Z"; -const char MSG_HOMEYZ_PROGRESS_ES[] PROGMEM = "Calibrando Z"; -const char MSG_HOMEYZ_PROGRESS_PL[] PROGMEM = "Kalibruje Z"; -const char MSG_HOMEYZ_PROGRESS_DE[] PROGMEM = "Kalibriere Z"; -const char * const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_PROGRESS_EN, - MSG_HOMEYZ_PROGRESS_CZ, - MSG_HOMEYZ_PROGRESS_IT, - MSG_HOMEYZ_PROGRESS_ES, - MSG_HOMEYZ_PROGRESS_PL, - MSG_HOMEYZ_PROGRESS_DE -}; - -const char MSG_HOTEND_OFFSET_EN[] PROGMEM = "Hotend offsets:"; -const char * const MSG_HOTEND_OFFSET_LANG_TABLE[1] PROGMEM = { - MSG_HOTEND_OFFSET_EN -}; - -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Improving bed calibration point"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Zlepsuji presnost kalibracniho bodu"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Perfezion. il letto punto di calibraz."; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Mejorando cama punto de calibracion"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Poprawiam precyzyjnosc punktu kalibracyjnego"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Verbesserung Bed Kalibrierpunkt"; -const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE -}; - -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 9"; -const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE -}; - -const char MSG_INIT_SDCARD_EN[] PROGMEM = "Init. SD card"; -const char * const MSG_INIT_SDCARD_LANG_TABLE[1] PROGMEM = { - MSG_INIT_SDCARD_EN -}; - -const char MSG_INSERT_FILAMENT_EN[] PROGMEM = "Insert filament"; -const char MSG_INSERT_FILAMENT_CZ[] PROGMEM = "Vlozte filament"; -const char MSG_INSERT_FILAMENT_IT[] PROGMEM = "Inserire filamento"; -const char MSG_INSERT_FILAMENT_ES[] PROGMEM = "Introducir filamento"; -const char MSG_INSERT_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; -const char MSG_INSERT_FILAMENT_DE[] PROGMEM = "Filament einlegen"; -const char * const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_INSERT_FILAMENT_EN, - MSG_INSERT_FILAMENT_CZ, - MSG_INSERT_FILAMENT_IT, - MSG_INSERT_FILAMENT_ES, - MSG_INSERT_FILAMENT_PL, - MSG_INSERT_FILAMENT_DE -}; - -const char MSG_INVALID_EXTRUDER_EN[] PROGMEM = "Invalid extruder"; -const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_INVALID_EXTRUDER_EN -}; - -const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; -const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; -const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; -const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; -const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_KILLED_EN, - MSG_KILLED_EN, - MSG_KILLED_IT, - MSG_KILLED_ES, - MSG_KILLED_EN, - MSG_KILLED_DE -}; - -const char MSG_LANGUAGE_NAME_EN[] PROGMEM = "English"; -const char MSG_LANGUAGE_NAME_CZ[] PROGMEM = "Cestina"; -const char MSG_LANGUAGE_NAME_IT[] PROGMEM = "Italiano"; -const char MSG_LANGUAGE_NAME_ES[] PROGMEM = "Espanol"; -const char MSG_LANGUAGE_NAME_PL[] PROGMEM = "Polski"; -const char MSG_LANGUAGE_NAME_DE[] PROGMEM = "Deutsch"; -const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_NAME_EN, - MSG_LANGUAGE_NAME_CZ, - MSG_LANGUAGE_NAME_IT, - MSG_LANGUAGE_NAME_ES, - MSG_LANGUAGE_NAME_PL, - MSG_LANGUAGE_NAME_DE -}; - -const char MSG_LANGUAGE_SELECT_EN[] PROGMEM = "Select language"; -const char MSG_LANGUAGE_SELECT_CZ[] PROGMEM = "Vyber jazyka"; -const char MSG_LANGUAGE_SELECT_IT[] PROGMEM = "Seleziona lingua"; -const char MSG_LANGUAGE_SELECT_ES[] PROGMEM = "Cambiae el idioma"; -const char MSG_LANGUAGE_SELECT_PL[] PROGMEM = "Wybor jezyka"; -const char MSG_LANGUAGE_SELECT_DE[] PROGMEM = "Waehle Sprache"; -const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_SELECT_EN, - MSG_LANGUAGE_SELECT_CZ, - MSG_LANGUAGE_SELECT_IT, - MSG_LANGUAGE_SELECT_ES, - MSG_LANGUAGE_SELECT_PL, - MSG_LANGUAGE_SELECT_DE -}; - -const char MSG_LEFT_EN[] PROGMEM = "Left:"; -const char MSG_LEFT_CZ[] PROGMEM = "Levy:"; -const char MSG_LEFT_IT[] PROGMEM = "Sinistra:"; -const char MSG_LEFT_ES[] PROGMEM = "Izquierda:"; -const char MSG_LEFT_PL[] PROGMEM = "Lewy:"; -const char MSG_LEFT_DE[] PROGMEM = "Links:"; -const char * const MSG_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LEFT_EN, - MSG_LEFT_CZ, - MSG_LEFT_IT, - MSG_LEFT_ES, - MSG_LEFT_PL, - MSG_LEFT_DE -}; - -const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; -const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; -const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore"; -const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cambiando color"; -const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; -const char MSG_LOADING_COLOR_DE[] PROGMEM = "Lade Farbe"; -const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_COLOR_EN, - MSG_LOADING_COLOR_CZ, - MSG_LOADING_COLOR_IT, - MSG_LOADING_COLOR_ES, - MSG_LOADING_COLOR_PL, - MSG_LOADING_COLOR_DE -}; - -const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; -const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; -const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; -const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; -const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; -const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament leadt"; -const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_FILAMENT_EN, - MSG_LOADING_FILAMENT_CZ, - MSG_LOADING_FILAMENT_IT, - MSG_LOADING_FILAMENT_ES, - MSG_LOADING_FILAMENT_PL, - MSG_LOADING_FILAMENT_DE -}; - -const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; -const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; -const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; -const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; -const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; -const char MSG_LOAD_ALL_DE[] PROGMEM = "Alle laden"; -const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_ALL_EN, - MSG_LOAD_ALL_CZ, - MSG_LOAD_ALL_IT, - MSG_LOAD_ALL_ES, - MSG_LOAD_ALL_PL, - MSG_LOAD_ALL_DE -}; - -const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; -const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { - MSG_LOAD_EPROM_EN -}; - -const char MSG_LOAD_FILAMENT_EN[] PROGMEM = "Load filament"; -const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; -const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; -const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; -const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; -const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; -const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_EN, - MSG_LOAD_FILAMENT_CZ, - MSG_LOAD_FILAMENT_IT, - MSG_LOAD_FILAMENT_ES, - MSG_LOAD_FILAMENT_PL, - MSG_LOAD_FILAMENT_DE -}; - -const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; -const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; -const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; -const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; -const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; -const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Filament 1 laden"; -const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_1_EN, - MSG_LOAD_FILAMENT_1_CZ, - MSG_LOAD_FILAMENT_1_IT, - MSG_LOAD_FILAMENT_1_ES, - MSG_LOAD_FILAMENT_1_PL, - MSG_LOAD_FILAMENT_1_DE -}; - -const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; -const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; -const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; -const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; -const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; -const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Filament 2 laden"; -const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_2_EN, - MSG_LOAD_FILAMENT_2_CZ, - MSG_LOAD_FILAMENT_2_IT, - MSG_LOAD_FILAMENT_2_ES, - MSG_LOAD_FILAMENT_2_PL, - MSG_LOAD_FILAMENT_2_DE -}; - -const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; -const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; -const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; -const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; -const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; -const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Filament 3 laden"; -const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_3_EN, - MSG_LOAD_FILAMENT_3_CZ, - MSG_LOAD_FILAMENT_3_IT, - MSG_LOAD_FILAMENT_3_ES, - MSG_LOAD_FILAMENT_3_PL, - MSG_LOAD_FILAMENT_3_DE -}; - -const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; -const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; -const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; -const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; -const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; -const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Filament 4 laden"; -const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_4_EN, - MSG_LOAD_FILAMENT_4_CZ, - MSG_LOAD_FILAMENT_4_IT, - MSG_LOAD_FILAMENT_4_ES, - MSG_LOAD_FILAMENT_4_PL, - MSG_LOAD_FILAMENT_4_DE -}; - -const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; -const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka"; -const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta"; -const char MSG_LOOSE_PULLEY_ES[] PROGMEM = "Polea suelta"; -const char MSG_LOOSE_PULLEY_PL[] PROGMEM = "Kolo pasowe"; -const char MSG_LOOSE_PULLEY_DE[] PROGMEM = "Lose Riemenscheibe"; -const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOOSE_PULLEY_EN, - MSG_LOOSE_PULLEY_CZ, - MSG_LOOSE_PULLEY_IT, - MSG_LOOSE_PULLEY_ES, - MSG_LOOSE_PULLEY_PL, - MSG_LOOSE_PULLEY_DE -}; - -const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder "; -const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M104_INVALID_EXTRUDER_EN -}; - -const char MSG_M105_INVALID_EXTRUDER_EN[] PROGMEM = "M105 Invalid extruder "; -const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M105_INVALID_EXTRUDER_EN -}; - -const char MSG_M109_INVALID_EXTRUDER_EN[] PROGMEM = "M109 Invalid extruder "; -const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M109_INVALID_EXTRUDER_EN -}; - -const char MSG_M115_REPORT_EN[] PROGMEM = "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/prusa3d/Prusa-i3-Plus/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000\n"; -const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { - MSG_M115_REPORT_EN -}; - -const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; -const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { - MSG_M119_REPORT_EN -}; - -const char MSG_M200_INVALID_EXTRUDER_EN[] PROGMEM = "M200 Invalid extruder "; -const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M200_INVALID_EXTRUDER_EN -}; - -const char MSG_M218_INVALID_EXTRUDER_EN[] PROGMEM = "M218 Invalid extruder "; -const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M218_INVALID_EXTRUDER_EN -}; - -const char MSG_M221_INVALID_EXTRUDER_EN[] PROGMEM = "M221 Invalid extruder "; -const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M221_INVALID_EXTRUDER_EN -}; - -const char MSG_MAIN_EN[] PROGMEM = "Main"; -const char MSG_MAIN_CZ[] PROGMEM = "Hlavni nabidka"; -const char MSG_MAIN_IT[] PROGMEM = "Menu principale"; -const char MSG_MAIN_ES[] PROGMEM = "Menu principal"; -const char MSG_MAIN_PL[] PROGMEM = "Menu glowne"; -const char MSG_MAIN_DE[] PROGMEM = "Hauptmenue"; -const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MAIN_EN, - MSG_MAIN_CZ, - MSG_MAIN_IT, - MSG_MAIN_ES, - MSG_MAIN_PL, - MSG_MAIN_DE -}; - -const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; -const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."; -const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; -const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; -const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; -const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MARK_FIL_EN, - MSG_MARK_FIL_CZ, - MSG_MARK_FIL_IT, - MSG_MARK_FIL_ES, - MSG_MARK_FIL_PL, - MSG_MARK_FIL_DE -}; - -const char MSG_MAX_EN[] PROGMEM = " \002 Max"; -const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { - MSG_MAX_EN -}; - -const char MSG_MEASURED_SKEW_EN[] PROGMEM = "Measured skew:"; -const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:"; -const char MSG_MEASURED_SKEW_IT[] PROGMEM = "Incl. misurata:"; -const char MSG_MEASURED_SKEW_ES[] PROGMEM = "Inclin. medida:"; -const char MSG_MEASURED_SKEW_PL[] PROGMEM = "Zmier. sciecie:"; -const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Schraeglauf:"; -const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURED_SKEW_EN, - MSG_MEASURED_SKEW_CZ, - MSG_MEASURED_SKEW_IT, - MSG_MEASURED_SKEW_ES, - MSG_MEASURED_SKEW_PL, - MSG_MEASURED_SKEW_DE -}; - -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN[] PROGMEM = "Measuring reference height of calibration point"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ[] PROGMEM = "Merim referencni vysku kalibracniho bodu"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT[] PROGMEM = "Misurare l'altezza di riferimento del punto di calibrazione"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES[] PROGMEM = "Medir la altura del punto de la calibracion"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL[] PROGMEM = "Okreslam wysokosc odniesienia punktu kalibracyjnego"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE[] PROGMEM = "Messen der Referenzhoehe des Kalibrierpunktes"; -const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE -}; - -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN[] PROGMEM = " of 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ[] PROGMEM = " z 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT[] PROGMEM = " su 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES[] PROGMEM = " de 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL[] PROGMEM = " z 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE[] PROGMEM = " von 9"; -const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE -}; - -const char MSG_MENU_CALIBRATION_EN[] PROGMEM = "Calibration"; -const char MSG_MENU_CALIBRATION_CZ[] PROGMEM = "Kalibrace"; -const char MSG_MENU_CALIBRATION_IT[] PROGMEM = "Calibrazione"; -const char MSG_MENU_CALIBRATION_ES[] PROGMEM = "Calibracion"; -const char MSG_MENU_CALIBRATION_PL[] PROGMEM = "Kalibracja"; -const char MSG_MENU_CALIBRATION_DE[] PROGMEM = "Kalibrierung"; -const char * const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MENU_CALIBRATION_EN, - MSG_MENU_CALIBRATION_CZ, - MSG_MENU_CALIBRATION_IT, - MSG_MENU_CALIBRATION_ES, - MSG_MENU_CALIBRATION_PL, - MSG_MENU_CALIBRATION_DE -}; - -const char MSG_MESH_BED_LEVELING_EN[] PROGMEM = "Mesh Bed Leveling"; -const char MSG_MESH_BED_LEVELING_IT[] PROGMEM = "Mesh livel. letto"; -const char * const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_IT, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN -}; - -const char MSG_MIN_EN[] PROGMEM = " \002 Min"; -const char * const MSG_MIN_LANG_TABLE[1] PROGMEM = { - MSG_MIN_EN -}; - -const char MSG_MOTION_EN[] PROGMEM = "Motion"; -const char * const MSG_MOTION_LANG_TABLE[1] PROGMEM = { - MSG_MOTION_EN -}; - -const char MSG_MOVE_01MM_EN[] PROGMEM = "Move 0.1mm"; -const char * const MSG_MOVE_01MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_01MM_EN -}; - -const char MSG_MOVE_10MM_EN[] PROGMEM = "Move 10mm"; -const char * const MSG_MOVE_10MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_10MM_EN -}; - -const char MSG_MOVE_1MM_EN[] PROGMEM = "Move 1mm"; -const char * const MSG_MOVE_1MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_1MM_EN -}; - -const char MSG_MOVE_AXIS_EN[] PROGMEM = "Move axis"; -const char MSG_MOVE_AXIS_CZ[] PROGMEM = "Posunout osu"; -const char MSG_MOVE_AXIS_IT[] PROGMEM = "Muovi asse"; -const char MSG_MOVE_AXIS_ES[] PROGMEM = "Mover ejes"; -const char MSG_MOVE_AXIS_PL[] PROGMEM = "Ruch osi"; -const char MSG_MOVE_AXIS_DE[] PROGMEM = "Achsbewegung"; -const char * const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_AXIS_EN, - MSG_MOVE_AXIS_CZ, - MSG_MOVE_AXIS_IT, - MSG_MOVE_AXIS_ES, - MSG_MOVE_AXIS_PL, - MSG_MOVE_AXIS_DE -}; - -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_EN[] PROGMEM = "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben."; -const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, - MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ, - MSG_MOVE_CARRIAGE_TO_THE_TOP_IT, - MSG_MOVE_CARRIAGE_TO_THE_TOP_ES, - MSG_MOVE_CARRIAGE_TO_THE_TOP_PL, - MSG_MOVE_CARRIAGE_TO_THE_TOP_DE -}; - -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN[] PROGMEM = "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben."; -const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE -}; - -const char MSG_MOVE_E_EN[] PROGMEM = "Extruder"; -const char MSG_MOVE_E_IT[] PROGMEM = "Muovi Estrusore"; -const char MSG_MOVE_E_ES[] PROGMEM = "Extruir"; -const char * const MSG_MOVE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_E_EN, - MSG_MOVE_E_EN, - MSG_MOVE_E_IT, - MSG_MOVE_E_ES, - MSG_MOVE_E_EN, - MSG_MOVE_E_EN -}; - -const char MSG_MOVE_X_EN[] PROGMEM = "Move X"; -const char MSG_MOVE_X_CZ[] PROGMEM = "Posunout X"; -const char MSG_MOVE_X_IT[] PROGMEM = "Muovi X"; -const char MSG_MOVE_X_ES[] PROGMEM = "Mover X"; -const char MSG_MOVE_X_PL[] PROGMEM = "Przesunac X"; -const char MSG_MOVE_X_DE[] PROGMEM = "Bewege X"; -const char * const MSG_MOVE_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_X_EN, - MSG_MOVE_X_CZ, - MSG_MOVE_X_IT, - MSG_MOVE_X_ES, - MSG_MOVE_X_PL, - MSG_MOVE_X_DE -}; - -const char MSG_MOVE_Y_EN[] PROGMEM = "Move Y"; -const char MSG_MOVE_Y_CZ[] PROGMEM = "Posunout Y"; -const char MSG_MOVE_Y_IT[] PROGMEM = "Muovi Y"; -const char MSG_MOVE_Y_ES[] PROGMEM = "Mover Y"; -const char MSG_MOVE_Y_PL[] PROGMEM = "Przesunac Y"; -const char MSG_MOVE_Y_DE[] PROGMEM = "Bewege Y"; -const char * const MSG_MOVE_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Y_EN, - MSG_MOVE_Y_CZ, - MSG_MOVE_Y_IT, - MSG_MOVE_Y_ES, - MSG_MOVE_Y_PL, - MSG_MOVE_Y_DE -}; - -const char MSG_MOVE_Z_EN[] PROGMEM = "Move Z"; -const char MSG_MOVE_Z_CZ[] PROGMEM = "Posunout Z"; -const char MSG_MOVE_Z_IT[] PROGMEM = "Muovi Z"; -const char MSG_MOVE_Z_ES[] PROGMEM = "Mover Z"; -const char MSG_MOVE_Z_PL[] PROGMEM = "Przesunac Z"; -const char MSG_MOVE_Z_DE[] PROGMEM = "Bewege Z"; -const char * const MSG_MOVE_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Z_EN, - MSG_MOVE_Z_CZ, - MSG_MOVE_Z_IT, - MSG_MOVE_Z_ES, - MSG_MOVE_Z_PL, - MSG_MOVE_Z_DE -}; - -const char MSG_NEW_FIRMWARE_AVAILABLE_EN[] PROGMEM = "New firmware version available:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_CZ[] PROGMEM = "Vysla nova verze firmware:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_IT[] PROGMEM = "Nuova versione del firmware disponibile"; -const char MSG_NEW_FIRMWARE_AVAILABLE_ES[] PROGMEM = "Nuevo firmware disponible:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_PL[] PROGMEM = "Wyszla nowa wersja firmware:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_DE[] PROGMEM = "Neue Firmware Version verfuegbar:"; -const char * const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_AVAILABLE_EN, - MSG_NEW_FIRMWARE_AVAILABLE_CZ, - MSG_NEW_FIRMWARE_AVAILABLE_IT, - MSG_NEW_FIRMWARE_AVAILABLE_ES, - MSG_NEW_FIRMWARE_AVAILABLE_PL, - MSG_NEW_FIRMWARE_AVAILABLE_DE -}; - -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN[] PROGMEM = "Please upgrade."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ[] PROGMEM = "Prosim aktualizujte."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT[] PROGMEM = "Prega aggiorna."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES[] PROGMEM = "Actualizar por favor"; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL[] PROGMEM = "Prosze zaktualizowac"; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE[] PROGMEM = "Bitte aktualisieren."; -const char * const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE -}; - -const char MSG_NO_EN[] PROGMEM = "No"; -const char MSG_NO_CZ[] PROGMEM = "Ne"; -const char MSG_NO_PL[] PROGMEM = "Nie"; -const char MSG_NO_DE[] PROGMEM = "Nein"; -const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_EN, - MSG_NO_CZ, - MSG_NO_EN, - MSG_NO_EN, - MSG_NO_PL, - MSG_NO_DE -}; - -const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; -const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; -const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro"; -const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no homogeneo"; -const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; -const char MSG_NOT_COLOR_DE[] PROGMEM = "Farbe unklar"; -const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_COLOR_EN, - MSG_NOT_COLOR_CZ, - MSG_NOT_COLOR_IT, - MSG_NOT_COLOR_ES, - MSG_NOT_COLOR_PL, - MSG_NOT_COLOR_DE -}; - -const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; -const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; -const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato"; -const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no introducido"; -const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; -const char MSG_NOT_LOADED_DE[] PROGMEM = "Fil. nicht geladen"; -const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_LOADED_EN, - MSG_NOT_LOADED_CZ, - MSG_NOT_LOADED_IT, - MSG_NOT_LOADED_ES, - MSG_NOT_LOADED_PL, - MSG_NOT_LOADED_DE -}; - -const char MSG_NOZZLE_EN[] PROGMEM = "Nozzle"; -const char MSG_NOZZLE_CZ[] PROGMEM = "Tryska"; -const char MSG_NOZZLE_IT[] PROGMEM = "Ugello"; -const char MSG_NOZZLE_ES[] PROGMEM = "Boquilla"; -const char MSG_NOZZLE_PL[] PROGMEM = "Dysza"; -const char MSG_NOZZLE_DE[] PROGMEM = "Duese"; -const char * const MSG_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOZZLE_EN, - MSG_NOZZLE_CZ, - MSG_NOZZLE_IT, - MSG_NOZZLE_ES, - MSG_NOZZLE_PL, - MSG_NOZZLE_DE -}; - -const char MSG_NOZZLE1_EN[] PROGMEM = "Nozzle2"; -const char * const MSG_NOZZLE1_LANG_TABLE[1] PROGMEM = { - MSG_NOZZLE1_EN -}; - -const char MSG_NOZZLE2_EN[] PROGMEM = "Nozzle3"; -const char * const MSG_NOZZLE2_LANG_TABLE[1] PROGMEM = { - MSG_NOZZLE2_EN -}; - -const char MSG_NO_CARD_EN[] PROGMEM = "No SD card"; -const char MSG_NO_CARD_CZ[] PROGMEM = "Zadna SD karta"; -const char MSG_NO_CARD_IT[] PROGMEM = "Nessuna SD"; -const char MSG_NO_CARD_ES[] PROGMEM = "No hay tarjeta SD"; -const char MSG_NO_CARD_PL[] PROGMEM = "Brak karty SD"; -const char MSG_NO_CARD_DE[] PROGMEM = "Keine SD Karte"; -const char * const MSG_NO_CARD_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_CARD_EN, - MSG_NO_CARD_CZ, - MSG_NO_CARD_IT, - MSG_NO_CARD_ES, - MSG_NO_CARD_PL, - MSG_NO_CARD_DE -}; - -const char MSG_NO_MOVE_EN[] PROGMEM = "No move."; -const char MSG_NO_MOVE_IT[] PROGMEM = "Nessun movimento."; -const char MSG_NO_MOVE_ES[] PROGMEM = "Sin movimiento"; -const char MSG_NO_MOVE_DE[] PROGMEM = "Keine Bewegung."; -const char * const MSG_NO_MOVE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_MOVE_EN, - MSG_NO_MOVE_EN, - MSG_NO_MOVE_IT, - MSG_NO_MOVE_ES, - MSG_NO_MOVE_EN, - MSG_NO_MOVE_DE -}; - -const char MSG_OFF_EN[] PROGMEM = "Off"; -const char * const MSG_OFF_LANG_TABLE[1] PROGMEM = { - MSG_OFF_EN -}; - -const char MSG_OK_EN[] PROGMEM = "ok"; -const char * const MSG_OK_LANG_TABLE[1] PROGMEM = { - MSG_OK_EN -}; - -const char MSG_ON_EN[] PROGMEM = "On "; -const char * const MSG_ON_LANG_TABLE[1] PROGMEM = { - MSG_ON_EN -}; - -const char MSG_PAPER_EN[] PROGMEM = "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."; -const char MSG_PAPER_CZ[] PROGMEM = "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."; -const char MSG_PAPER_IT[] PROGMEM = "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."; -const char MSG_PAPER_ES[] PROGMEM = "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."; -const char MSG_PAPER_PL[] PROGMEM = "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."; -const char MSG_PAPER_DE[] PROGMEM = "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten"; -const char * const MSG_PAPER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAPER_EN, - MSG_PAPER_CZ, - MSG_PAPER_IT, - MSG_PAPER_ES, - MSG_PAPER_PL, - MSG_PAPER_DE -}; - -const char MSG_PAUSE_PRINT_EN[] PROGMEM = "Pause print"; -const char MSG_PAUSE_PRINT_CZ[] PROGMEM = "Pozastavit tisk"; -const char MSG_PAUSE_PRINT_IT[] PROGMEM = "Metti in pausa"; -const char MSG_PAUSE_PRINT_ES[] PROGMEM = "Pausar impresion"; -const char MSG_PAUSE_PRINT_PL[] PROGMEM = "Przerwac druk"; -const char MSG_PAUSE_PRINT_DE[] PROGMEM = "Druck unterbrech."; -const char * const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAUSE_PRINT_EN, - MSG_PAUSE_PRINT_CZ, - MSG_PAUSE_PRINT_IT, - MSG_PAUSE_PRINT_ES, - MSG_PAUSE_PRINT_PL, - MSG_PAUSE_PRINT_DE -}; - -const char MSG_PICK_Z_EN[] PROGMEM = "Pick print"; -const char MSG_PICK_Z_CZ[] PROGMEM = "Vyberte vytisk"; -const char MSG_PICK_Z_ES[] PROGMEM = "Esc. Modelo Adecuado"; -const char MSG_PICK_Z_PL[] PROGMEM = "Vyberte vytisk"; -const char MSG_PICK_Z_DE[] PROGMEM = "Waehle Abdruck"; -const char * const MSG_PICK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PICK_Z_EN, - MSG_PICK_Z_CZ, - MSG_PICK_Z_EN, - MSG_PICK_Z_ES, - MSG_PICK_Z_PL, - MSG_PICK_Z_DE -}; - -const char MSG_PID_EXTRUDER_EN[] PROGMEM = "PID calibration"; -const char MSG_PID_EXTRUDER_CZ[] PROGMEM = "PID kalibrace"; -const char MSG_PID_EXTRUDER_IT[] PROGMEM = "Calibrazione PID"; -const char MSG_PID_EXTRUDER_ES[] PROGMEM = "Calibracion PID"; -const char MSG_PID_EXTRUDER_PL[] PROGMEM = "Kalibracja PID"; -const char MSG_PID_EXTRUDER_DE[] PROGMEM = "PID Kalibrierung"; -const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_EXTRUDER_EN, - MSG_PID_EXTRUDER_CZ, - MSG_PID_EXTRUDER_IT, - MSG_PID_EXTRUDER_ES, - MSG_PID_EXTRUDER_PL, - MSG_PID_EXTRUDER_DE -}; - -const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished"; -const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; -const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; -const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; -const char MSG_PID_FINISHED_PL[] PROGMEM = "Kal. PID zakonczona"; -const char MSG_PID_FINISHED_DE[] PROGMEM = "PID Kalib. fertig"; -const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_FINISHED_EN, - MSG_PID_FINISHED_CZ, - MSG_PID_FINISHED_IT, - MSG_PID_FINISHED_ES, - MSG_PID_FINISHED_PL, - MSG_PID_FINISHED_DE -}; - -const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; -const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; -const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; -const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; -const char MSG_PID_RUNNING_PL[] PROGMEM = "Kal. PID"; -const char MSG_PID_RUNNING_DE[] PROGMEM = "PID Kalib."; -const char * const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_RUNNING_EN, - MSG_PID_RUNNING_CZ, - MSG_PID_RUNNING_IT, - MSG_PID_RUNNING_ES, - MSG_PID_RUNNING_PL, - MSG_PID_RUNNING_DE -}; - -const char MSG_PINDA_NOT_CALIBRATED_EN[] PROGMEM = "Temperature calibration has not been run yet"; -const char MSG_PINDA_NOT_CALIBRATED_CZ[] PROGMEM = "Tiskarna nebyla teplotne zkalibrovana"; -const char MSG_PINDA_NOT_CALIBRATED_IT[] PROGMEM = "Taratura della temperatura non ancora eseguita"; -const char MSG_PINDA_NOT_CALIBRATED_ES[] PROGMEM = "La temperatura de calibracion no ha sido ajustada"; -const char MSG_PINDA_NOT_CALIBRATED_PL[] PROGMEM = "Cieplna kalibracja nie byla przeprowadzona"; -const char MSG_PINDA_NOT_CALIBRATED_DE[] PROGMEM = "Temperatur wurde nicht kalibriert"; -const char * const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_NOT_CALIBRATED_EN, - MSG_PINDA_NOT_CALIBRATED_CZ, - MSG_PINDA_NOT_CALIBRATED_IT, - MSG_PINDA_NOT_CALIBRATED_ES, - MSG_PINDA_NOT_CALIBRATED_PL, - MSG_PINDA_NOT_CALIBRATED_DE -}; - -const char MSG_PINDA_PREHEAT_EN[] PROGMEM = "PINDA Heating"; -const char MSG_PINDA_PREHEAT_CZ[] PROGMEM = "Nahrivani PINDA"; -const char MSG_PINDA_PREHEAT_IT[] PROGMEM = "Riscald. PINDA"; -const char MSG_PINDA_PREHEAT_ES[] PROGMEM = "Calentando PINDA"; -const char MSG_PINDA_PREHEAT_PL[] PROGMEM = "Grzanie PINDA"; -const char MSG_PINDA_PREHEAT_DE[] PROGMEM = "PINDA erwaermen"; -const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_PREHEAT_EN, - MSG_PINDA_PREHEAT_CZ, - MSG_PINDA_PREHEAT_IT, - MSG_PINDA_PREHEAT_ES, - MSG_PINDA_PREHEAT_PL, - MSG_PINDA_PREHEAT_DE -}; - -const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; -const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { - MSG_PLANNER_BUFFER_BYTES_EN -}; - -const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; -const char MSG_PLEASE_WAIT_CZ[] PROGMEM = "Prosim cekejte"; -const char MSG_PLEASE_WAIT_IT[] PROGMEM = "Aspetta"; -const char MSG_PLEASE_WAIT_ES[] PROGMEM = "Por Favor Esperar"; -const char MSG_PLEASE_WAIT_PL[] PROGMEM = "Prosze czekac"; -const char MSG_PLEASE_WAIT_DE[] PROGMEM = "Bitte warten"; -const char * const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PLEASE_WAIT_EN, - MSG_PLEASE_WAIT_CZ, - MSG_PLEASE_WAIT_IT, - MSG_PLEASE_WAIT_ES, - MSG_PLEASE_WAIT_PL, - MSG_PLEASE_WAIT_DE -}; - -const char MSG_POSITION_UNKNOWN_EN[] PROGMEM = "Home X/Y before Z"; -const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[1] PROGMEM = { - MSG_POSITION_UNKNOWN_EN -}; - -const char MSG_POWERUP_EN[] PROGMEM = "PowerUp"; -const char * const MSG_POWERUP_LANG_TABLE[1] PROGMEM = { - MSG_POWERUP_EN -}; - -const char MSG_PREHEAT_EN[] PROGMEM = "Preheat"; -const char MSG_PREHEAT_CZ[] PROGMEM = "Predehrev"; -const char MSG_PREHEAT_IT[] PROGMEM = "Preriscalda"; -const char MSG_PREHEAT_ES[] PROGMEM = "Precalentar"; -const char MSG_PREHEAT_PL[] PROGMEM = "Grzanie"; -const char MSG_PREHEAT_DE[] PROGMEM = "Vorwaermen"; -const char * const MSG_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_EN, - MSG_PREHEAT_CZ, - MSG_PREHEAT_IT, - MSG_PREHEAT_ES, - MSG_PREHEAT_PL, - MSG_PREHEAT_DE -}; - -const char MSG_PREHEAT_NOZZLE_EN[] PROGMEM = "Preheat the nozzle!"; -const char MSG_PREHEAT_NOZZLE_CZ[] PROGMEM = "Predehrejte trysku!"; -const char MSG_PREHEAT_NOZZLE_IT[] PROGMEM = "Preris. ugello!"; -const char MSG_PREHEAT_NOZZLE_ES[] PROGMEM = "Precalentar extrusor"; -const char MSG_PREHEAT_NOZZLE_PL[] PROGMEM = "Nagrzej dysze!"; -const char MSG_PREHEAT_NOZZLE_DE[] PROGMEM = "Duese Vorwaermen"; -const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_NOZZLE_EN, - MSG_PREHEAT_NOZZLE_CZ, - MSG_PREHEAT_NOZZLE_IT, - MSG_PREHEAT_NOZZLE_ES, - MSG_PREHEAT_NOZZLE_PL, - MSG_PREHEAT_NOZZLE_DE -}; - -const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; -const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; -const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; -const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; -const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; -const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filam. bereithalten"; -const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREPARE_FILAMENT_EN, - MSG_PREPARE_FILAMENT_CZ, - MSG_PREPARE_FILAMENT_IT, - MSG_PREPARE_FILAMENT_ES, - MSG_PREPARE_FILAMENT_PL, - MSG_PREPARE_FILAMENT_DE -}; - -const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; -const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; -const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; -const char MSG_PRESS_ES[] PROGMEM = "Pulsar el mando"; -const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; -const char MSG_PRESS_DE[] PROGMEM = "und Knopf druecken"; -const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRESS_EN, - MSG_PRESS_CZ, - MSG_PRESS_IT, - MSG_PRESS_ES, - MSG_PRESS_PL, - MSG_PRESS_DE -}; - -const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; -const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1] PROGMEM = { - MSG_PRINTER_DISCONNECTED_EN -}; - -const char MSG_PRINT_ABORTED_EN[] PROGMEM = "Print aborted"; -const char MSG_PRINT_ABORTED_CZ[] PROGMEM = "Tisk prerusen"; -const char MSG_PRINT_ABORTED_IT[] PROGMEM = "Stampa abortita"; -const char MSG_PRINT_ABORTED_ES[] PROGMEM = "Impresion cancelada"; -const char MSG_PRINT_ABORTED_PL[] PROGMEM = "Druk przerwany"; -const char MSG_PRINT_ABORTED_DE[] PROGMEM = "Druck abgebrochen"; -const char * const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_ABORTED_EN, - MSG_PRINT_ABORTED_CZ, - MSG_PRINT_ABORTED_IT, - MSG_PRINT_ABORTED_ES, - MSG_PRINT_ABORTED_PL, - MSG_PRINT_ABORTED_DE -}; - -const char MSG_PRINT_PAUSED_EN[] PROGMEM = "Print paused"; -const char MSG_PRINT_PAUSED_CZ[] PROGMEM = "Tisk pozastaven"; -const char MSG_PRINT_PAUSED_IT[] PROGMEM = "Stampa in pausa"; -const char MSG_PRINT_PAUSED_ES[] PROGMEM = "Impresion en pausa"; -const char MSG_PRINT_PAUSED_PL[] PROGMEM = "Druk zatrzymany"; -const char MSG_PRINT_PAUSED_DE[] PROGMEM = "Druck pausiert"; -const char * const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_PAUSED_EN, - MSG_PRINT_PAUSED_CZ, - MSG_PRINT_PAUSED_IT, - MSG_PRINT_PAUSED_ES, - MSG_PRINT_PAUSED_PL, - MSG_PRINT_PAUSED_DE -}; - -const char MSG_PRUSA3D_EN[] PROGMEM = "prusa3d.com"; -const char MSG_PRUSA3D_CZ[] PROGMEM = "prusa3d.cz"; -const char MSG_PRUSA3D_PL[] PROGMEM = "prusa3d.cz"; -const char * const MSG_PRUSA3D_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_EN, - MSG_PRUSA3D_CZ, - MSG_PRUSA3D_EN, - MSG_PRUSA3D_EN, - MSG_PRUSA3D_PL, - MSG_PRUSA3D_EN -}; - -const char MSG_PRUSA3D_FORUM_EN[] PROGMEM = "forum.prusa3d.com"; -const char MSG_PRUSA3D_FORUM_CZ[] PROGMEM = "forum.prusa3d.cz"; -const char MSG_PRUSA3D_FORUM_PL[] PROGMEM = "forum.prusa3d.cz"; -const char * const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_CZ, - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_PL, - MSG_PRUSA3D_FORUM_EN -}; - -const char MSG_PRUSA3D_HOWTO_EN[] PROGMEM = "howto.prusa3d.com"; -const char MSG_PRUSA3D_HOWTO_CZ[] PROGMEM = "howto.prusa3d.cz"; -const char MSG_PRUSA3D_HOWTO_PL[] PROGMEM = "howto.prusa3d.cz"; -const char * const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_CZ, - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_PL, - MSG_PRUSA3D_HOWTO_EN -}; - -const char MSG_REBOOT_EN[] PROGMEM = "Reboot the printer"; -const char MSG_REBOOT_CZ[] PROGMEM = "Restartujte tiskarnu"; -const char MSG_REBOOT_IT[] PROGMEM = "Riavvia stampante"; -const char MSG_REBOOT_ES[] PROGMEM = "Reiniciar impresora"; -const char MSG_REBOOT_PL[] PROGMEM = "Restart drukarki"; -const char MSG_REBOOT_DE[] PROGMEM = "Zum Uebernehmen "; -const char * const MSG_REBOOT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_REBOOT_EN, - MSG_REBOOT_CZ, - MSG_REBOOT_IT, - MSG_REBOOT_ES, - MSG_REBOOT_PL, - MSG_REBOOT_DE -}; - -const char MSG_RECTRACT_EN[] PROGMEM = "Rectract"; -const char * const MSG_RECTRACT_LANG_TABLE[1] PROGMEM = { - MSG_RECTRACT_EN -}; - -const char MSG_REFRESH_EN[] PROGMEM = "\xF8" "Refresh"; -const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { - MSG_REFRESH_EN -}; - -const char MSG_RESEND_EN[] PROGMEM = "Resend: "; -const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { - MSG_RESEND_EN -}; - -const char MSG_RESET_CALIBRATE_E_EN[] PROGMEM = "Reset E Cal."; -const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[1] PROGMEM = { - MSG_RESET_CALIBRATE_E_EN -}; - -const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; -const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { - MSG_RESTORE_FAILSAFE_EN -}; - -const char MSG_RESUME_PRINT_EN[] PROGMEM = "Resume print"; -const char MSG_RESUME_PRINT_CZ[] PROGMEM = "Pokracovat"; -const char MSG_RESUME_PRINT_IT[] PROGMEM = "Riprendi stampa"; -const char MSG_RESUME_PRINT_ES[] PROGMEM = "Reanudar impres."; -const char MSG_RESUME_PRINT_PL[] PROGMEM = "Kontynuowac"; -const char MSG_RESUME_PRINT_DE[] PROGMEM = "Fortsetzen"; -const char * const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUME_PRINT_EN, - MSG_RESUME_PRINT_CZ, - MSG_RESUME_PRINT_IT, - MSG_RESUME_PRINT_ES, - MSG_RESUME_PRINT_PL, - MSG_RESUME_PRINT_DE -}; - -const char MSG_RESUMING_EN[] PROGMEM = "Resuming print"; -const char MSG_RESUMING_CZ[] PROGMEM = "Obnoveni tisku"; -const char MSG_RESUMING_IT[] PROGMEM = "Riprendi stampa"; -const char MSG_RESUMING_ES[] PROGMEM = "Resumiendo impresion"; -const char MSG_RESUMING_PL[] PROGMEM = "Wznowienie druku"; -const char MSG_RESUMING_DE[] PROGMEM = "Druck fortgesetzt"; -const char * const MSG_RESUMING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_EN, - MSG_RESUMING_CZ, - MSG_RESUMING_IT, - MSG_RESUMING_ES, - MSG_RESUMING_PL, - MSG_RESUMING_DE -}; - -const char MSG_RESUMING_PRINT_EN[] PROGMEM = "Resuming print"; -const char MSG_RESUMING_PRINT_CZ[] PROGMEM = "Obnovovani tisku"; -const char MSG_RESUMING_PRINT_IT[] PROGMEM = "Stampa in ripresa"; -const char MSG_RESUMING_PRINT_ES[] PROGMEM = "Reanudar impresion"; -const char MSG_RESUMING_PRINT_PL[] PROGMEM = "Wznawianie druku"; -const char MSG_RESUMING_PRINT_DE[] PROGMEM = "Druck weitergehen"; -const char * const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_PRINT_EN, - MSG_RESUMING_PRINT_CZ, - MSG_RESUMING_PRINT_IT, - MSG_RESUMING_PRINT_ES, - MSG_RESUMING_PRINT_PL, - MSG_RESUMING_PRINT_DE -}; - -const char MSG_RIGHT_EN[] PROGMEM = "Right:"; -const char MSG_RIGHT_CZ[] PROGMEM = "Pravy:"; -const char MSG_RIGHT_IT[] PROGMEM = "Destra:"; -const char MSG_RIGHT_ES[] PROGMEM = "Derecha:"; -const char MSG_RIGHT_PL[] PROGMEM = "Prawy:"; -const char MSG_RIGHT_DE[] PROGMEM = "Rechts:"; -const char * const MSG_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RIGHT_EN, - MSG_RIGHT_CZ, - MSG_RIGHT_IT, - MSG_RIGHT_ES, - MSG_RIGHT_PL, - MSG_RIGHT_DE -}; - -const char MSG_SD_CANT_ENTER_SUBDIR_EN[] PROGMEM = "Cannot enter subdir: "; -const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1] PROGMEM = { - MSG_SD_CANT_ENTER_SUBDIR_EN -}; - -const char MSG_SD_CANT_OPEN_SUBDIR_EN[] PROGMEM = "Cannot open subdir"; -const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1] PROGMEM = { - MSG_SD_CANT_OPEN_SUBDIR_EN -}; - -const char MSG_SD_CARD_OK_EN[] PROGMEM = "SD card ok"; -const char * const MSG_SD_CARD_OK_LANG_TABLE[1] PROGMEM = { - MSG_SD_CARD_OK_EN -}; - -const char MSG_SD_ERR_WRITE_TO_FILE_EN[] PROGMEM = "error writing to file"; -const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { - MSG_SD_ERR_WRITE_TO_FILE_EN -}; - -const char MSG_SD_FILE_OPENED_EN[] PROGMEM = "File opened: "; -const char * const MSG_SD_FILE_OPENED_LANG_TABLE[1] PROGMEM = { - MSG_SD_FILE_OPENED_EN -}; - -const char MSG_SD_FILE_SELECTED_EN[] PROGMEM = "File selected"; -const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[1] PROGMEM = { - MSG_SD_FILE_SELECTED_EN -}; - -const char MSG_SD_INIT_FAIL_EN[] PROGMEM = "SD init fail"; -const char * const MSG_SD_INIT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_INIT_FAIL_EN -}; - -const char MSG_SD_INSERTED_EN[] PROGMEM = "Card inserted"; -const char MSG_SD_INSERTED_CZ[] PROGMEM = "Karta vlozena"; -const char MSG_SD_INSERTED_IT[] PROGMEM = "SD inserita"; -const char MSG_SD_INSERTED_ES[] PROGMEM = "Tarjeta insertada"; -const char MSG_SD_INSERTED_PL[] PROGMEM = "Karta wlozona"; -const char MSG_SD_INSERTED_DE[] PROGMEM = "SD eingesetzt"; -const char * const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_INSERTED_EN, - MSG_SD_INSERTED_CZ, - MSG_SD_INSERTED_IT, - MSG_SD_INSERTED_ES, - MSG_SD_INSERTED_PL, - MSG_SD_INSERTED_DE -}; - -const char MSG_SD_NOT_PRINTING_EN[] PROGMEM = "Not SD printing"; -const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[1] PROGMEM = { - MSG_SD_NOT_PRINTING_EN -}; - -const char MSG_SD_OPENROOT_FAIL_EN[] PROGMEM = "openRoot failed"; -const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_OPENROOT_FAIL_EN -}; - -const char MSG_SD_OPEN_FILE_FAIL_EN[] PROGMEM = "open failed, File: "; -const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_OPEN_FILE_FAIL_EN -}; - -const char MSG_SD_PRINTING_BYTE_EN[] PROGMEM = "SD printing byte "; -const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[1] PROGMEM = { - MSG_SD_PRINTING_BYTE_EN -}; - -const char MSG_SD_REMOVED_EN[] PROGMEM = "Card removed"; -const char MSG_SD_REMOVED_CZ[] PROGMEM = "Karta vyjmuta"; -const char MSG_SD_REMOVED_IT[] PROGMEM = "SD rimossa"; -const char MSG_SD_REMOVED_ES[] PROGMEM = "Tarjeta retirada"; -const char MSG_SD_REMOVED_PL[] PROGMEM = "Karta wyjeta"; -const char MSG_SD_REMOVED_DE[] PROGMEM = "SD entfernt "; -const char * const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_REMOVED_EN, - MSG_SD_REMOVED_CZ, - MSG_SD_REMOVED_IT, - MSG_SD_REMOVED_ES, - MSG_SD_REMOVED_PL, - MSG_SD_REMOVED_DE -}; - -const char MSG_SD_SIZE_EN[] PROGMEM = " Size: "; -const char * const MSG_SD_SIZE_LANG_TABLE[1] PROGMEM = { - MSG_SD_SIZE_EN -}; - -const char MSG_SD_VOL_INIT_FAIL_EN[] PROGMEM = "volume.init failed"; -const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_VOL_INIT_FAIL_EN -}; - -const char MSG_SD_WORKDIR_FAIL_EN[] PROGMEM = "workDir open failed"; -const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_WORKDIR_FAIL_EN -}; - -const char MSG_SD_WRITE_TO_FILE_EN[] PROGMEM = "Writing to file: "; -const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { - MSG_SD_WRITE_TO_FILE_EN -}; - -const char MSG_SELFTEST_EN[] PROGMEM = "Selftest "; -const char MSG_SELFTEST_IT[] PROGMEM = "Autotest"; -const char MSG_SELFTEST_ES[] PROGMEM = "Autotest"; -const char MSG_SELFTEST_DE[] PROGMEM = "Selbsttest "; -const char * const MSG_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EN, - MSG_SELFTEST_EN, - MSG_SELFTEST_IT, - MSG_SELFTEST_ES, - MSG_SELFTEST_EN, - MSG_SELFTEST_DE -}; - -const char MSG_SELFTEST_BEDHEATER_EN[] PROGMEM = "Bed / Heater"; -const char MSG_SELFTEST_BEDHEATER_IT[] PROGMEM = "Letto/Riscald."; -const char MSG_SELFTEST_BEDHEATER_ES[] PROGMEM = "Cama/Calentador"; -const char * const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_IT, - MSG_SELFTEST_BEDHEATER_ES, - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_EN -}; - -const char MSG_SELFTEST_CHECK_ALLCORRECT_EN[] PROGMEM = "All correct "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_CZ[] PROGMEM = "Vse OK "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_IT[] PROGMEM = "Nessun errore"; -const char MSG_SELFTEST_CHECK_ALLCORRECT_ES[] PROGMEM = "Todo bie "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_PL[] PROGMEM = "Wszystko OK "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_DE[] PROGMEM = "Alles richtig "; -const char * const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ALLCORRECT_EN, - MSG_SELFTEST_CHECK_ALLCORRECT_CZ, - MSG_SELFTEST_CHECK_ALLCORRECT_IT, - MSG_SELFTEST_CHECK_ALLCORRECT_ES, - MSG_SELFTEST_CHECK_ALLCORRECT_PL, - MSG_SELFTEST_CHECK_ALLCORRECT_DE -}; - -const char MSG_SELFTEST_CHECK_BED_EN[] PROGMEM = "Checking bed "; -const char MSG_SELFTEST_CHECK_BED_CZ[] PROGMEM = "Kontrola bed "; -const char MSG_SELFTEST_CHECK_BED_IT[] PROGMEM = "Verifica letto"; -const char MSG_SELFTEST_CHECK_BED_ES[] PROGMEM = "Control de cama"; -const char MSG_SELFTEST_CHECK_BED_PL[] PROGMEM = "Kontrola bed "; -const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pr\x81fe Bed "; -const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_BED_EN, - MSG_SELFTEST_CHECK_BED_CZ, - MSG_SELFTEST_CHECK_BED_IT, - MSG_SELFTEST_CHECK_BED_ES, - MSG_SELFTEST_CHECK_BED_PL, - MSG_SELFTEST_CHECK_BED_DE -}; - -const char MSG_SELFTEST_CHECK_ENDSTOPS_EN[] PROGMEM = "Checking endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; -const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ENDSTOPS_EN, - MSG_SELFTEST_CHECK_ENDSTOPS_CZ, - MSG_SELFTEST_CHECK_ENDSTOPS_IT, - MSG_SELFTEST_CHECK_ENDSTOPS_ES, - MSG_SELFTEST_CHECK_ENDSTOPS_PL, - MSG_SELFTEST_CHECK_ENDSTOPS_DE -}; - -const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_IT[] PROGMEM = "Verifica ugello"; -const char MSG_SELFTEST_CHECK_HOTEND_ES[] PROGMEM = "Control hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_PL[] PROGMEM = "Kontrola hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_DE[] PROGMEM = "Pruefe Hotend"; -const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_HOTEND_EN, - MSG_SELFTEST_CHECK_HOTEND_CZ, - MSG_SELFTEST_CHECK_HOTEND_IT, - MSG_SELFTEST_CHECK_HOTEND_ES, - MSG_SELFTEST_CHECK_HOTEND_PL, - MSG_SELFTEST_CHECK_HOTEND_DE -}; - -const char MSG_SELFTEST_CHECK_X_EN[] PROGMEM = "Checking X axis "; -const char MSG_SELFTEST_CHECK_X_CZ[] PROGMEM = "Kontrola X axis "; -const char MSG_SELFTEST_CHECK_X_IT[] PROGMEM = "Verifica asse X"; -const char MSG_SELFTEST_CHECK_X_ES[] PROGMEM = "Control del eje X"; -const char MSG_SELFTEST_CHECK_X_PL[] PROGMEM = "Kontrola X axis "; -const char MSG_SELFTEST_CHECK_X_DE[] PROGMEM = "Pruefe X Achse "; -const char * const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_X_EN, - MSG_SELFTEST_CHECK_X_CZ, - MSG_SELFTEST_CHECK_X_IT, - MSG_SELFTEST_CHECK_X_ES, - MSG_SELFTEST_CHECK_X_PL, - MSG_SELFTEST_CHECK_X_DE -}; - -const char MSG_SELFTEST_CHECK_Y_EN[] PROGMEM = "Checking Y axis "; -const char MSG_SELFTEST_CHECK_Y_CZ[] PROGMEM = "Kontrola Y axis "; -const char MSG_SELFTEST_CHECK_Y_IT[] PROGMEM = "Verifica asse Y"; -const char MSG_SELFTEST_CHECK_Y_ES[] PROGMEM = "Control del eje Y"; -const char MSG_SELFTEST_CHECK_Y_PL[] PROGMEM = "Kontrola Y axis "; -const char MSG_SELFTEST_CHECK_Y_DE[] PROGMEM = "Pruefe Y Achse "; -const char * const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Y_EN, - MSG_SELFTEST_CHECK_Y_CZ, - MSG_SELFTEST_CHECK_Y_IT, - MSG_SELFTEST_CHECK_Y_ES, - MSG_SELFTEST_CHECK_Y_PL, - MSG_SELFTEST_CHECK_Y_DE -}; - -const char MSG_SELFTEST_CHECK_Z_EN[] PROGMEM = "Checking Z axis "; -const char MSG_SELFTEST_CHECK_Z_CZ[] PROGMEM = "Kontrola Z axis "; -const char MSG_SELFTEST_CHECK_Z_IT[] PROGMEM = "Verifica asse Z"; -const char MSG_SELFTEST_CHECK_Z_ES[] PROGMEM = "Control del eje Z"; -const char MSG_SELFTEST_CHECK_Z_PL[] PROGMEM = "Kontrola Z axis "; -const char MSG_SELFTEST_CHECK_Z_DE[] PROGMEM = "Pruefe Z Achse "; -const char * const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Z_EN, - MSG_SELFTEST_CHECK_Z_CZ, - MSG_SELFTEST_CHECK_Z_IT, - MSG_SELFTEST_CHECK_Z_ES, - MSG_SELFTEST_CHECK_Z_PL, - MSG_SELFTEST_CHECK_Z_DE -}; - -const char MSG_SELFTEST_COOLING_FAN_EN[] PROGMEM = "Front print fan?";; -const char MSG_SELFTEST_COOLING_FAN_CZ[] PROGMEM = "Predni tiskovy vent?";; -const char MSG_SELFTEST_COOLING_FAN_IT[] PROGMEM = "Vent di stampa ant.?";; -const char MSG_SELFTEST_COOLING_FAN_ES[] PROGMEM = "Vent. al frente?";; -const char MSG_SELFTEST_COOLING_FAN_PL[] PROGMEM = "Przodni went. druku?";; -const char MSG_SELFTEST_COOLING_FAN_DE[] PROGMEM = "Vorderer Luefter?"; -const char * const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_COOLING_FAN_EN, - MSG_SELFTEST_COOLING_FAN_CZ, - MSG_SELFTEST_COOLING_FAN_IT, - MSG_SELFTEST_COOLING_FAN_ES, - MSG_SELFTEST_COOLING_FAN_PL, - MSG_SELFTEST_COOLING_FAN_DE -}; - -const char MSG_SELFTEST_ENDSTOP_EN[] PROGMEM = "Endstop"; -const char MSG_SELFTEST_ENDSTOP_IT[] PROGMEM = "Finecorsa"; -const char MSG_SELFTEST_ENDSTOP_ES[] PROGMEM = "Tope final"; -const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_IT, - MSG_SELFTEST_ENDSTOP_ES, - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_EN -}; - -const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; -const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; -const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; -const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; -const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_IT, - MSG_SELFTEST_ENDSTOPS_ES, - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_DE -}; - -const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Ende nicht getrof."; -const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_IT, - MSG_SELFTEST_ENDSTOP_NOTHIT_ES, - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_DE -}; - -const char MSG_SELFTEST_ERROR_EN[] PROGMEM = "Selftest error !"; -const char MSG_SELFTEST_ERROR_IT[] PROGMEM = "Autotest negativo"; -const char MSG_SELFTEST_ERROR_ES[] PROGMEM = "Autotest error!"; -const char MSG_SELFTEST_ERROR_DE[] PROGMEM = "Selbtest Fehler!"; -const char * const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_IT, - MSG_SELFTEST_ERROR_ES, - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_DE -}; - -const char MSG_SELFTEST_EXTRUDER_FAN_EN[] PROGMEM = "Left hotend fan?";; -const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; -const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; -const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; -const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; -const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?"; -const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EXTRUDER_FAN_EN, - MSG_SELFTEST_EXTRUDER_FAN_CZ, - MSG_SELFTEST_EXTRUDER_FAN_IT, - MSG_SELFTEST_EXTRUDER_FAN_ES, - MSG_SELFTEST_EXTRUDER_FAN_PL, - MSG_SELFTEST_EXTRUDER_FAN_DE -}; - -const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed "; -const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal "; -const char MSG_SELFTEST_FAILED_IT[] PROGMEM = "Autotest fallito"; -const char MSG_SELFTEST_FAILED_ES[] PROGMEM = "Autotest fallado"; -const char MSG_SELFTEST_FAILED_PL[] PROGMEM = "Selftest nieudany"; -const char MSG_SELFTEST_FAILED_DE[] PROGMEM = "Selbsttest misslung."; -const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAILED_EN, - MSG_SELFTEST_FAILED_CZ, - MSG_SELFTEST_FAILED_IT, - MSG_SELFTEST_FAILED_ES, - MSG_SELFTEST_FAILED_PL, - MSG_SELFTEST_FAILED_DE -}; - -const char MSG_SELFTEST_FAN_EN[] PROGMEM = "Fan test";; -const char MSG_SELFTEST_FAN_CZ[] PROGMEM = "Test ventilatoru";; -const char MSG_SELFTEST_FAN_IT[] PROGMEM = "Prova del ventilator";; -const char MSG_SELFTEST_FAN_ES[] PROGMEM = "Test del ventilador";; -const char MSG_SELFTEST_FAN_PL[] PROGMEM = "Test wentylatora";; -const char MSG_SELFTEST_FAN_DE[] PROGMEM = "Lueftertest"; -const char * const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_EN, - MSG_SELFTEST_FAN_CZ, - MSG_SELFTEST_FAN_IT, - MSG_SELFTEST_FAN_ES, - MSG_SELFTEST_FAN_PL, - MSG_SELFTEST_FAN_DE -}; - -const char MSG_SELFTEST_FAN_NO_EN[] PROGMEM = "Not spinning";; -const char MSG_SELFTEST_FAN_NO_CZ[] PROGMEM = "Netoci se";; -const char MSG_SELFTEST_FAN_NO_IT[] PROGMEM = "Non si gira";; -const char MSG_SELFTEST_FAN_NO_ES[] PROGMEM = "Ventilador no gira";; -const char MSG_SELFTEST_FAN_NO_PL[] PROGMEM = "Nekreci sie";; -const char MSG_SELFTEST_FAN_NO_DE[] PROGMEM = "Dreht nicht"; -const char * const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_NO_EN, - MSG_SELFTEST_FAN_NO_CZ, - MSG_SELFTEST_FAN_NO_IT, - MSG_SELFTEST_FAN_NO_ES, - MSG_SELFTEST_FAN_NO_PL, - MSG_SELFTEST_FAN_NO_DE -}; - -const char MSG_SELFTEST_FAN_YES_EN[] PROGMEM = "Spinning";; -const char MSG_SELFTEST_FAN_YES_CZ[] PROGMEM = "Toci se";; -const char MSG_SELFTEST_FAN_YES_IT[] PROGMEM = "Gira";; -const char MSG_SELFTEST_FAN_YES_ES[] PROGMEM = "Ventilador gira";; -const char MSG_SELFTEST_FAN_YES_PL[] PROGMEM = "Kreci sie";; -const char MSG_SELFTEST_FAN_YES_DE[] PROGMEM = "Dreht"; -const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_YES_EN, - MSG_SELFTEST_FAN_YES_CZ, - MSG_SELFTEST_FAN_YES_IT, - MSG_SELFTEST_FAN_YES_ES, - MSG_SELFTEST_FAN_YES_PL, - MSG_SELFTEST_FAN_YES_DE -}; - -const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor"; -const char MSG_SELFTEST_HEATERTHERMISTOR_IT[] PROGMEM = "Riscald./Termist."; -const char MSG_SELFTEST_HEATERTHERMISTOR_ES[] PROGMEM = "Calent./Termistor"; -const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_IT, - MSG_SELFTEST_HEATERTHERMISTOR_ES, - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_EN -}; - -const char MSG_SELFTEST_MOTOR_EN[] PROGMEM = "Motor"; -const char MSG_SELFTEST_MOTOR_IT[] PROGMEM = "Motore"; -const char MSG_SELFTEST_MOTOR_PL[] PROGMEM = "Silnik"; -const char * const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_IT, - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_PL, - MSG_SELFTEST_MOTOR_EN -}; - -const char MSG_SELFTEST_NOTCONNECTED_EN[] PROGMEM = "Not connected"; -const char MSG_SELFTEST_NOTCONNECTED_CZ[] PROGMEM = "Nezapojeno "; -const char MSG_SELFTEST_NOTCONNECTED_IT[] PROGMEM = "Non connesso"; -const char MSG_SELFTEST_NOTCONNECTED_ES[] PROGMEM = "No hay conexion "; -const char MSG_SELFTEST_NOTCONNECTED_PL[] PROGMEM = "Nie podlaczono "; -const char MSG_SELFTEST_NOTCONNECTED_DE[] PROGMEM = "Nicht angeschlossen"; -const char * const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_NOTCONNECTED_EN, - MSG_SELFTEST_NOTCONNECTED_CZ, - MSG_SELFTEST_NOTCONNECTED_IT, - MSG_SELFTEST_NOTCONNECTED_ES, - MSG_SELFTEST_NOTCONNECTED_PL, - MSG_SELFTEST_NOTCONNECTED_DE -}; - -const char MSG_SELFTEST_OK_EN[] PROGMEM = "Self test OK"; -const char MSG_SELFTEST_OK_IT[] PROGMEM = "Autotest OK"; -const char MSG_SELFTEST_OK_DE[] PROGMEM = "Selbsttest OK"; -const char * const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_IT, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_DE -}; - -const char MSG_SELFTEST_PLEASECHECK_EN[] PROGMEM = "Please check :"; -const char MSG_SELFTEST_PLEASECHECK_CZ[] PROGMEM = "Zkontrolujte :"; -const char MSG_SELFTEST_PLEASECHECK_IT[] PROGMEM = "Verificare:"; -const char MSG_SELFTEST_PLEASECHECK_ES[] PROGMEM = "Controla :"; -const char MSG_SELFTEST_PLEASECHECK_PL[] PROGMEM = "Skontroluj :"; -const char MSG_SELFTEST_PLEASECHECK_DE[] PROGMEM = "Bitte pruefe:"; -const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_PLEASECHECK_EN, - MSG_SELFTEST_PLEASECHECK_CZ, - MSG_SELFTEST_PLEASECHECK_IT, - MSG_SELFTEST_PLEASECHECK_ES, - MSG_SELFTEST_PLEASECHECK_PL, - MSG_SELFTEST_PLEASECHECK_DE -}; - -const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start "; -const char MSG_SELFTEST_START_IT[] PROGMEM = "Avvia autotest"; -const char MSG_SELFTEST_START_ES[] PROGMEM = "Autotest salida"; -const char MSG_SELFTEST_START_DE[] PROGMEM = "Selbsttest start "; -const char * const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_IT, - MSG_SELFTEST_START_ES, - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_DE -}; - -const char MSG_SELFTEST_WIRINGERROR_EN[] PROGMEM = "Wiring error"; -const char MSG_SELFTEST_WIRINGERROR_CZ[] PROGMEM = "Chyba zapojeni"; -const char MSG_SELFTEST_WIRINGERROR_IT[] PROGMEM = "Errore cablaggio"; -const char MSG_SELFTEST_WIRINGERROR_ES[] PROGMEM = "Error de conexion"; -const char MSG_SELFTEST_WIRINGERROR_PL[] PROGMEM = "Blad polaczenia"; -const char MSG_SELFTEST_WIRINGERROR_DE[] PROGMEM = "Verdrahtungfehler"; -const char * const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_WIRINGERROR_EN, - MSG_SELFTEST_WIRINGERROR_CZ, - MSG_SELFTEST_WIRINGERROR_IT, - MSG_SELFTEST_WIRINGERROR_ES, - MSG_SELFTEST_WIRINGERROR_PL, - MSG_SELFTEST_WIRINGERROR_DE -}; - -const char MSG_SERIAL_ERROR_MENU_STRUCTURE_EN[] PROGMEM = "Error in menu structure"; -const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1] PROGMEM = { - MSG_SERIAL_ERROR_MENU_STRUCTURE_EN -}; - -const char MSG_SETTINGS_EN[] PROGMEM = "Settings"; -const char MSG_SETTINGS_CZ[] PROGMEM = "Nastaveni"; -const char MSG_SETTINGS_IT[] PROGMEM = "Impostazioni"; -const char MSG_SETTINGS_ES[] PROGMEM = "Configuracion"; -const char MSG_SETTINGS_PL[] PROGMEM = "Ustawienia"; -const char MSG_SETTINGS_DE[] PROGMEM = "Einstellungen"; -const char * const MSG_SETTINGS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SETTINGS_EN, - MSG_SETTINGS_CZ, - MSG_SETTINGS_IT, - MSG_SETTINGS_ES, - MSG_SETTINGS_PL, - MSG_SETTINGS_DE -}; - -const char MSG_SET_HOME_OFFSETS_EN[] PROGMEM = "Set home offsets"; -const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[1] PROGMEM = { - MSG_SET_HOME_OFFSETS_EN -}; - -const char MSG_SET_ORIGIN_EN[] PROGMEM = "Set origin"; -const char * const MSG_SET_ORIGIN_LANG_TABLE[1] PROGMEM = { - MSG_SET_ORIGIN_EN -}; - -const char MSG_SET_TEMPERATURE_EN[] PROGMEM = "Set temperature:"; -const char MSG_SET_TEMPERATURE_CZ[] PROGMEM = "Nastavte teplotu:"; -const char MSG_SET_TEMPERATURE_IT[] PROGMEM = "Imposta temperatura"; -const char MSG_SET_TEMPERATURE_ES[] PROGMEM = "Establecer temp.:"; -const char MSG_SET_TEMPERATURE_PL[] PROGMEM = "Ustawic temperature"; -const char MSG_SET_TEMPERATURE_DE[] PROGMEM = "Temp. einsetzen"; -const char * const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SET_TEMPERATURE_EN, - MSG_SET_TEMPERATURE_CZ, - MSG_SET_TEMPERATURE_IT, - MSG_SET_TEMPERATURE_ES, - MSG_SET_TEMPERATURE_PL, - MSG_SET_TEMPERATURE_DE -}; - -const char MSG_SEVERE_SKEW_EN[] PROGMEM = "Severe skew:"; -const char MSG_SEVERE_SKEW_CZ[] PROGMEM = "Tezke zkoseni:"; -const char MSG_SEVERE_SKEW_IT[] PROGMEM = "Inc. rilevante:"; -const char MSG_SEVERE_SKEW_ES[] PROGMEM = "Inclin. severa:"; -const char MSG_SEVERE_SKEW_PL[] PROGMEM = "Ostre sciecie:"; -const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwerer Schr.:"; -const char * const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SEVERE_SKEW_EN, - MSG_SEVERE_SKEW_CZ, - MSG_SEVERE_SKEW_IT, - MSG_SEVERE_SKEW_ES, - MSG_SEVERE_SKEW_PL, - MSG_SEVERE_SKEW_DE -}; - -const char MSG_SHOW_END_STOPS_EN[] PROGMEM = "Show end stops"; -const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; -const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; -const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; -const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; -const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Endschalter Stat."; -const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SHOW_END_STOPS_EN, - MSG_SHOW_END_STOPS_CZ, - MSG_SHOW_END_STOPS_IT, - MSG_SHOW_END_STOPS_ES, - MSG_SHOW_END_STOPS_PL, - MSG_SHOW_END_STOPS_DE -}; - -const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; -const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; -const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]"; -const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [rend.pleno]"; -const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; -const char MSG_SILENT_MODE_OFF_DE[] PROGMEM = "Mode [Hohe Leist]"; -const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_OFF_EN, - MSG_SILENT_MODE_OFF_CZ, - MSG_SILENT_MODE_OFF_IT, - MSG_SILENT_MODE_OFF_ES, - MSG_SILENT_MODE_OFF_PL, - MSG_SILENT_MODE_OFF_DE -}; - -const char MSG_SILENT_MODE_ON_EN[] PROGMEM = "Mode [silent]"; -const char MSG_SILENT_MODE_ON_CZ[] PROGMEM = "Mod [tichy]"; -const char MSG_SILENT_MODE_ON_IT[] PROGMEM = "Modo [silenzioso]"; -const char MSG_SILENT_MODE_ON_ES[] PROGMEM = "Modo [silencio]"; -const char MSG_SILENT_MODE_ON_PL[] PROGMEM = "Mod [cichy]"; -const char MSG_SILENT_MODE_ON_DE[] PROGMEM = "Mode [leise]"; -const char * const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_ON_EN, - MSG_SILENT_MODE_ON_CZ, - MSG_SILENT_MODE_ON_IT, - MSG_SILENT_MODE_ON_ES, - MSG_SILENT_MODE_ON_PL, - MSG_SILENT_MODE_ON_DE -}; - -const char MSG_SLIGHT_SKEW_EN[] PROGMEM = "Slight skew:"; -const char MSG_SLIGHT_SKEW_CZ[] PROGMEM = "Lehke zkoseni:"; -const char MSG_SLIGHT_SKEW_IT[] PROGMEM = "Incl. leggera:"; -const char MSG_SLIGHT_SKEW_ES[] PROGMEM = "Inclin. ligera:"; -const char MSG_SLIGHT_SKEW_PL[] PROGMEM = "Lekkie sciecie:"; -const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Leichter Schr.:"; -const char * const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SLIGHT_SKEW_EN, - MSG_SLIGHT_SKEW_CZ, - MSG_SLIGHT_SKEW_IT, - MSG_SLIGHT_SKEW_ES, - MSG_SLIGHT_SKEW_PL, - MSG_SLIGHT_SKEW_DE -}; - -const char MSG_SOFTWARE_RESET_EN[] PROGMEM = " Software Reset"; -const char * const MSG_SOFTWARE_RESET_LANG_TABLE[1] PROGMEM = { - MSG_SOFTWARE_RESET_EN -}; - -const char MSG_SORTING_EN[] PROGMEM = "Sorting files"; -const char * const MSG_SORTING_LANG_TABLE[1] PROGMEM = { - MSG_SORTING_EN -}; - -const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort: [Alphabet]"; -const char * const MSG_SORT_ALPHA_LANG_TABLE[1] PROGMEM = { - MSG_SORT_ALPHA_EN -}; - -const char MSG_SORT_NONE_EN[] PROGMEM = "Sort: [None]"; -const char * const MSG_SORT_NONE_LANG_TABLE[1] PROGMEM = { - MSG_SORT_NONE_EN -}; - -const char MSG_SORT_TIME_EN[] PROGMEM = "Sort: [Time]"; -const char * const MSG_SORT_TIME_LANG_TABLE[1] PROGMEM = { - MSG_SORT_TIME_EN -}; - -const char MSG_SPEED_EN[] PROGMEM = "Speed"; -const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; -const char MSG_SPEED_IT[] PROGMEM = "Velocita"; -const char MSG_SPEED_ES[] PROGMEM = "Velocidad"; -const char MSG_SPEED_PL[] PROGMEM = "Predkosc"; -const char MSG_SPEED_DE[] PROGMEM = "Geschwindigkeit"; -const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SPEED_EN, - MSG_SPEED_CZ, - MSG_SPEED_IT, - MSG_SPEED_ES, - MSG_SPEED_PL, - MSG_SPEED_DE -}; - -const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; -const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { - MSG_STACK_ERROR_EN -}; - -const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; -const char MSG_STATISTICS_CZ[] PROGMEM = "Statistika "; -const char MSG_STATISTICS_IT[] PROGMEM = "Statistiche"; -const char MSG_STATISTICS_ES[] PROGMEM = "Estadistica "; -const char MSG_STATISTICS_PL[] PROGMEM = "Statystyka "; -const char MSG_STATISTICS_DE[] PROGMEM = "Statistiken "; -const char * const MSG_STATISTICS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATISTICS_EN, - MSG_STATISTICS_CZ, - MSG_STATISTICS_IT, - MSG_STATISTICS_ES, - MSG_STATISTICS_PL, - MSG_STATISTICS_DE -}; - -const char MSG_STATS_FILAMENTUSED_EN[] PROGMEM = "Filament used: "; -const char MSG_STATS_FILAMENTUSED_CZ[] PROGMEM = "Filament : "; -const char MSG_STATS_FILAMENTUSED_IT[] PROGMEM = "Filamento usato:"; -const char MSG_STATS_FILAMENTUSED_ES[] PROGMEM = "Filamento : "; -const char MSG_STATS_FILAMENTUSED_PL[] PROGMEM = "Filament : "; -const char MSG_STATS_FILAMENTUSED_DE[] PROGMEM = "Filamentverbrauch:"; -const char * const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_FILAMENTUSED_EN, - MSG_STATS_FILAMENTUSED_CZ, - MSG_STATS_FILAMENTUSED_IT, - MSG_STATS_FILAMENTUSED_ES, - MSG_STATS_FILAMENTUSED_PL, - MSG_STATS_FILAMENTUSED_DE -}; - -const char MSG_STATS_PRINTTIME_EN[] PROGMEM = "Print time: "; -const char MSG_STATS_PRINTTIME_CZ[] PROGMEM = "Cas tisku : "; -const char MSG_STATS_PRINTTIME_IT[] PROGMEM = "Tempo di stampa:"; -const char MSG_STATS_PRINTTIME_ES[] PROGMEM = "Tiempo de imp.:"; -const char MSG_STATS_PRINTTIME_PL[] PROGMEM = "Czas druku : "; -const char MSG_STATS_PRINTTIME_DE[] PROGMEM = "Druckzeit: "; -const char * const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_PRINTTIME_EN, - MSG_STATS_PRINTTIME_CZ, - MSG_STATS_PRINTTIME_IT, - MSG_STATS_PRINTTIME_ES, - MSG_STATS_PRINTTIME_PL, - MSG_STATS_PRINTTIME_DE -}; - -const char MSG_STATS_TOTALFILAMENT_EN[] PROGMEM = "Total filament :"; -const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; -const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; -const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; -const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; -const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Gesamtfilament:"; -const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALFILAMENT_EN, - MSG_STATS_TOTALFILAMENT_CZ, - MSG_STATS_TOTALFILAMENT_IT, - MSG_STATS_TOTALFILAMENT_ES, - MSG_STATS_TOTALFILAMENT_PL, - MSG_STATS_TOTALFILAMENT_DE -}; - -const char MSG_STATS_TOTALPRINTTIME_EN[] PROGMEM = "Total print time :"; -const char MSG_STATS_TOTALPRINTTIME_CZ[] PROGMEM = "Celkovy cas :"; -const char MSG_STATS_TOTALPRINTTIME_IT[] PROGMEM = "Tempo stampa tot:"; -const char MSG_STATS_TOTALPRINTTIME_ES[] PROGMEM = "Tiempo total :"; -const char MSG_STATS_TOTALPRINTTIME_PL[] PROGMEM = "Czas calkowity :"; -const char MSG_STATS_TOTALPRINTTIME_DE[] PROGMEM = "Totale Druckzeit:"; -const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALPRINTTIME_EN, - MSG_STATS_TOTALPRINTTIME_CZ, - MSG_STATS_TOTALPRINTTIME_IT, - MSG_STATS_TOTALPRINTTIME_ES, - MSG_STATS_TOTALPRINTTIME_PL, - MSG_STATS_TOTALPRINTTIME_DE -}; - -const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; -const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { - MSG_STEPPER_TOO_HIGH_EN -}; - -const char MSG_STOPPED_EN[] PROGMEM = "STOPPED. "; -const char MSG_STOPPED_IT[] PROGMEM = "ARRESTATO."; -const char MSG_STOPPED_ES[] PROGMEM = "PARADA"; -const char MSG_STOPPED_DE[] PROGMEM = "GESTOPPT. "; -const char * const MSG_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOPPED_EN, - MSG_STOPPED_EN, - MSG_STOPPED_IT, - MSG_STOPPED_ES, - MSG_STOPPED_EN, - MSG_STOPPED_DE -}; - -const char MSG_STOP_PRINT_EN[] PROGMEM = "Stop print"; -const char MSG_STOP_PRINT_CZ[] PROGMEM = "Zastavit tisk"; -const char MSG_STOP_PRINT_IT[] PROGMEM = "Arresta stampa"; -const char MSG_STOP_PRINT_ES[] PROGMEM = "Detener impresion"; -const char MSG_STOP_PRINT_PL[] PROGMEM = "Zatrzymac druk"; -const char MSG_STOP_PRINT_DE[] PROGMEM = "Druck abbrechen"; -const char * const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOP_PRINT_EN, - MSG_STOP_PRINT_CZ, - MSG_STOP_PRINT_IT, - MSG_STOP_PRINT_ES, - MSG_STOP_PRINT_PL, - MSG_STOP_PRINT_DE -}; - -const char MSG_STORE_EPROM_EN[] PROGMEM = "Store memory"; -const char * const MSG_STORE_EPROM_LANG_TABLE[1] PROGMEM = { - MSG_STORE_EPROM_EN -}; - -const char MSG_SUPPORT_EN[] PROGMEM = "Support"; -const char MSG_SUPPORT_CZ[] PROGMEM = "Podpora"; -const char MSG_SUPPORT_ES[] PROGMEM = "Soporte"; -const char MSG_SUPPORT_PL[] PROGMEM = "Pomoc"; -const char * const MSG_SUPPORT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SUPPORT_EN, - MSG_SUPPORT_CZ, - MSG_SUPPORT_EN, - MSG_SUPPORT_ES, - MSG_SUPPORT_PL, - MSG_SUPPORT_EN -}; - -const char MSG_SWITCH_PS_OFF_EN[] PROGMEM = "Switch power off"; -const char MSG_SWITCH_PS_OFF_CZ[] PROGMEM = "Zapnout zdroj"; -const char MSG_SWITCH_PS_OFF_PL[] PROGMEM = "Zapnout zdroj"; -const char MSG_SWITCH_PS_OFF_DE[] PROGMEM = "Netzteil AUS"; -const char * const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_CZ, - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_PL, - MSG_SWITCH_PS_OFF_DE -}; - -const char MSG_SWITCH_PS_ON_EN[] PROGMEM = "Switch power on"; -const char MSG_SWITCH_PS_ON_CZ[] PROGMEM = "Vypnout zdroj"; -const char MSG_SWITCH_PS_ON_PL[] PROGMEM = "Vypnout zdroj"; -const char MSG_SWITCH_PS_ON_DE[] PROGMEM = "Netzteil EIN"; -const char * const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_CZ, - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_PL, - MSG_SWITCH_PS_ON_DE -}; - -const char MSG_TAKE_EFFECT_EN[] PROGMEM = " for take effect"; -const char MSG_TAKE_EFFECT_CZ[] PROGMEM = " pro projeveni zmen"; -const char MSG_TAKE_EFFECT_IT[] PROGMEM = " per attualizzare"; -const char MSG_TAKE_EFFECT_ES[] PROGMEM = " para aplicar cambios"; -const char MSG_TAKE_EFFECT_PL[] PROGMEM = " wprow. zmian"; -const char MSG_TAKE_EFFECT_DE[] PROGMEM = "Drucker neu starten"; -const char * const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TAKE_EFFECT_EN, - MSG_TAKE_EFFECT_CZ, - MSG_TAKE_EFFECT_IT, - MSG_TAKE_EFFECT_ES, - MSG_TAKE_EFFECT_PL, - MSG_TAKE_EFFECT_DE -}; - -const char MSG_TEMPERATURE_EN[] PROGMEM = "Temperature"; -const char MSG_TEMPERATURE_CZ[] PROGMEM = "Teplota"; -const char MSG_TEMPERATURE_IT[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_ES[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_PL[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_DE[] PROGMEM = "Temperatur"; -const char * const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMPERATURE_EN, - MSG_TEMPERATURE_CZ, - MSG_TEMPERATURE_IT, - MSG_TEMPERATURE_ES, - MSG_TEMPERATURE_PL, - MSG_TEMPERATURE_DE -}; - -const char MSG_TEMP_CALIBRATION_EN[] PROGMEM = "Temp. cal. "; -const char MSG_TEMP_CALIBRATION_CZ[] PROGMEM = "Tepl. kal. "; -const char MSG_TEMP_CALIBRATION_IT[] PROGMEM = "Cal. temp. "; -const char MSG_TEMP_CALIBRATION_ES[] PROGMEM = "Cal. temp. "; -const char MSG_TEMP_CALIBRATION_PL[] PROGMEM = "Ciepl. kal. "; -const char MSG_TEMP_CALIBRATION_DE[] PROGMEM = "Temp Kalib. "; -const char * const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_EN, - MSG_TEMP_CALIBRATION_CZ, - MSG_TEMP_CALIBRATION_IT, - MSG_TEMP_CALIBRATION_ES, - MSG_TEMP_CALIBRATION_PL, - MSG_TEMP_CALIBRATION_DE -}; - -const char MSG_TEMP_CALIBRATION_DONE_EN[] PROGMEM = "Temperature calibration is finished. Click to continue."; -const char MSG_TEMP_CALIBRATION_DONE_CZ[] PROGMEM = "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka."; -const char MSG_TEMP_CALIBRATION_DONE_IT[] PROGMEM = "Taratura temperatura terminata. Fare click per continuare."; -const char MSG_TEMP_CALIBRATION_DONE_ES[] PROGMEM = "Calibracon temperatura terminada. Presionar para continuar."; -const char MSG_TEMP_CALIBRATION_DONE_PL[] PROGMEM = "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"; -const char MSG_TEMP_CALIBRATION_DONE_DE[] PROGMEM = "Temp. Kalibrierung fertig. Klicken um weiter zu gehen."; -const char * const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_DONE_EN, - MSG_TEMP_CALIBRATION_DONE_CZ, - MSG_TEMP_CALIBRATION_DONE_IT, - MSG_TEMP_CALIBRATION_DONE_ES, - MSG_TEMP_CALIBRATION_DONE_PL, - MSG_TEMP_CALIBRATION_DONE_DE -}; - -const char MSG_TEMP_CALIBRATION_OFF_EN[] PROGMEM = "Temp. cal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_CZ[] PROGMEM = "Tepl. kal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_IT[] PROGMEM = "Cal. temp. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_ES[] PROGMEM = "Cal. temp. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_PL[] PROGMEM = "Ciepl. kal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_DE[] PROGMEM = "Temp. Kal. [OFF]"; -const char * const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_OFF_EN, - MSG_TEMP_CALIBRATION_OFF_CZ, - MSG_TEMP_CALIBRATION_OFF_IT, - MSG_TEMP_CALIBRATION_OFF_ES, - MSG_TEMP_CALIBRATION_OFF_PL, - MSG_TEMP_CALIBRATION_OFF_DE -}; - -const char MSG_TEMP_CALIBRATION_ON_EN[] PROGMEM = "Temp. cal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_CZ[] PROGMEM = "Tepl. kal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_IT[] PROGMEM = "Cal. temp. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_ES[] PROGMEM = "Cal. temp. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_PL[] PROGMEM = "Ciepl. kal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_DE[] PROGMEM = "Temp. Kal. [ON]"; -const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_ON_EN, - MSG_TEMP_CALIBRATION_ON_CZ, - MSG_TEMP_CALIBRATION_ON_IT, - MSG_TEMP_CALIBRATION_ON_ES, - MSG_TEMP_CALIBRATION_ON_PL, - MSG_TEMP_CALIBRATION_ON_DE -}; - -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; -const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE -}; - -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlashAir]"; -const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE -}; - -const char MSG_TUNE_EN[] PROGMEM = "Tune"; -const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; -const char MSG_TUNE_IT[] PROGMEM = "Regola"; -const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; -const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; -const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; -const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TUNE_EN, - MSG_TUNE_CZ, - MSG_TUNE_IT, - MSG_TUNE_ES, - MSG_TUNE_PL, - MSG_TUNE_DE -}; - -const char MSG_UNKNOWN_COMMAND_EN[] PROGMEM = "Unknown command: \""; -const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = { - MSG_UNKNOWN_COMMAND_EN -}; - -const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament"; -const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament"; -const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento"; -const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento"; -const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament"; -const char MSG_UNLOADING_FILAMENT_DE[] PROGMEM = "Filament auswerfen"; -const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOADING_FILAMENT_EN, - MSG_UNLOADING_FILAMENT_CZ, - MSG_UNLOADING_FILAMENT_IT, - MSG_UNLOADING_FILAMENT_ES, - MSG_UNLOADING_FILAMENT_PL, - MSG_UNLOADING_FILAMENT_DE -}; - -const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; -const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; -const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; -const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; -const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; -const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Alles entladen"; -const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_ALL_EN, - MSG_UNLOAD_ALL_CZ, - MSG_UNLOAD_ALL_IT, - MSG_UNLOAD_ALL_ES, - MSG_UNLOAD_ALL_PL, - MSG_UNLOAD_ALL_DE -}; - -const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; -const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; -const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; -const char MSG_UNLOAD_FILAMENT_ES[] PROGMEM = "Soltar filamento"; -const char MSG_UNLOAD_FILAMENT_PL[] PROGMEM = "Wyjac filament"; -const char MSG_UNLOAD_FILAMENT_DE[] PROGMEM = "Filament entladen"; -const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_EN, - MSG_UNLOAD_FILAMENT_CZ, - MSG_UNLOAD_FILAMENT_IT, - MSG_UNLOAD_FILAMENT_ES, - MSG_UNLOAD_FILAMENT_PL, - MSG_UNLOAD_FILAMENT_DE -}; - -const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; -const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; -const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; -const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; -const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Filam. 1 entladen"; -const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_1_EN, - MSG_UNLOAD_FILAMENT_1_CZ, - MSG_UNLOAD_FILAMENT_1_IT, - MSG_UNLOAD_FILAMENT_1_ES, - MSG_UNLOAD_FILAMENT_1_PL, - MSG_UNLOAD_FILAMENT_1_DE -}; - -const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; -const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; -const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; -const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; -const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Filam. 2 entladen"; -const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_2_EN, - MSG_UNLOAD_FILAMENT_2_CZ, - MSG_UNLOAD_FILAMENT_2_IT, - MSG_UNLOAD_FILAMENT_2_ES, - MSG_UNLOAD_FILAMENT_2_PL, - MSG_UNLOAD_FILAMENT_2_DE -}; - -const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; -const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; -const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; -const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; -const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Filam. 3 entladen"; -const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_3_EN, - MSG_UNLOAD_FILAMENT_3_CZ, - MSG_UNLOAD_FILAMENT_3_IT, - MSG_UNLOAD_FILAMENT_3_ES, - MSG_UNLOAD_FILAMENT_3_PL, - MSG_UNLOAD_FILAMENT_3_DE -}; - -const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; -const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; -const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; -const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; -const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Filam. 4 entladen"; -const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_4_EN, - MSG_UNLOAD_FILAMENT_4_CZ, - MSG_UNLOAD_FILAMENT_4_IT, - MSG_UNLOAD_FILAMENT_4_ES, - MSG_UNLOAD_FILAMENT_4_PL, - MSG_UNLOAD_FILAMENT_4_DE -}; - -const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; -const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; -const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; -const char MSG_USB_PRINTING_ES[] PROGMEM = "Impresion de USB "; -const char MSG_USB_PRINTING_PL[] PROGMEM = "Druk z USB "; -const char MSG_USB_PRINTING_DE[] PROGMEM = "Drucken ueber USB"; -const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USB_PRINTING_EN, - MSG_USB_PRINTING_CZ, - MSG_USB_PRINTING_IT, - MSG_USB_PRINTING_ES, - MSG_USB_PRINTING_PL, - MSG_USB_PRINTING_DE -}; - -const char MSG_USED_EN[] PROGMEM = "Used during print"; -const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku"; -const char MSG_USED_IT[] PROGMEM = "Usati nella stampa"; -const char MSG_USED_ES[] PROGMEM = "Usado en impresion"; -const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku"; -const char MSG_USED_DE[] PROGMEM = "Beim Druck benutzte"; -const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USED_EN, - MSG_USED_CZ, - MSG_USED_IT, - MSG_USED_ES, - MSG_USED_PL, - MSG_USED_DE -}; - -const char MSG_USERWAIT_EN[] PROGMEM = "Wait for user..."; -const char MSG_USERWAIT_IT[] PROGMEM = "Attendendo utente"; -const char MSG_USERWAIT_ES[] PROGMEM = "Esperando ordenes"; -const char MSG_USERWAIT_DE[] PROGMEM = "Warte auf user..."; -const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USERWAIT_EN, - MSG_USERWAIT_EN, - MSG_USERWAIT_IT, - MSG_USERWAIT_ES, - MSG_USERWAIT_EN, - MSG_USERWAIT_DE -}; - -const char MSG_VMIN_EN[] PROGMEM = "Vmin"; -const char * const MSG_VMIN_LANG_TABLE[1] PROGMEM = { - MSG_VMIN_EN -}; - -const char MSG_VOLUMETRIC_EN[] PROGMEM = "Filament"; -const char * const MSG_VOLUMETRIC_LANG_TABLE[1] PROGMEM = { - MSG_VOLUMETRIC_EN -}; - -const char MSG_VOLUMETRIC_ENABLED_EN[] PROGMEM = "E in mm3"; -const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1] PROGMEM = { - MSG_VOLUMETRIC_ENABLED_EN -}; - -const char MSG_VTRAV_MIN_EN[] PROGMEM = "VTrav min"; -const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = { - MSG_VTRAV_MIN_EN -}; - -const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for nozzle and bed cooling"; -const char MSG_WAITING_TEMP_CZ[] PROGMEM = "Cekani na zchladnuti trysky a podlozky."; -const char MSG_WAITING_TEMP_IT[] PROGMEM = "In attesa del raffreddamento della testina e del piatto"; -const char MSG_WAITING_TEMP_ES[] PROGMEM = "Esperando enfriamiento de la cama y del extrusor."; -const char MSG_WAITING_TEMP_PL[] PROGMEM = "Oczekiwanie na wychlodzenie dyszy i podkladki."; -const char MSG_WAITING_TEMP_DE[] PROGMEM = "Warten auf Abkuehlung von Heater und Bed."; -const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WAITING_TEMP_EN, - MSG_WAITING_TEMP_CZ, - MSG_WAITING_TEMP_IT, - MSG_WAITING_TEMP_ES, - MSG_WAITING_TEMP_PL, - MSG_WAITING_TEMP_DE -}; - -const char MSG_WATCH_EN[] PROGMEM = "Info screen"; -const char MSG_WATCH_CZ[] PROGMEM = "Informace"; -const char MSG_WATCH_IT[] PROGMEM = "Schermata info"; -const char MSG_WATCH_ES[] PROGMEM = "Monitorizar"; -const char MSG_WATCH_PL[] PROGMEM = "Informacje"; -const char MSG_WATCH_DE[] PROGMEM = "Information"; -const char * const MSG_WATCH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WATCH_EN, - MSG_WATCH_CZ, - MSG_WATCH_IT, - MSG_WATCH_ES, - MSG_WATCH_PL, - MSG_WATCH_DE -}; - -const char MSG_WATCHDOG_RESET_EN[] PROGMEM = " Watchdog Reset"; -const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { - MSG_WATCHDOG_RESET_EN -}; - -const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; -const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; -const char MSG_XYZ_DETAILS_IT[] PROGMEM = "XYZ Cal. dettagli"; -const char MSG_XYZ_DETAILS_ES[] PROGMEM = "Inform. XYZ cal."; -const char MSG_XYZ_DETAILS_PL[] PROGMEM = "Szczegoly kal.XYZ"; -const char MSG_XYZ_DETAILS_DE[] PROGMEM = "XYZ Kal. Details"; -const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_XYZ_DETAILS_EN, - MSG_XYZ_DETAILS_CZ, - MSG_XYZ_DETAILS_IT, - MSG_XYZ_DETAILS_ES, - MSG_XYZ_DETAILS_PL, - MSG_XYZ_DETAILS_DE -}; - -const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; -const char * const MSG_X_MAX_LANG_TABLE[1] PROGMEM = { - MSG_X_MAX_EN -}; - -const char MSG_X_MIN_EN[] PROGMEM = "x_min: "; -const char * const MSG_X_MIN_LANG_TABLE[1] PROGMEM = { - MSG_X_MIN_EN -}; - -const char MSG_YES_EN[] PROGMEM = "Yes"; -const char MSG_YES_CZ[] PROGMEM = "Ano"; -const char MSG_YES_IT[] PROGMEM = "Si"; -const char MSG_YES_ES[] PROGMEM = "Si"; -const char MSG_YES_PL[] PROGMEM = "Tak"; -const char MSG_YES_DE[] PROGMEM = "Ja"; -const char * const MSG_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_YES_EN, - MSG_YES_CZ, - MSG_YES_IT, - MSG_YES_ES, - MSG_YES_PL, - MSG_YES_DE -}; - -const char MSG_Y_DISTANCE_FROM_MIN_EN[] PROGMEM = "Y distance from min:"; -const char MSG_Y_DISTANCE_FROM_MIN_CZ[] PROGMEM = "Y vzdalenost od min:"; -const char MSG_Y_DISTANCE_FROM_MIN_IT[] PROGMEM = "Distanza Y da min:"; -const char MSG_Y_DISTANCE_FROM_MIN_ES[] PROGMEM = "Dist. Y desde min:"; -const char MSG_Y_DISTANCE_FROM_MIN_PL[] PROGMEM = "Odleglosc Y od min.:"; -const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung vom min"; -const char * const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_Y_DISTANCE_FROM_MIN_EN, - MSG_Y_DISTANCE_FROM_MIN_CZ, - MSG_Y_DISTANCE_FROM_MIN_IT, - MSG_Y_DISTANCE_FROM_MIN_ES, - MSG_Y_DISTANCE_FROM_MIN_PL, - MSG_Y_DISTANCE_FROM_MIN_DE -}; - -const char MSG_Y_MAX_EN[] PROGMEM = "y_max: "; -const char * const MSG_Y_MAX_LANG_TABLE[1] PROGMEM = { - MSG_Y_MAX_EN -}; - -const char MSG_Y_MIN_EN[] PROGMEM = "y_min: "; -const char * const MSG_Y_MIN_LANG_TABLE[1] PROGMEM = { - MSG_Y_MIN_EN -}; - -const char MSG_ZPROBE_OUT_EN[] PROGMEM = "Z probe out. bed"; -const char * const MSG_ZPROBE_OUT_LANG_TABLE[1] PROGMEM = { - MSG_ZPROBE_OUT_EN -}; - -const char MSG_ZPROBE_ZOFFSET_EN[] PROGMEM = "Z Offset"; -const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1] PROGMEM = { - MSG_ZPROBE_ZOFFSET_EN -}; - -const char MSG_Z_MAX_EN[] PROGMEM = "z_max: "; -const char * const MSG_Z_MAX_LANG_TABLE[1] PROGMEM = { - MSG_Z_MAX_EN -}; - -const char MSG_Z_MIN_EN[] PROGMEM = "z_min: "; -const char * const MSG_Z_MIN_LANG_TABLE[1] PROGMEM = { - MSG_Z_MIN_EN -}; - -const char WELCOME_MSG_EN[] PROGMEM = CUSTOM_MENDEL_NAME " ready."; -const char WELCOME_MSG_CZ[] PROGMEM = CUSTOM_MENDEL_NAME " ok"; -const char WELCOME_MSG_IT[] PROGMEM = CUSTOM_MENDEL_NAME " pronta."; -const char WELCOME_MSG_ES[] PROGMEM = CUSTOM_MENDEL_NAME " prep."; -const char WELCOME_MSG_PL[] PROGMEM = CUSTOM_MENDEL_NAME " gotowa"; -const char WELCOME_MSG_DE[] PROGMEM = CUSTOM_MENDEL_NAME " bereit."; -const char * const WELCOME_MSG_LANG_TABLE[LANG_NUM] PROGMEM = { - WELCOME_MSG_EN, - WELCOME_MSG_CZ, - WELCOME_MSG_IT, - WELCOME_MSG_ES, - WELCOME_MSG_PL, - WELCOME_MSG_DE -}; - - -char langbuffer[LCD_WIDTH+1]; -char* CAT2(const char *s1,const char *s2) { - unsigned char len=0; - strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); - len+=strlen_P(s1); - strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); - return langbuffer; -} -char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4) { - unsigned char len=0; - strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); - len+=strlen_P(s1); - strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); - len+=strlen_P(s2); - strncpy_P(langbuffer+len,s3,LCD_WIDTH-len); - len+=strlen_P(s3); - strncpy_P(langbuffer+len,s4,LCD_WIDTH-len); - return langbuffer; -} + +#include "Configuration_prusa.h" +#include "language_all.h" + +#define LCD_WIDTH 20 +extern unsigned char lang_selected; + +const char MSG_ACTIVE_EXTRUDER_EN[] PROGMEM = "Active Extruder: "; +const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_ACTIVE_EXTRUDER_EN +}; + +const char MSG_ADJUSTZ_EN[] PROGMEM = "Auto adjust Z?"; +const char MSG_ADJUSTZ_CZ[] PROGMEM = "Auto doladit Z ?"; +const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; +const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; +const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; +const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; +const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ADJUSTZ_EN, + MSG_ADJUSTZ_CZ, + MSG_ADJUSTZ_IT, + MSG_ADJUSTZ_ES, + MSG_ADJUSTZ_PL, + MSG_ADJUSTZ_DE +}; + +const char MSG_ALL_EN[] PROGMEM = "All"; +const char MSG_ALL_CZ[] PROGMEM = "Vse"; +const char MSG_ALL_IT[] PROGMEM = "Tutti"; +const char MSG_ALL_ES[] PROGMEM = "Todos"; +const char MSG_ALL_PL[] PROGMEM = "Wszystko"; +const char MSG_ALL_DE[] PROGMEM = "Alle"; +const char * const MSG_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ALL_EN, + MSG_ALL_CZ, + MSG_ALL_IT, + MSG_ALL_ES, + MSG_ALL_PL, + MSG_ALL_DE +}; + +const char MSG_AMAX_EN[] PROGMEM = "Amax "; +const char * const MSG_AMAX_LANG_TABLE[1] PROGMEM = { + MSG_AMAX_EN +}; + +const char MSG_AUTHOR_EN[] PROGMEM = " | Author: "; +const char * const MSG_AUTHOR_LANG_TABLE[1] PROGMEM = { + MSG_AUTHOR_EN +}; + +const char MSG_AUTO_HOME_EN[] PROGMEM = "Auto home"; +const char MSG_AUTO_HOME_IT[] PROGMEM = "Trova origine"; +const char MSG_AUTO_HOME_ES[] PROGMEM = "Llevar al origen"; +const char MSG_AUTO_HOME_DE[] PROGMEM = "Startposition"; +const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_IT, + MSG_AUTO_HOME_ES, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_DE +}; + +const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; +const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { + MSG_A_RETRACT_EN +}; + +const char MSG_BABYSTEPPING_X_EN[] PROGMEM = "Babystepping X"; +const char * const MSG_BABYSTEPPING_X_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_X_EN +}; + +const char MSG_BABYSTEPPING_Y_EN[] PROGMEM = "Babystepping Y"; +const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_Y_EN +}; + +const char MSG_BABYSTEPPING_Z_EN[] PROGMEM = "Adjusting Z"; +const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_Z_EN +}; + +const char MSG_BABYSTEP_X_EN[] PROGMEM = "Babystep X"; +const char * const MSG_BABYSTEP_X_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEP_X_EN +}; + +const char MSG_BABYSTEP_Y_EN[] PROGMEM = "Babystep Y"; +const char * const MSG_BABYSTEP_Y_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEP_Y_EN +}; + +const char MSG_BABYSTEP_Z_EN[] PROGMEM = "Live adjust Z"; +const char MSG_BABYSTEP_Z_CZ[] PROGMEM = "Doladeni osy Z"; +const char MSG_BABYSTEP_Z_IT[] PROGMEM = "Compensazione Z"; +const char MSG_BABYSTEP_Z_ES[] PROGMEM = "Micropaso Eje Z"; +const char MSG_BABYSTEP_Z_PL[] PROGMEM = "Dostrojenie osy Z"; +const char MSG_BABYSTEP_Z_DE[] PROGMEM = "Live Z einstellen"; +const char * const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BABYSTEP_Z_EN, + MSG_BABYSTEP_Z_CZ, + MSG_BABYSTEP_Z_IT, + MSG_BABYSTEP_Z_ES, + MSG_BABYSTEP_Z_PL, + MSG_BABYSTEP_Z_DE +}; + +const char MSG_BABYSTEP_Z_NOT_SET_EN[] PROGMEM = "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_CZ[] PROGMEM = "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."; +const char MSG_BABYSTEP_Z_NOT_SET_IT[] PROGMEM = "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_ES[] PROGMEM = "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_PL[] PROGMEM = "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."; +const char MSG_BABYSTEP_Z_NOT_SET_DE[] PROGMEM = "Der Abstand zwischen der Spitze der Duese und der Druckoberflaeche / Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, Abschnitt First layer calibration."; +const char * const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BABYSTEP_Z_NOT_SET_EN, + MSG_BABYSTEP_Z_NOT_SET_CZ, + MSG_BABYSTEP_Z_NOT_SET_IT, + MSG_BABYSTEP_Z_NOT_SET_ES, + MSG_BABYSTEP_Z_NOT_SET_PL, + MSG_BABYSTEP_Z_NOT_SET_DE +}; + +const char MSG_BED_EN[] PROGMEM = "Bed"; +const char MSG_BED_IT[] PROGMEM = "Letto"; +const char MSG_BED_ES[] PROGMEM = "Base"; +const char MSG_BED_PL[] PROGMEM = "Stolik"; +const char MSG_BED_DE[] PROGMEM = "Bett"; +const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_EN, + MSG_BED_EN, + MSG_BED_IT, + MSG_BED_ES, + MSG_BED_PL, + MSG_BED_DE +}; + +const char MSG_BED_CORRECTION_FRONT_EN[] PROGMEM = "Front side[um]"; +const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; +const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Fronte [um]"; +const char MSG_BED_CORRECTION_FRONT_ES[] PROGMEM = "Adelante [um]"; +const char MSG_BED_CORRECTION_FRONT_PL[] PROGMEM = "Do przodu [um]"; +const char MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; +const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_FRONT_EN, + MSG_BED_CORRECTION_FRONT_CZ, + MSG_BED_CORRECTION_FRONT_IT, + MSG_BED_CORRECTION_FRONT_ES, + MSG_BED_CORRECTION_FRONT_PL, + MSG_BED_CORRECTION_FRONT_DE +}; + +const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]"; +const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]"; +const char MSG_BED_CORRECTION_LEFT_IT[] PROGMEM = "Sinistra [um]"; +const char MSG_BED_CORRECTION_LEFT_ES[] PROGMEM = "Izquierda [um]"; +const char MSG_BED_CORRECTION_LEFT_PL[] PROGMEM = "W lewo [um]"; +const char MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; +const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_LEFT_EN, + MSG_BED_CORRECTION_LEFT_CZ, + MSG_BED_CORRECTION_LEFT_IT, + MSG_BED_CORRECTION_LEFT_ES, + MSG_BED_CORRECTION_LEFT_PL, + MSG_BED_CORRECTION_LEFT_DE +}; + +const char MSG_BED_CORRECTION_MENU_EN[] PROGMEM = "Bed level correct"; +const char MSG_BED_CORRECTION_MENU_CZ[] PROGMEM = "Korekce podlozky"; +const char MSG_BED_CORRECTION_MENU_IT[] PROGMEM = "Correz. liv.letto"; +const char MSG_BED_CORRECTION_MENU_ES[] PROGMEM = "Corr. de la cama"; +const char MSG_BED_CORRECTION_MENU_PL[] PROGMEM = "Korekta podkladki"; +const char MSG_BED_CORRECTION_MENU_DE[] PROGMEM = "Bett level korrekt"; +const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_MENU_EN, + MSG_BED_CORRECTION_MENU_CZ, + MSG_BED_CORRECTION_MENU_IT, + MSG_BED_CORRECTION_MENU_ES, + MSG_BED_CORRECTION_MENU_PL, + MSG_BED_CORRECTION_MENU_DE +}; + +const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]"; +const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]"; +const char MSG_BED_CORRECTION_REAR_IT[] PROGMEM = "Retro [um]"; +const char MSG_BED_CORRECTION_REAR_ES[] PROGMEM = "Atras [um]"; +const char MSG_BED_CORRECTION_REAR_PL[] PROGMEM = "Do tylu [um]"; +const char MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; +const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_REAR_EN, + MSG_BED_CORRECTION_REAR_CZ, + MSG_BED_CORRECTION_REAR_IT, + MSG_BED_CORRECTION_REAR_ES, + MSG_BED_CORRECTION_REAR_PL, + MSG_BED_CORRECTION_REAR_DE +}; + +const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; +const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Zuruecksetzen"; +const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_DE +}; + +const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side[um]"; +const char MSG_BED_CORRECTION_RIGHT_CZ[] PROGMEM = "Vpravo [um]"; +const char MSG_BED_CORRECTION_RIGHT_IT[] PROGMEM = "Destra [um]"; +const char MSG_BED_CORRECTION_RIGHT_ES[] PROGMEM = "Derecha [um]"; +const char MSG_BED_CORRECTION_RIGHT_PL[] PROGMEM = "W prawo [um]"; +const char MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; +const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_RIGHT_EN, + MSG_BED_CORRECTION_RIGHT_CZ, + MSG_BED_CORRECTION_RIGHT_IT, + MSG_BED_CORRECTION_RIGHT_ES, + MSG_BED_CORRECTION_RIGHT_PL, + MSG_BED_CORRECTION_RIGHT_DE +}; + +const char MSG_BED_DONE_EN[] PROGMEM = "Bed done"; +const char MSG_BED_DONE_CZ[] PROGMEM = "Bed OK."; +const char MSG_BED_DONE_IT[] PROGMEM = "Piatto fatto."; +const char MSG_BED_DONE_ES[] PROGMEM = "Base preparada"; +const char MSG_BED_DONE_PL[] PROGMEM = "Stolik OK."; +const char MSG_BED_DONE_DE[] PROGMEM = "Bett OK"; +const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_DONE_EN, + MSG_BED_DONE_CZ, + MSG_BED_DONE_IT, + MSG_BED_DONE_ES, + MSG_BED_DONE_PL, + MSG_BED_DONE_DE +}; + +const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; +const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; +const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto"; +const char MSG_BED_HEATING_ES[] PROGMEM = "Calentando Base"; +const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; +const char MSG_BED_HEATING_DE[] PROGMEM = "Bett aufwaermen"; +const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_HEATING_EN, + MSG_BED_HEATING_CZ, + MSG_BED_HEATING_IT, + MSG_BED_HEATING_ES, + MSG_BED_HEATING_PL, + MSG_BED_HEATING_DE +}; + +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_EN[] PROGMEM = "Bed leveling failed. Sensor triggered too high. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_IT[] PROGMEM = "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_ES[] PROGMEM = "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_PL[] PROGMEM = "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde zu hoch ausgeloest. Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_POINT_HIGH_EN, + MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ, + MSG_BED_LEVELING_FAILED_POINT_HIGH_IT, + MSG_BED_LEVELING_FAILED_POINT_HIGH_ES, + MSG_BED_LEVELING_FAILED_POINT_HIGH_PL, + MSG_BED_LEVELING_FAILED_POINT_HIGH_DE +}; + +const char MSG_BED_LEVELING_FAILED_POINT_LOW_EN[] PROGMEM = "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_IT[] PROGMEM = "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_ES[] PROGMEM = "Nivelacion fallada. Sensor no funciona. Escombros en Boqui.? Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_PL[] PROGMEM = "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde nicht ausgeloest. Schmutzige Duese? Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_POINT_LOW_EN, + MSG_BED_LEVELING_FAILED_POINT_LOW_CZ, + MSG_BED_LEVELING_FAILED_POINT_LOW_IT, + MSG_BED_LEVELING_FAILED_POINT_LOW_ES, + MSG_BED_LEVELING_FAILED_POINT_LOW_PL, + MSG_BED_LEVELING_FAILED_POINT_LOW_DE +}; + +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN[] PROGMEM = "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT[] PROGMEM = "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES[] PROGMEM = "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL[] PROGMEM = "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor nicht angeschlossen oder Kabel defekt. Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration failed. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration failed. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Linker voderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration failed. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN[] PROGMEM = "XYZ calibration failed. Please consult the manual."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ[] PROGMEM = "Kalibrace XYZ selhala. Nahlednete do manualu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT[] PROGMEM = "Calibrazione XYZ fallita. Si prega di consultare il manuale."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES[] PROGMEM = "Calibracion XYZ fallada. Consultar el manual por favor."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL[] PROGMEM = "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN[] PROGMEM = "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN[] PROGMEM = "XYZ calibration failed. Bed calibration point was not found."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ[] PROGMEM = "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT[] PROGMEM = "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES[] PROGMEM = "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL[] PROGMEM = "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "XYZ calibration all right. Skew will be corrected automatically."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind sehr schief. Schiefheit wird automatisch korrigiert."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind etwas schief. Schiefheit wird automatisch korrigiert. Gut gemacht!"; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration compromised. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE +}; + +const char MSG_BEGIN_FILE_LIST_EN[] PROGMEM = "Begin file list"; +const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[1] PROGMEM = { + MSG_BEGIN_FILE_LIST_EN +}; + +const char MSG_BROWNOUT_RESET_EN[] PROGMEM = " Brown out Reset"; +const char * const MSG_BROWNOUT_RESET_LANG_TABLE[1] PROGMEM = { + MSG_BROWNOUT_RESET_EN +}; + +const char MSG_CALIBRATE_BED_EN[] PROGMEM = "Calibrate XYZ"; +const char MSG_CALIBRATE_BED_CZ[] PROGMEM = "Kalibrace XYZ"; +const char MSG_CALIBRATE_BED_IT[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_ES[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_PL[] PROGMEM = "Kalibracja XYZ"; +const char MSG_CALIBRATE_BED_DE[] PROGMEM = "Kalibrierung XYZ"; +const char * const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_BED_EN, + MSG_CALIBRATE_BED_CZ, + MSG_CALIBRATE_BED_IT, + MSG_CALIBRATE_BED_ES, + MSG_CALIBRATE_BED_PL, + MSG_CALIBRATE_BED_DE +}; + +const char MSG_CALIBRATE_BED_RESET_EN[] PROGMEM = "Reset XYZ calibr."; +const char MSG_CALIBRATE_BED_RESET_CZ[] PROGMEM = "Reset XYZ kalibr."; +const char MSG_CALIBRATE_BED_RESET_PL[] PROGMEM = "Reset kalibr. XYZ"; +const char MSG_CALIBRATE_BED_RESET_DE[] PROGMEM = "Reset XYZ Kalibr."; +const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_CZ, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_PL, + MSG_CALIBRATE_BED_RESET_DE +}; + +const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E"; +const char MSG_CALIBRATE_E_CZ[] PROGMEM = "Kalibrovat E"; +const char MSG_CALIBRATE_E_IT[] PROGMEM = "Calibra E"; +const char MSG_CALIBRATE_E_ES[] PROGMEM = "Calibrar E"; +const char MSG_CALIBRATE_E_PL[] PROGMEM = "Kalibruj E"; +const char MSG_CALIBRATE_E_DE[] PROGMEM = "Kalibriere E"; +const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_E_EN, + MSG_CALIBRATE_E_CZ, + MSG_CALIBRATE_E_IT, + MSG_CALIBRATE_E_ES, + MSG_CALIBRATE_E_PL, + MSG_CALIBRATE_E_DE +}; + +const char MSG_CALIBRATE_PINDA_EN[] PROGMEM = "Calibrate"; +const char MSG_CALIBRATE_PINDA_CZ[] PROGMEM = "Zkalibrovat"; +const char MSG_CALIBRATE_PINDA_IT[] PROGMEM = "Calibrare"; +const char MSG_CALIBRATE_PINDA_ES[] PROGMEM = "Calibrar"; +const char MSG_CALIBRATE_PINDA_PL[] PROGMEM = "Skalibrowac"; +const char MSG_CALIBRATE_PINDA_DE[] PROGMEM = "PINDA Temp. Kal."; +const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_PINDA_EN, + MSG_CALIBRATE_PINDA_CZ, + MSG_CALIBRATE_PINDA_IT, + MSG_CALIBRATE_PINDA_ES, + MSG_CALIBRATE_PINDA_PL, + MSG_CALIBRATE_PINDA_DE +}; + +const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; +const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; +const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; +const char MSG_CALIBRATION_PINDA_MENU_ES[] PROGMEM = "Calibracion temp."; +const char MSG_CALIBRATION_PINDA_MENU_PL[] PROGMEM = "Cieplna kalibr."; +const char MSG_CALIBRATION_PINDA_MENU_DE[] PROGMEM = "PINDA Temp. Kal."; +const char * const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATION_PINDA_MENU_EN, + MSG_CALIBRATION_PINDA_MENU_CZ, + MSG_CALIBRATION_PINDA_MENU_IT, + MSG_CALIBRATION_PINDA_MENU_ES, + MSG_CALIBRATION_PINDA_MENU_PL, + MSG_CALIBRATION_PINDA_MENU_DE +}; + +const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD"; +const char MSG_CARD_MENU_CZ[] PROGMEM = "Tisk z SD"; +const char MSG_CARD_MENU_IT[] PROGMEM = "Stampa da SD"; +const char MSG_CARD_MENU_ES[] PROGMEM = "Menu tarjeta SD"; +const char MSG_CARD_MENU_PL[] PROGMEM = "Druk z SD"; +const char MSG_CARD_MENU_DE[] PROGMEM = "Drucken von SD"; +const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CARD_MENU_EN, + MSG_CARD_MENU_CZ, + MSG_CARD_MENU_IT, + MSG_CARD_MENU_ES, + MSG_CARD_MENU_PL, + MSG_CARD_MENU_DE +}; + +const char MSG_CENTER_EN[] PROGMEM = "Center:"; +const char MSG_CENTER_CZ[] PROGMEM = "Stred:"; +const char MSG_CENTER_IT[] PROGMEM = "Centro:"; +const char MSG_CENTER_ES[] PROGMEM = "Centro:"; +const char MSG_CENTER_PL[] PROGMEM = "Srodek:"; +const char MSG_CENTER_DE[] PROGMEM = "Mitte:"; +const char * const MSG_CENTER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CENTER_EN, + MSG_CENTER_CZ, + MSG_CENTER_IT, + MSG_CENTER_ES, + MSG_CENTER_PL, + MSG_CENTER_DE +}; + +const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder"; +const char MSG_CHANGE_EXTR_CZ[] PROGMEM = "Zmenit extruder"; +const char MSG_CHANGE_EXTR_IT[] PROGMEM = "Cambio estrusore."; +const char MSG_CHANGE_EXTR_ES[] PROGMEM = "Cambiar extrusor."; +const char MSG_CHANGE_EXTR_PL[] PROGMEM = "Zmienic ekstruder"; +const char MSG_CHANGE_EXTR_DE[] PROGMEM = "Wechsel extruder"; +const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGE_EXTR_EN, + MSG_CHANGE_EXTR_CZ, + MSG_CHANGE_EXTR_IT, + MSG_CHANGE_EXTR_ES, + MSG_CHANGE_EXTR_PL, + MSG_CHANGE_EXTR_DE +}; + +const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; +const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; +const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!"; +const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambio correcto"; +const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; +const char MSG_CHANGE_SUCCESS_DE[] PROGMEM = "Wechsel erfolgreich!"; +const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGE_SUCCESS_EN, + MSG_CHANGE_SUCCESS_CZ, + MSG_CHANGE_SUCCESS_IT, + MSG_CHANGE_SUCCESS_ES, + MSG_CHANGE_SUCCESS_PL, + MSG_CHANGE_SUCCESS_DE +}; + +const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; +const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; +const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; +const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; +const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; +const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; +const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGING_FILAMENT_EN, + MSG_CHANGING_FILAMENT_CZ, + MSG_CHANGING_FILAMENT_IT, + MSG_CHANGING_FILAMENT_ES, + MSG_CHANGING_FILAMENT_PL, + MSG_CHANGING_FILAMENT_DE +}; + +const char MSG_CHOOSE_EXTRUDER_EN[] PROGMEM = "Choose extruder:"; +const char MSG_CHOOSE_EXTRUDER_CZ[] PROGMEM = "Vyberte extruder:"; +const char MSG_CHOOSE_EXTRUDER_IT[] PROGMEM = "Seleziona estrusore:"; +const char MSG_CHOOSE_EXTRUDER_ES[] PROGMEM = "Elegir extrusor:"; +const char MSG_CHOOSE_EXTRUDER_PL[] PROGMEM = "Wybierz ekstruder"; +const char MSG_CHOOSE_EXTRUDER_DE[] PROGMEM = "Waehlen Sie Extruder"; +const char * const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHOOSE_EXTRUDER_EN, + MSG_CHOOSE_EXTRUDER_CZ, + MSG_CHOOSE_EXTRUDER_IT, + MSG_CHOOSE_EXTRUDER_ES, + MSG_CHOOSE_EXTRUDER_PL, + MSG_CHOOSE_EXTRUDER_DE +}; + +const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done."; +const char MSG_CLEAN_NOZZLE_E_CZ[] PROGMEM = "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem."; +const char MSG_CLEAN_NOZZLE_E_IT[] PROGMEM = "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."; +const char MSG_CLEAN_NOZZLE_E_ES[] PROGMEM = "E calibrado. Limpiar la boquilla. Haga clic una vez terminado."; +const char MSG_CLEAN_NOZZLE_E_PL[] PROGMEM = "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "; +const char MSG_CLEAN_NOZZLE_E_DE[] PROGMEM = "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."; +const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CLEAN_NOZZLE_E_EN, + MSG_CLEAN_NOZZLE_E_CZ, + MSG_CLEAN_NOZZLE_E_IT, + MSG_CLEAN_NOZZLE_E_ES, + MSG_CLEAN_NOZZLE_E_PL, + MSG_CLEAN_NOZZLE_E_DE +}; + +const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card"; +const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = { + MSG_CNG_SDCARD_EN +}; + +const char MSG_CONFIGURATION_VER_EN[] PROGMEM = " Last Updated: "; +const char * const MSG_CONFIGURATION_VER_LANG_TABLE[1] PROGMEM = { + MSG_CONFIGURATION_VER_EN +}; + +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN[] PROGMEM = "Are left and right Z~carriages all up?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ[] PROGMEM = "Dojely oba Z voziky k~hornimu dorazu?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT[] PROGMEM = "I carrelli Z sin/des sono altezza max?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES[] PROGMEM = "Carros Z izq./der. estan arriba maximo?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL[] PROGMEM = "Oba wozki dojechaly do gornej ramy?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE[] PROGMEM = "Sind beide Z Schlitten ganz oben?"; +const char * const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE +}; + +const char MSG_CONFIRM_NOZZLE_CLEAN_EN[] PROGMEM = "Please clean the nozzle for calibration. Click when done."; +const char MSG_CONFIRM_NOZZLE_CLEAN_CZ[] PROGMEM = "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_IT[] PROGMEM = "Pulire l'ugello per la calibrazione, poi fare click."; +const char MSG_CONFIRM_NOZZLE_CLEAN_ES[] PROGMEM = "Limpiar boquilla para calibracion. Click cuando acabes."; +const char MSG_CONFIRM_NOZZLE_CLEAN_PL[] PROGMEM = "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_DE[] PROGMEM = "Bitte reinigen Sie die Duese vor Kalibrierung. Klicken wenn sauber."; +const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_NOZZLE_CLEAN_EN, + MSG_CONFIRM_NOZZLE_CLEAN_CZ, + MSG_CONFIRM_NOZZLE_CLEAN_IT, + MSG_CONFIRM_NOZZLE_CLEAN_ES, + MSG_CONFIRM_NOZZLE_CLEAN_PL, + MSG_CONFIRM_NOZZLE_CLEAN_DE +}; + +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN[] PROGMEM = "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber."; +const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE +}; + +const char MSG_CONTROL_EN[] PROGMEM = "Control"; +const char * const MSG_CONTROL_LANG_TABLE[1] PROGMEM = { + MSG_CONTROL_EN +}; + +const char MSG_COOLDOWN_EN[] PROGMEM = "Cooldown"; +const char MSG_COOLDOWN_CZ[] PROGMEM = "Zchladit"; +const char MSG_COOLDOWN_IT[] PROGMEM = "Raffredda"; +const char MSG_COOLDOWN_ES[] PROGMEM = "Enfriar"; +const char MSG_COOLDOWN_PL[] PROGMEM = "Wychlodzic"; +const char MSG_COOLDOWN_DE[] PROGMEM = "Abkuehlen"; +const char * const MSG_COOLDOWN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_COOLDOWN_EN, + MSG_COOLDOWN_CZ, + MSG_COOLDOWN_IT, + MSG_COOLDOWN_ES, + MSG_COOLDOWN_PL, + MSG_COOLDOWN_DE +}; + +const char MSG_CORRECTLY_EN[] PROGMEM = "Changed correctly?"; +const char MSG_CORRECTLY_CZ[] PROGMEM = "Vymena ok?"; +const char MSG_CORRECTLY_IT[] PROGMEM = "Cambiato corr.?"; +const char MSG_CORRECTLY_ES[] PROGMEM = "Cambiado correct.?"; +const char MSG_CORRECTLY_PL[] PROGMEM = "Wymiana ok?"; +const char MSG_CORRECTLY_DE[] PROGMEM = "Wechsel ok?"; +const char * const MSG_CORRECTLY_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CORRECTLY_EN, + MSG_CORRECTLY_CZ, + MSG_CORRECTLY_IT, + MSG_CORRECTLY_ES, + MSG_CORRECTLY_PL, + MSG_CORRECTLY_DE +}; + +const char MSG_COUNT_X_EN[] PROGMEM = " Count X: "; +const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { + MSG_COUNT_X_EN +}; + +const char MSG_CURRENT_EN[] PROGMEM = "Current"; +const char MSG_CURRENT_CZ[] PROGMEM = "Pouze aktualni"; +const char MSG_CURRENT_IT[] PROGMEM = "Attuale"; +const char MSG_CURRENT_ES[] PROGMEM = "Actual"; +const char MSG_CURRENT_PL[] PROGMEM = "Tylko aktualne"; +const char MSG_CURRENT_DE[] PROGMEM = "Aktuelles"; +const char * const MSG_CURRENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CURRENT_EN, + MSG_CURRENT_CZ, + MSG_CURRENT_IT, + MSG_CURRENT_ES, + MSG_CURRENT_PL, + MSG_CURRENT_DE +}; + +const char MSG_DATE_EN[] PROGMEM = "Date:"; +const char MSG_DATE_CZ[] PROGMEM = "Datum:"; +const char MSG_DATE_IT[] PROGMEM = "Data"; +const char MSG_DATE_ES[] PROGMEM = "Fecha:"; +const char MSG_DATE_PL[] PROGMEM = "Data:"; +const char MSG_DATE_DE[] PROGMEM = "Datum:"; +const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DATE_EN, + MSG_DATE_CZ, + MSG_DATE_IT, + MSG_DATE_ES, + MSG_DATE_PL, + MSG_DATE_DE +}; + +const char MSG_DEFAULT_SETTINGS_LOADED_EN[] PROGMEM = "Default settings loaded"; +const char MSG_DEFAULT_SETTINGS_LOADED_DE[] PROGMEM = "Standardeinstellungen geladen"; +const char * const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_DE +}; + +const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers"; +const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory"; +const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori"; +const char MSG_DISABLE_STEPPERS_ES[] PROGMEM = "Apagar motores"; +const char MSG_DISABLE_STEPPERS_PL[] PROGMEM = "Wylaczyc silniki"; +const char MSG_DISABLE_STEPPERS_DE[] PROGMEM = "Motoren aus"; +const char * const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DISABLE_STEPPERS_EN, + MSG_DISABLE_STEPPERS_CZ, + MSG_DISABLE_STEPPERS_IT, + MSG_DISABLE_STEPPERS_ES, + MSG_DISABLE_STEPPERS_PL, + MSG_DISABLE_STEPPERS_DE +}; + +const char MSG_DWELL_EN[] PROGMEM = "Sleep..."; +const char MSG_DWELL_IT[] PROGMEM = "Sospensione..."; +const char MSG_DWELL_ES[] PROGMEM = "En espera"; +const char MSG_DWELL_DE[] PROGMEM = "Warten..."; +const char * const MSG_DWELL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DWELL_EN, + MSG_DWELL_EN, + MSG_DWELL_IT, + MSG_DWELL_ES, + MSG_DWELL_EN, + MSG_DWELL_DE +}; + +const char MSG_ENDSTOPS_HIT_EN[] PROGMEM = "endstops hit: "; +const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOPS_HIT_EN +}; + +const char MSG_ENDSTOP_HIT_EN[] PROGMEM = "TRIGGERED"; +const char * const MSG_ENDSTOP_HIT_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOP_HIT_EN +}; + +const char MSG_ENDSTOP_OPEN_EN[] PROGMEM = "open"; +const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOP_OPEN_EN +}; + +const char MSG_END_FILE_LIST_EN[] PROGMEM = "End file list"; +const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { + MSG_END_FILE_LIST_EN +}; + +const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; +const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; +const char MSG_ERROR_IT[] PROGMEM = "ERRORE:"; +const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; +const char MSG_ERROR_DE[] PROGMEM = "FEHLER:"; +const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ERROR_EN, + MSG_ERROR_CZ, + MSG_ERROR_IT, + MSG_ERROR_EN, + MSG_ERROR_PL, + MSG_ERROR_DE +}; + +const char MSG_ERR_CHECKSUM_MISMATCH_EN[] PROGMEM = "checksum mismatch, Last Line: "; +const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1] PROGMEM = { + MSG_ERR_CHECKSUM_MISMATCH_EN +}; + +const char MSG_ERR_COLD_EXTRUDE_STOP_EN[] PROGMEM = " cold extrusion prevented"; +const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { + MSG_ERR_COLD_EXTRUDE_STOP_EN +}; + +const char MSG_ERR_KILLED_EN[] PROGMEM = "Printer halted. kill() called!"; +const char * const MSG_ERR_KILLED_LANG_TABLE[1] PROGMEM = { + MSG_ERR_KILLED_EN +}; + +const char MSG_ERR_LINE_NO_EN[] PROGMEM = "Line Number is not Last Line Number+1, Last Line: "; +const char * const MSG_ERR_LINE_NO_LANG_TABLE[1] PROGMEM = { + MSG_ERR_LINE_NO_EN +}; + +const char MSG_ERR_LONG_EXTRUDE_STOP_EN[] PROGMEM = " too long extrusion prevented"; +const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { + MSG_ERR_LONG_EXTRUDE_STOP_EN +}; + +const char MSG_ERR_NO_CHECKSUM_EN[] PROGMEM = "No Checksum with line number, Last Line: "; +const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_CHECKSUM_EN +}; + +const char MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN[] PROGMEM = "No Line Number with checksum, Last Line: "; +const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN +}; + +const char MSG_ERR_NO_THERMISTORS_EN[] PROGMEM = "No thermistors - no temperature"; +const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_THERMISTORS_EN +}; + +const char MSG_ERR_STOPPED_EN[] PROGMEM = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; +const char * const MSG_ERR_STOPPED_LANG_TABLE[1] PROGMEM = { + MSG_ERR_STOPPED_EN +}; + +const char MSG_EXTERNAL_RESET_EN[] PROGMEM = " External Reset"; +const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = { + MSG_EXTERNAL_RESET_EN +}; + +const char MSG_EXTRUDER_EN[] PROGMEM = "Extruder"; +const char MSG_EXTRUDER_IT[] PROGMEM = "Estrusore"; +const char MSG_EXTRUDER_ES[] PROGMEM = "Extrusor"; +const char MSG_EXTRUDER_PL[] PROGMEM = "Ekstruder"; +const char * const MSG_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_EN, + MSG_EXTRUDER_EN, + MSG_EXTRUDER_IT, + MSG_EXTRUDER_ES, + MSG_EXTRUDER_PL, + MSG_EXTRUDER_EN +}; + +const char MSG_EXTRUDER_1_EN[] PROGMEM = "Extruder 1"; +const char MSG_EXTRUDER_1_IT[] PROGMEM = "Estrusore 1"; +const char MSG_EXTRUDER_1_ES[] PROGMEM = "Extrusor 1"; +const char MSG_EXTRUDER_1_PL[] PROGMEM = "Ekstruder 1"; +const char * const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_IT, + MSG_EXTRUDER_1_ES, + MSG_EXTRUDER_1_PL, + MSG_EXTRUDER_1_EN +}; + +const char MSG_EXTRUDER_2_EN[] PROGMEM = "Extruder 2"; +const char MSG_EXTRUDER_2_IT[] PROGMEM = "Estrusore 2"; +const char MSG_EXTRUDER_2_ES[] PROGMEM = "Extrusor 2"; +const char MSG_EXTRUDER_2_PL[] PROGMEM = "Ekstruder 2"; +const char * const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_IT, + MSG_EXTRUDER_2_ES, + MSG_EXTRUDER_2_PL, + MSG_EXTRUDER_2_EN +}; + +const char MSG_EXTRUDER_3_EN[] PROGMEM = "Extruder 3"; +const char MSG_EXTRUDER_3_IT[] PROGMEM = "Estrusore 3"; +const char MSG_EXTRUDER_3_ES[] PROGMEM = "Extrusor 3"; +const char MSG_EXTRUDER_3_PL[] PROGMEM = "Ekstruder 3"; +const char * const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_IT, + MSG_EXTRUDER_3_ES, + MSG_EXTRUDER_3_PL, + MSG_EXTRUDER_3_EN +}; + +const char MSG_EXTRUDER_4_EN[] PROGMEM = "Extruder 4"; +const char MSG_EXTRUDER_4_IT[] PROGMEM = "Estrusore 4"; +const char MSG_EXTRUDER_4_ES[] PROGMEM = "Extrusor 4"; +const char MSG_EXTRUDER_4_PL[] PROGMEM = "Ekstruder 4"; +const char * const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_IT, + MSG_EXTRUDER_4_ES, + MSG_EXTRUDER_4_PL, + MSG_EXTRUDER_4_EN +}; + +const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done."; +const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."; +const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."; +const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."; +const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."; +const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; +const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_E_CAL_KNOB_EN, + MSG_E_CAL_KNOB_CZ, + MSG_E_CAL_KNOB_IT, + MSG_E_CAL_KNOB_ES, + MSG_E_CAL_KNOB_PL, + MSG_E_CAL_KNOB_DE +}; + +const char MSG_Enqueing_EN[] PROGMEM = "enqueing \""; +const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = { + MSG_Enqueing_EN +}; + +const char MSG_FACTOR_EN[] PROGMEM = " \002 Fact"; +const char * const MSG_FACTOR_LANG_TABLE[1] PROGMEM = { + MSG_FACTOR_EN +}; + +const char MSG_FAN_SPEED_EN[] PROGMEM = "Fan speed"; +const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; +const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; +const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; +const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; +const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; +const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FAN_SPEED_EN, + MSG_FAN_SPEED_CZ, + MSG_FAN_SPEED_IT, + MSG_FAN_SPEED_ES, + MSG_FAN_SPEED_PL, + MSG_FAN_SPEED_DE +}; + +const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; +const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = { + MSG_FARM_CARD_MENU_EN +}; + +const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament"; +const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; +const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; +const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; +const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; +const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; +const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENTCHANGE_EN, + MSG_FILAMENTCHANGE_CZ, + MSG_FILAMENTCHANGE_IT, + MSG_FILAMENTCHANGE_ES, + MSG_FILAMENTCHANGE_PL, + MSG_FILAMENTCHANGE_DE +}; + +const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?"; +const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?"; +const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?"; +const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?"; +const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?"; +const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; +const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_CLEAN_EN, + MSG_FILAMENT_CLEAN_CZ, + MSG_FILAMENT_CLEAN_IT, + MSG_FILAMENT_CLEAN_ES, + MSG_FILAMENT_CLEAN_PL, + MSG_FILAMENT_CLEAN_DE +}; + +const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; +const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte filament do extruderu 1. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare."; +const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T0_DE[] PROGMEM = "Filament in extruder 1 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T0_EN, + MSG_FILAMENT_LOADING_T0_CZ, + MSG_FILAMENT_LOADING_T0_IT, + MSG_FILAMENT_LOADING_T0_ES, + MSG_FILAMENT_LOADING_T0_PL, + MSG_FILAMENT_LOADING_T0_DE +}; + +const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; +const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte filament do extruderu 2. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare."; +const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T1_DE[] PROGMEM = "Filament in extruder 2 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T1_EN, + MSG_FILAMENT_LOADING_T1_CZ, + MSG_FILAMENT_LOADING_T1_IT, + MSG_FILAMENT_LOADING_T1_ES, + MSG_FILAMENT_LOADING_T1_PL, + MSG_FILAMENT_LOADING_T1_DE +}; + +const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; +const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte filament do extruderu 3. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare."; +const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T2_DE[] PROGMEM = "Filament in extruder 3 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T2_EN, + MSG_FILAMENT_LOADING_T2_CZ, + MSG_FILAMENT_LOADING_T2_IT, + MSG_FILAMENT_LOADING_T2_ES, + MSG_FILAMENT_LOADING_T2_PL, + MSG_FILAMENT_LOADING_T2_DE +}; + +const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; +const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte filament do extruderu 4. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare."; +const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T3_DE[] PROGMEM = "Filament in extruder 4 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T3_EN, + MSG_FILAMENT_LOADING_T3_CZ, + MSG_FILAMENT_LOADING_T3_IT, + MSG_FILAMENT_LOADING_T3_ES, + MSG_FILAMENT_LOADING_T3_PL, + MSG_FILAMENT_LOADING_T3_DE +}; + +const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; +const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { + MSG_FILE_PRINTED_EN +}; + +const char MSG_FILE_SAVED_EN[] PROGMEM = "Done saving file."; +const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = { + MSG_FILE_SAVED_EN +}; + +const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait."; +const char MSG_FIL_ADJUSTING_CZ[] PROGMEM = "Probiha srovnani filamentu. Prosim cekejte."; +const char MSG_FIL_ADJUSTING_IT[] PROGMEM = "Filamento in fase di regolazione. Attendere prego."; +const char MSG_FIL_ADJUSTING_ES[] PROGMEM = "Ajustando filamentos. Esperar por favor."; +const char MSG_FIL_ADJUSTING_PL[] PROGMEM = "Przebiega wyrownanie filamentow. Prosze czekac."; +const char MSG_FIL_ADJUSTING_DE[] PROGMEM = "Einstellen Filament. Bitte warten."; +const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIL_ADJUSTING_EN, + MSG_FIL_ADJUSTING_CZ, + MSG_FIL_ADJUSTING_IT, + MSG_FIL_ADJUSTING_ES, + MSG_FIL_ADJUSTING_PL, + MSG_FIL_ADJUSTING_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE[] PROGMEM = "Wiederholung "; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Searching bed calibration point"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Hledam kalibracni bod podlozky"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Ricerca del letto punto di calibraz."; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Buscando cama punto de calibracion"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Szukam punktu kalibracyjnego podkladki"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Suche Bett Kalibrierpunkt"; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE +}; + +const char MSG_FINISHING_MOVEMENTS_EN[] PROGMEM = "Finishing movements"; +const char MSG_FINISHING_MOVEMENTS_CZ[] PROGMEM = "Dokoncovani pohybu"; +const char MSG_FINISHING_MOVEMENTS_IT[] PROGMEM = "Arresto in corso"; +const char MSG_FINISHING_MOVEMENTS_ES[] PROGMEM = "Term. movimientos"; +const char MSG_FINISHING_MOVEMENTS_PL[] PROGMEM = "Konczenie druku"; +const char MSG_FINISHING_MOVEMENTS_DE[] PROGMEM = "Bewegungen beenden"; +const char * const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FINISHING_MOVEMENTS_EN, + MSG_FINISHING_MOVEMENTS_CZ, + MSG_FINISHING_MOVEMENTS_IT, + MSG_FINISHING_MOVEMENTS_ES, + MSG_FINISHING_MOVEMENTS_PL, + MSG_FINISHING_MOVEMENTS_DE +}; + +const char MSG_FLOW_EN[] PROGMEM = "Flow"; +const char MSG_FLOW_CZ[] PROGMEM = "Prutok"; +const char MSG_FLOW_IT[] PROGMEM = "Flusso"; +const char MSG_FLOW_ES[] PROGMEM = "Flujo"; +const char MSG_FLOW_PL[] PROGMEM = "Przeplyw"; +const char MSG_FLOW_DE[] PROGMEM = "Durchfluss"; +const char * const MSG_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FLOW_EN, + MSG_FLOW_CZ, + MSG_FLOW_IT, + MSG_FLOW_ES, + MSG_FLOW_PL, + MSG_FLOW_DE +}; + +const char MSG_FLOW0_EN[] PROGMEM = "Flow 0"; +const char * const MSG_FLOW0_LANG_TABLE[1] PROGMEM = { + MSG_FLOW0_EN +}; + +const char MSG_FLOW1_EN[] PROGMEM = "Flow 1"; +const char * const MSG_FLOW1_LANG_TABLE[1] PROGMEM = { + MSG_FLOW1_EN +}; + +const char MSG_FLOW2_EN[] PROGMEM = "Flow 2"; +const char * const MSG_FLOW2_LANG_TABLE[1] PROGMEM = { + MSG_FLOW2_EN +}; + +const char MSG_FOLLOW_CALIBRATION_FLOW_EN[] PROGMEM = "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_CZ[] PROGMEM = "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."; +const char MSG_FOLLOW_CALIBRATION_FLOW_IT[] PROGMEM = "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."; +const char MSG_FOLLOW_CALIBRATION_FLOW_ES[] PROGMEM = "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_PL[] PROGMEM = "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."; +const char MSG_FOLLOW_CALIBRATION_FLOW_DE[] PROGMEM = "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow."; +const char * const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FOLLOW_CALIBRATION_FLOW_EN, + MSG_FOLLOW_CALIBRATION_FLOW_CZ, + MSG_FOLLOW_CALIBRATION_FLOW_IT, + MSG_FOLLOW_CALIBRATION_FLOW_ES, + MSG_FOLLOW_CALIBRATION_FLOW_PL, + MSG_FOLLOW_CALIBRATION_FLOW_DE +}; + +const char MSG_FREE_MEMORY_EN[] PROGMEM = " Free Memory: "; +const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { + MSG_FREE_MEMORY_EN +}; + +const char MSG_HEATING_EN[] PROGMEM = "Heating"; +const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; +const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; +const char MSG_HEATING_ES[] PROGMEM = "Calentando..."; +const char MSG_HEATING_PL[] PROGMEM = "Grzanie..."; +const char MSG_HEATING_DE[] PROGMEM = "Aufwaermen"; +const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HEATING_EN, + MSG_HEATING_CZ, + MSG_HEATING_IT, + MSG_HEATING_ES, + MSG_HEATING_PL, + MSG_HEATING_DE +}; + +const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; +const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; +const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo"; +const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentamiento final."; +const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; +const char MSG_HEATING_COMPLETE_DE[] PROGMEM = "Aufwaermen OK"; +const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HEATING_COMPLETE_EN, + MSG_HEATING_COMPLETE_CZ, + MSG_HEATING_COMPLETE_IT, + MSG_HEATING_COMPLETE_ES, + MSG_HEATING_COMPLETE_PL, + MSG_HEATING_COMPLETE_DE +}; + +const char MSG_HOMEYZ_EN[] PROGMEM = "Calibrate Z"; +const char MSG_HOMEYZ_CZ[] PROGMEM = "Kalibrovat Z"; +const char MSG_HOMEYZ_IT[] PROGMEM = "Calibra Z"; +const char MSG_HOMEYZ_ES[] PROGMEM = "Calibrar Z"; +const char MSG_HOMEYZ_PL[] PROGMEM = "Kalibruj Z"; +const char MSG_HOMEYZ_DE[] PROGMEM = "Kalibrieren Z"; +const char * const MSG_HOMEYZ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_EN, + MSG_HOMEYZ_CZ, + MSG_HOMEYZ_IT, + MSG_HOMEYZ_ES, + MSG_HOMEYZ_PL, + MSG_HOMEYZ_DE +}; + +const char MSG_HOMEYZ_DONE_EN[] PROGMEM = "Calibration done"; +const char MSG_HOMEYZ_DONE_CZ[] PROGMEM = "Kalibrace OK"; +const char MSG_HOMEYZ_DONE_IT[] PROGMEM = "Calibrazione OK"; +const char MSG_HOMEYZ_DONE_ES[] PROGMEM = "Calibracion OK"; +const char MSG_HOMEYZ_DONE_PL[] PROGMEM = "Kalibracja OK"; +const char MSG_HOMEYZ_DONE_DE[] PROGMEM = "Kalibrierung OK"; +const char * const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_DONE_EN, + MSG_HOMEYZ_DONE_CZ, + MSG_HOMEYZ_DONE_IT, + MSG_HOMEYZ_DONE_ES, + MSG_HOMEYZ_DONE_PL, + MSG_HOMEYZ_DONE_DE +}; + +const char MSG_HOMEYZ_PROGRESS_EN[] PROGMEM = "Calibrating Z"; +const char MSG_HOMEYZ_PROGRESS_CZ[] PROGMEM = "Kalibruji Z"; +const char MSG_HOMEYZ_PROGRESS_IT[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_ES[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_PL[] PROGMEM = "Kalibruje Z"; +const char MSG_HOMEYZ_PROGRESS_DE[] PROGMEM = "Kalibriere Z"; +const char * const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_PROGRESS_EN, + MSG_HOMEYZ_PROGRESS_CZ, + MSG_HOMEYZ_PROGRESS_IT, + MSG_HOMEYZ_PROGRESS_ES, + MSG_HOMEYZ_PROGRESS_PL, + MSG_HOMEYZ_PROGRESS_DE +}; + +const char MSG_HOTEND_OFFSET_EN[] PROGMEM = "Hotend offsets:"; +const char * const MSG_HOTEND_OFFSET_LANG_TABLE[1] PROGMEM = { + MSG_HOTEND_OFFSET_EN +}; + +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Improving bed calibration point"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Zlepsuji presnost kalibracniho bodu"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Perfezion. il letto punto di calibraz."; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Mejorando cama punto de calibracion"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Poprawiam precyzyjnosc punktu kalibracyjnego"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Genauigkeit verbessern bei Kalibrierpunkt"; +const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE +}; + +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 9"; +const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE +}; + +const char MSG_INIT_SDCARD_EN[] PROGMEM = "Init. SD card"; +const char * const MSG_INIT_SDCARD_LANG_TABLE[1] PROGMEM = { + MSG_INIT_SDCARD_EN +}; + +const char MSG_INSERT_FILAMENT_EN[] PROGMEM = "Insert filament"; +const char MSG_INSERT_FILAMENT_CZ[] PROGMEM = "Vlozte filament"; +const char MSG_INSERT_FILAMENT_IT[] PROGMEM = "Inserire filamento"; +const char MSG_INSERT_FILAMENT_ES[] PROGMEM = "Introducir filamento"; +const char MSG_INSERT_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_INSERT_FILAMENT_DE[] PROGMEM = "Filament einlegen"; +const char * const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_INSERT_FILAMENT_EN, + MSG_INSERT_FILAMENT_CZ, + MSG_INSERT_FILAMENT_IT, + MSG_INSERT_FILAMENT_ES, + MSG_INSERT_FILAMENT_PL, + MSG_INSERT_FILAMENT_DE +}; + +const char MSG_INVALID_EXTRUDER_EN[] PROGMEM = "Invalid extruder"; +const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_INVALID_EXTRUDER_EN +}; + +const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; +const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; +const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; +const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; +const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_KILLED_EN, + MSG_KILLED_EN, + MSG_KILLED_IT, + MSG_KILLED_ES, + MSG_KILLED_EN, + MSG_KILLED_DE +}; + +const char MSG_LANGUAGE_NAME_EN[] PROGMEM = "English"; +const char MSG_LANGUAGE_NAME_CZ[] PROGMEM = "Cestina"; +const char MSG_LANGUAGE_NAME_IT[] PROGMEM = "Italiano"; +const char MSG_LANGUAGE_NAME_ES[] PROGMEM = "Espanol"; +const char MSG_LANGUAGE_NAME_PL[] PROGMEM = "Polski"; +const char MSG_LANGUAGE_NAME_DE[] PROGMEM = "Deutsch"; +const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LANGUAGE_NAME_EN, + MSG_LANGUAGE_NAME_CZ, + MSG_LANGUAGE_NAME_IT, + MSG_LANGUAGE_NAME_ES, + MSG_LANGUAGE_NAME_PL, + MSG_LANGUAGE_NAME_DE +}; + +const char MSG_LANGUAGE_SELECT_EN[] PROGMEM = "Select language"; +const char MSG_LANGUAGE_SELECT_CZ[] PROGMEM = "Vyber jazyka"; +const char MSG_LANGUAGE_SELECT_IT[] PROGMEM = "Seleziona lingua"; +const char MSG_LANGUAGE_SELECT_ES[] PROGMEM = "Cambiae el idioma"; +const char MSG_LANGUAGE_SELECT_PL[] PROGMEM = "Wybor jezyka"; +const char MSG_LANGUAGE_SELECT_DE[] PROGMEM = "Waehle Sprache"; +const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LANGUAGE_SELECT_EN, + MSG_LANGUAGE_SELECT_CZ, + MSG_LANGUAGE_SELECT_IT, + MSG_LANGUAGE_SELECT_ES, + MSG_LANGUAGE_SELECT_PL, + MSG_LANGUAGE_SELECT_DE +}; + +const char MSG_LEFT_EN[] PROGMEM = "Left:"; +const char MSG_LEFT_CZ[] PROGMEM = "Levy:"; +const char MSG_LEFT_IT[] PROGMEM = "Sinistra:"; +const char MSG_LEFT_ES[] PROGMEM = "Izquierda:"; +const char MSG_LEFT_PL[] PROGMEM = "Lewy:"; +const char MSG_LEFT_DE[] PROGMEM = "Links:"; +const char * const MSG_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LEFT_EN, + MSG_LEFT_CZ, + MSG_LEFT_IT, + MSG_LEFT_ES, + MSG_LEFT_PL, + MSG_LEFT_DE +}; + +const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; +const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; +const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore"; +const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cambiando color"; +const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; +const char MSG_LOADING_COLOR_DE[] PROGMEM = "Lade Farbe"; +const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOADING_COLOR_EN, + MSG_LOADING_COLOR_CZ, + MSG_LOADING_COLOR_IT, + MSG_LOADING_COLOR_ES, + MSG_LOADING_COLOR_PL, + MSG_LOADING_COLOR_DE +}; + +const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; +const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; +const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; +const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; +const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; +const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament laedt"; +const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOADING_FILAMENT_EN, + MSG_LOADING_FILAMENT_CZ, + MSG_LOADING_FILAMENT_IT, + MSG_LOADING_FILAMENT_ES, + MSG_LOADING_FILAMENT_PL, + MSG_LOADING_FILAMENT_DE +}; + +const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; +const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; +const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; +const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; +const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; +const char MSG_LOAD_ALL_DE[] PROGMEM = "Alle laden"; +const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_ALL_EN, + MSG_LOAD_ALL_CZ, + MSG_LOAD_ALL_IT, + MSG_LOAD_ALL_ES, + MSG_LOAD_ALL_PL, + MSG_LOAD_ALL_DE +}; + +const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; +const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { + MSG_LOAD_EPROM_EN +}; + +const char MSG_LOAD_FILAMENT_EN[] PROGMEM = "Load filament"; +const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; +const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; +const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; +const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; +const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_EN, + MSG_LOAD_FILAMENT_CZ, + MSG_LOAD_FILAMENT_IT, + MSG_LOAD_FILAMENT_ES, + MSG_LOAD_FILAMENT_PL, + MSG_LOAD_FILAMENT_DE +}; + +const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; +const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; +const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; +const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; +const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; +const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Filament 1 laden"; +const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_1_EN, + MSG_LOAD_FILAMENT_1_CZ, + MSG_LOAD_FILAMENT_1_IT, + MSG_LOAD_FILAMENT_1_ES, + MSG_LOAD_FILAMENT_1_PL, + MSG_LOAD_FILAMENT_1_DE +}; + +const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; +const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; +const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; +const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; +const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; +const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Filament 2 laden"; +const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_2_EN, + MSG_LOAD_FILAMENT_2_CZ, + MSG_LOAD_FILAMENT_2_IT, + MSG_LOAD_FILAMENT_2_ES, + MSG_LOAD_FILAMENT_2_PL, + MSG_LOAD_FILAMENT_2_DE +}; + +const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; +const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; +const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; +const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; +const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; +const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Filament 3 laden"; +const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_3_EN, + MSG_LOAD_FILAMENT_3_CZ, + MSG_LOAD_FILAMENT_3_IT, + MSG_LOAD_FILAMENT_3_ES, + MSG_LOAD_FILAMENT_3_PL, + MSG_LOAD_FILAMENT_3_DE +}; + +const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; +const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; +const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; +const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; +const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; +const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Filament 4 laden"; +const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_4_EN, + MSG_LOAD_FILAMENT_4_CZ, + MSG_LOAD_FILAMENT_4_IT, + MSG_LOAD_FILAMENT_4_ES, + MSG_LOAD_FILAMENT_4_PL, + MSG_LOAD_FILAMENT_4_DE +}; + +const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; +const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka"; +const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta"; +const char MSG_LOOSE_PULLEY_ES[] PROGMEM = "Polea suelta"; +const char MSG_LOOSE_PULLEY_PL[] PROGMEM = "Kolo pasowe"; +const char MSG_LOOSE_PULLEY_DE[] PROGMEM = "Loser pulley"; +const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOOSE_PULLEY_EN, + MSG_LOOSE_PULLEY_CZ, + MSG_LOOSE_PULLEY_IT, + MSG_LOOSE_PULLEY_ES, + MSG_LOOSE_PULLEY_PL, + MSG_LOOSE_PULLEY_DE +}; + +const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder "; +const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M104_INVALID_EXTRUDER_EN +}; + +const char MSG_M105_INVALID_EXTRUDER_EN[] PROGMEM = "M105 Invalid extruder "; +const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M105_INVALID_EXTRUDER_EN +}; + +const char MSG_M109_INVALID_EXTRUDER_EN[] PROGMEM = "M109 Invalid extruder "; +const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M109_INVALID_EXTRUDER_EN +}; + +const char MSG_M115_REPORT_EN[] PROGMEM = "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/prusa3d/Prusa-i3-Plus/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000\n"; +const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { + MSG_M115_REPORT_EN +}; + +const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; +const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { + MSG_M119_REPORT_EN +}; + +const char MSG_M200_INVALID_EXTRUDER_EN[] PROGMEM = "M200 Invalid extruder "; +const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M200_INVALID_EXTRUDER_EN +}; + +const char MSG_M218_INVALID_EXTRUDER_EN[] PROGMEM = "M218 Invalid extruder "; +const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M218_INVALID_EXTRUDER_EN +}; + +const char MSG_M221_INVALID_EXTRUDER_EN[] PROGMEM = "M221 Invalid extruder "; +const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M221_INVALID_EXTRUDER_EN +}; + +const char MSG_MAIN_EN[] PROGMEM = "Main"; +const char MSG_MAIN_CZ[] PROGMEM = "Hlavni nabidka"; +const char MSG_MAIN_IT[] PROGMEM = "Menu principale"; +const char MSG_MAIN_ES[] PROGMEM = "Menu principal"; +const char MSG_MAIN_PL[] PROGMEM = "Menu glowne"; +const char MSG_MAIN_DE[] PROGMEM = "Hauptmenue"; +const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MAIN_EN, + MSG_MAIN_CZ, + MSG_MAIN_IT, + MSG_MAIN_ES, + MSG_MAIN_PL, + MSG_MAIN_DE +}; + +const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; +const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."; +const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; +const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; +const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; +const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; +const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MARK_FIL_EN, + MSG_MARK_FIL_CZ, + MSG_MARK_FIL_IT, + MSG_MARK_FIL_ES, + MSG_MARK_FIL_PL, + MSG_MARK_FIL_DE +}; + +const char MSG_MAX_EN[] PROGMEM = " \002 Max"; +const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { + MSG_MAX_EN +}; + +const char MSG_MEASURED_SKEW_EN[] PROGMEM = "Measured skew:"; +const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:"; +const char MSG_MEASURED_SKEW_IT[] PROGMEM = "Incl. misurata:"; +const char MSG_MEASURED_SKEW_ES[] PROGMEM = "Inclin. medida:"; +const char MSG_MEASURED_SKEW_PL[] PROGMEM = "Zmier. sciecie:"; +const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Symmetrie:"; +const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURED_SKEW_EN, + MSG_MEASURED_SKEW_CZ, + MSG_MEASURED_SKEW_IT, + MSG_MEASURED_SKEW_ES, + MSG_MEASURED_SKEW_PL, + MSG_MEASURED_SKEW_DE +}; + +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN[] PROGMEM = "Measuring reference height of calibration point"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ[] PROGMEM = "Merim referencni vysku kalibracniho bodu"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT[] PROGMEM = "Misurare l'altezza di riferimento del punto di calibrazione"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES[] PROGMEM = "Medir la altura del punto de la calibracion"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL[] PROGMEM = "Okreslam wysokosc odniesienia punktu kalibracyjnego"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE[] PROGMEM = "Messen der Referenzhoehe des Kalibrierpunktes"; +const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE +}; + +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT[] PROGMEM = " su 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES[] PROGMEM = " de 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE[] PROGMEM = " von 9"; +const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE +}; + +const char MSG_MENU_CALIBRATION_EN[] PROGMEM = "Calibration"; +const char MSG_MENU_CALIBRATION_CZ[] PROGMEM = "Kalibrace"; +const char MSG_MENU_CALIBRATION_IT[] PROGMEM = "Calibrazione"; +const char MSG_MENU_CALIBRATION_ES[] PROGMEM = "Calibracion"; +const char MSG_MENU_CALIBRATION_PL[] PROGMEM = "Kalibracja"; +const char MSG_MENU_CALIBRATION_DE[] PROGMEM = "Kalibrierung"; +const char * const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MENU_CALIBRATION_EN, + MSG_MENU_CALIBRATION_CZ, + MSG_MENU_CALIBRATION_IT, + MSG_MENU_CALIBRATION_ES, + MSG_MENU_CALIBRATION_PL, + MSG_MENU_CALIBRATION_DE +}; + +const char MSG_MESH_BED_LEVELING_EN[] PROGMEM = "Mesh Bed Leveling"; +const char MSG_MESH_BED_LEVELING_IT[] PROGMEM = "Mesh livel. letto"; +const char * const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_IT, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN +}; + +const char MSG_MIN_EN[] PROGMEM = " \002 Min"; +const char * const MSG_MIN_LANG_TABLE[1] PROGMEM = { + MSG_MIN_EN +}; + +const char MSG_MOTION_EN[] PROGMEM = "Motion"; +const char * const MSG_MOTION_LANG_TABLE[1] PROGMEM = { + MSG_MOTION_EN +}; + +const char MSG_MOVE_01MM_EN[] PROGMEM = "Move 0.1mm"; +const char * const MSG_MOVE_01MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_01MM_EN +}; + +const char MSG_MOVE_10MM_EN[] PROGMEM = "Move 10mm"; +const char * const MSG_MOVE_10MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_10MM_EN +}; + +const char MSG_MOVE_1MM_EN[] PROGMEM = "Move 1mm"; +const char * const MSG_MOVE_1MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_1MM_EN +}; + +const char MSG_MOVE_AXIS_EN[] PROGMEM = "Move axis"; +const char MSG_MOVE_AXIS_CZ[] PROGMEM = "Posunout osu"; +const char MSG_MOVE_AXIS_IT[] PROGMEM = "Muovi asse"; +const char MSG_MOVE_AXIS_ES[] PROGMEM = "Mover ejes"; +const char MSG_MOVE_AXIS_PL[] PROGMEM = "Ruch osi"; +const char MSG_MOVE_AXIS_DE[] PROGMEM = "Bewege Achse"; +const char * const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_AXIS_EN, + MSG_MOVE_AXIS_CZ, + MSG_MOVE_AXIS_IT, + MSG_MOVE_AXIS_ES, + MSG_MOVE_AXIS_PL, + MSG_MOVE_AXIS_DE +}; + +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_EN[] PROGMEM = "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; +const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_DE +}; + +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN[] PROGMEM = "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; +const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE +}; + +const char MSG_MOVE_E_EN[] PROGMEM = "Extruder"; +const char MSG_MOVE_E_IT[] PROGMEM = "Muovi Estrusore"; +const char MSG_MOVE_E_ES[] PROGMEM = "Extruir"; +const char * const MSG_MOVE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_E_EN, + MSG_MOVE_E_EN, + MSG_MOVE_E_IT, + MSG_MOVE_E_ES, + MSG_MOVE_E_EN, + MSG_MOVE_E_EN +}; + +const char MSG_MOVE_X_EN[] PROGMEM = "Move X"; +const char MSG_MOVE_X_CZ[] PROGMEM = "Posunout X"; +const char MSG_MOVE_X_IT[] PROGMEM = "Muovi X"; +const char MSG_MOVE_X_ES[] PROGMEM = "Mover X"; +const char MSG_MOVE_X_PL[] PROGMEM = "Przesunac X"; +const char MSG_MOVE_X_DE[] PROGMEM = "Bewege X"; +const char * const MSG_MOVE_X_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_X_EN, + MSG_MOVE_X_CZ, + MSG_MOVE_X_IT, + MSG_MOVE_X_ES, + MSG_MOVE_X_PL, + MSG_MOVE_X_DE +}; + +const char MSG_MOVE_Y_EN[] PROGMEM = "Move Y"; +const char MSG_MOVE_Y_CZ[] PROGMEM = "Posunout Y"; +const char MSG_MOVE_Y_IT[] PROGMEM = "Muovi Y"; +const char MSG_MOVE_Y_ES[] PROGMEM = "Mover Y"; +const char MSG_MOVE_Y_PL[] PROGMEM = "Przesunac Y"; +const char MSG_MOVE_Y_DE[] PROGMEM = "Bewege Y"; +const char * const MSG_MOVE_Y_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_Y_EN, + MSG_MOVE_Y_CZ, + MSG_MOVE_Y_IT, + MSG_MOVE_Y_ES, + MSG_MOVE_Y_PL, + MSG_MOVE_Y_DE +}; + +const char MSG_MOVE_Z_EN[] PROGMEM = "Move Z"; +const char MSG_MOVE_Z_CZ[] PROGMEM = "Posunout Z"; +const char MSG_MOVE_Z_IT[] PROGMEM = "Muovi Z"; +const char MSG_MOVE_Z_ES[] PROGMEM = "Mover Z"; +const char MSG_MOVE_Z_PL[] PROGMEM = "Przesunac Z"; +const char MSG_MOVE_Z_DE[] PROGMEM = "Bewege Z"; +const char * const MSG_MOVE_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_Z_EN, + MSG_MOVE_Z_CZ, + MSG_MOVE_Z_IT, + MSG_MOVE_Z_ES, + MSG_MOVE_Z_PL, + MSG_MOVE_Z_DE +}; + +const char MSG_NEW_FIRMWARE_AVAILABLE_EN[] PROGMEM = "New firmware version available:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_CZ[] PROGMEM = "Vysla nova verze firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_IT[] PROGMEM = "Nuova versione del firmware disponibile"; +const char MSG_NEW_FIRMWARE_AVAILABLE_ES[] PROGMEM = "Nuevo firmware disponible:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_PL[] PROGMEM = "Wyszla nowa wersja firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_DE[] PROGMEM = "Neue Firmware Version verfuegbar:"; +const char * const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NEW_FIRMWARE_AVAILABLE_EN, + MSG_NEW_FIRMWARE_AVAILABLE_CZ, + MSG_NEW_FIRMWARE_AVAILABLE_IT, + MSG_NEW_FIRMWARE_AVAILABLE_ES, + MSG_NEW_FIRMWARE_AVAILABLE_PL, + MSG_NEW_FIRMWARE_AVAILABLE_DE +}; + +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN[] PROGMEM = "Please upgrade."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ[] PROGMEM = "Prosim aktualizujte."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT[] PROGMEM = "Prega aggiorna."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES[] PROGMEM = "Actualizar por favor"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL[] PROGMEM = "Prosze zaktualizowac"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE[] PROGMEM = "Bitte aktualisieren."; +const char * const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE +}; + +const char MSG_NO_EN[] PROGMEM = "No"; +const char MSG_NO_CZ[] PROGMEM = "Ne"; +const char MSG_NO_PL[] PROGMEM = "Nie"; +const char MSG_NO_DE[] PROGMEM = "Nein"; +const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_EN, + MSG_NO_CZ, + MSG_NO_EN, + MSG_NO_EN, + MSG_NO_PL, + MSG_NO_DE +}; + +const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; +const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; +const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro"; +const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no homogeneo"; +const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; +const char MSG_NOT_COLOR_DE[] PROGMEM = "Farbe nicht klar."; +const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOT_COLOR_EN, + MSG_NOT_COLOR_CZ, + MSG_NOT_COLOR_IT, + MSG_NOT_COLOR_ES, + MSG_NOT_COLOR_PL, + MSG_NOT_COLOR_DE +}; + +const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; +const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; +const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato"; +const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no introducido"; +const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; +const char MSG_NOT_LOADED_DE[] PROGMEM = "Fil. nicht geladen"; +const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOT_LOADED_EN, + MSG_NOT_LOADED_CZ, + MSG_NOT_LOADED_IT, + MSG_NOT_LOADED_ES, + MSG_NOT_LOADED_PL, + MSG_NOT_LOADED_DE +}; + +const char MSG_NOZZLE_EN[] PROGMEM = "Nozzle"; +const char MSG_NOZZLE_CZ[] PROGMEM = "Tryska"; +const char MSG_NOZZLE_IT[] PROGMEM = "Ugello"; +const char MSG_NOZZLE_ES[] PROGMEM = "Boquilla"; +const char MSG_NOZZLE_PL[] PROGMEM = "Dysza"; +const char MSG_NOZZLE_DE[] PROGMEM = "Duese"; +const char * const MSG_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOZZLE_EN, + MSG_NOZZLE_CZ, + MSG_NOZZLE_IT, + MSG_NOZZLE_ES, + MSG_NOZZLE_PL, + MSG_NOZZLE_DE +}; + +const char MSG_NOZZLE1_EN[] PROGMEM = "Nozzle2"; +const char * const MSG_NOZZLE1_LANG_TABLE[1] PROGMEM = { + MSG_NOZZLE1_EN +}; + +const char MSG_NOZZLE2_EN[] PROGMEM = "Nozzle3"; +const char * const MSG_NOZZLE2_LANG_TABLE[1] PROGMEM = { + MSG_NOZZLE2_EN +}; + +const char MSG_NO_CARD_EN[] PROGMEM = "No SD card"; +const char MSG_NO_CARD_CZ[] PROGMEM = "Zadna SD karta"; +const char MSG_NO_CARD_IT[] PROGMEM = "Nessuna SD"; +const char MSG_NO_CARD_ES[] PROGMEM = "No hay tarjeta SD"; +const char MSG_NO_CARD_PL[] PROGMEM = "Brak karty SD"; +const char MSG_NO_CARD_DE[] PROGMEM = "Keine SD Karte"; +const char * const MSG_NO_CARD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_CARD_EN, + MSG_NO_CARD_CZ, + MSG_NO_CARD_IT, + MSG_NO_CARD_ES, + MSG_NO_CARD_PL, + MSG_NO_CARD_DE +}; + +const char MSG_NO_MOVE_EN[] PROGMEM = "No move."; +const char MSG_NO_MOVE_IT[] PROGMEM = "Nessun movimento."; +const char MSG_NO_MOVE_ES[] PROGMEM = "Sin movimiento"; +const char MSG_NO_MOVE_DE[] PROGMEM = "Keine Bewegung."; +const char * const MSG_NO_MOVE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_MOVE_EN, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_IT, + MSG_NO_MOVE_ES, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_DE +}; + +const char MSG_OFF_EN[] PROGMEM = "Off"; +const char * const MSG_OFF_LANG_TABLE[1] PROGMEM = { + MSG_OFF_EN +}; + +const char MSG_OK_EN[] PROGMEM = "ok"; +const char * const MSG_OK_LANG_TABLE[1] PROGMEM = { + MSG_OK_EN +}; + +const char MSG_ON_EN[] PROGMEM = "On "; +const char * const MSG_ON_LANG_TABLE[1] PROGMEM = { + MSG_ON_EN +}; + +const char MSG_PAPER_EN[] PROGMEM = "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."; +const char MSG_PAPER_CZ[] PROGMEM = "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."; +const char MSG_PAPER_IT[] PROGMEM = "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."; +const char MSG_PAPER_ES[] PROGMEM = "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."; +const char MSG_PAPER_PL[] PROGMEM = "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."; +const char MSG_PAPER_DE[] PROGMEM = "Lege waehrend der Kalibrierung der ersten 4 Punkte ein Blatt Papier unter die Duese. Wenn die Duese das Papier bewegt, Drucker sofort ausschalten!"; +const char * const MSG_PAPER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PAPER_EN, + MSG_PAPER_CZ, + MSG_PAPER_IT, + MSG_PAPER_ES, + MSG_PAPER_PL, + MSG_PAPER_DE +}; + +const char MSG_PAUSE_PRINT_EN[] PROGMEM = "Pause print"; +const char MSG_PAUSE_PRINT_CZ[] PROGMEM = "Pozastavit tisk"; +const char MSG_PAUSE_PRINT_IT[] PROGMEM = "Metti in pausa"; +const char MSG_PAUSE_PRINT_ES[] PROGMEM = "Pausar impresion"; +const char MSG_PAUSE_PRINT_PL[] PROGMEM = "Przerwac druk"; +const char MSG_PAUSE_PRINT_DE[] PROGMEM = "Pause"; +const char * const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PAUSE_PRINT_EN, + MSG_PAUSE_PRINT_CZ, + MSG_PAUSE_PRINT_IT, + MSG_PAUSE_PRINT_ES, + MSG_PAUSE_PRINT_PL, + MSG_PAUSE_PRINT_DE +}; + +const char MSG_PICK_Z_EN[] PROGMEM = "Pick print"; +const char MSG_PICK_Z_CZ[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_ES[] PROGMEM = "Esc. Modelo Adecuado"; +const char MSG_PICK_Z_PL[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_DE[] PROGMEM = "Waehle Druck"; +const char * const MSG_PICK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PICK_Z_EN, + MSG_PICK_Z_CZ, + MSG_PICK_Z_EN, + MSG_PICK_Z_ES, + MSG_PICK_Z_PL, + MSG_PICK_Z_DE +}; + +const char MSG_PID_EXTRUDER_EN[] PROGMEM = "PID calibration"; +const char MSG_PID_EXTRUDER_CZ[] PROGMEM = "PID kalibrace"; +const char MSG_PID_EXTRUDER_IT[] PROGMEM = "Calibrazione PID"; +const char MSG_PID_EXTRUDER_ES[] PROGMEM = "Calibracion PID"; +const char MSG_PID_EXTRUDER_PL[] PROGMEM = "Kalibracja PID"; +const char MSG_PID_EXTRUDER_DE[] PROGMEM = "PID Kalibrierung"; +const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_EXTRUDER_EN, + MSG_PID_EXTRUDER_CZ, + MSG_PID_EXTRUDER_IT, + MSG_PID_EXTRUDER_ES, + MSG_PID_EXTRUDER_PL, + MSG_PID_EXTRUDER_DE +}; + +const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished "; +const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; +const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; +const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; +const char MSG_PID_FINISHED_PL[] PROGMEM = "Kal. PID zakonczona"; +const char MSG_PID_FINISHED_DE[] PROGMEM = "PID Kal. fertig "; +const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_FINISHED_EN, + MSG_PID_FINISHED_CZ, + MSG_PID_FINISHED_IT, + MSG_PID_FINISHED_ES, + MSG_PID_FINISHED_PL, + MSG_PID_FINISHED_DE +}; + +const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; +const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; +const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; +const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; +const char MSG_PID_RUNNING_PL[] PROGMEM = "Kal. PID"; +const char MSG_PID_RUNNING_DE[] PROGMEM = "PID Kal. "; +const char * const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_RUNNING_EN, + MSG_PID_RUNNING_CZ, + MSG_PID_RUNNING_IT, + MSG_PID_RUNNING_ES, + MSG_PID_RUNNING_PL, + MSG_PID_RUNNING_DE +}; + +const char MSG_PINDA_NOT_CALIBRATED_EN[] PROGMEM = "Temperature calibration has not been run yet"; +const char MSG_PINDA_NOT_CALIBRATED_CZ[] PROGMEM = "Tiskarna nebyla teplotne zkalibrovana"; +const char MSG_PINDA_NOT_CALIBRATED_IT[] PROGMEM = "Taratura della temperatura non ancora eseguita"; +const char MSG_PINDA_NOT_CALIBRATED_ES[] PROGMEM = "La temperatura de calibracion no ha sido ajustada"; +const char MSG_PINDA_NOT_CALIBRATED_PL[] PROGMEM = "Cieplna kalibracja nie byla przeprowadzona"; +const char MSG_PINDA_NOT_CALIBRATED_DE[] PROGMEM = "PINDA Temperatur Kalibrierung wurde noch nicht ausgefuehrt"; +const char * const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PINDA_NOT_CALIBRATED_EN, + MSG_PINDA_NOT_CALIBRATED_CZ, + MSG_PINDA_NOT_CALIBRATED_IT, + MSG_PINDA_NOT_CALIBRATED_ES, + MSG_PINDA_NOT_CALIBRATED_PL, + MSG_PINDA_NOT_CALIBRATED_DE +}; + +const char MSG_PINDA_PREHEAT_EN[] PROGMEM = "PINDA Heating"; +const char MSG_PINDA_PREHEAT_CZ[] PROGMEM = "Nahrivani PINDA"; +const char MSG_PINDA_PREHEAT_IT[] PROGMEM = "Riscald. PINDA"; +const char MSG_PINDA_PREHEAT_ES[] PROGMEM = "Calentando PINDA"; +const char MSG_PINDA_PREHEAT_PL[] PROGMEM = "Grzanie PINDA"; +const char MSG_PINDA_PREHEAT_DE[] PROGMEM = "PINDA erwaermen"; +const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PINDA_PREHEAT_EN, + MSG_PINDA_PREHEAT_CZ, + MSG_PINDA_PREHEAT_IT, + MSG_PINDA_PREHEAT_ES, + MSG_PINDA_PREHEAT_PL, + MSG_PINDA_PREHEAT_DE +}; + +const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; +const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { + MSG_PLANNER_BUFFER_BYTES_EN +}; + +const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; +const char MSG_PLEASE_WAIT_CZ[] PROGMEM = "Prosim cekejte"; +const char MSG_PLEASE_WAIT_IT[] PROGMEM = "Aspetta"; +const char MSG_PLEASE_WAIT_ES[] PROGMEM = "Por Favor Esperar"; +const char MSG_PLEASE_WAIT_PL[] PROGMEM = "Prosze czekac"; +const char MSG_PLEASE_WAIT_DE[] PROGMEM = "Bitte warten"; +const char * const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLEASE_WAIT_EN, + MSG_PLEASE_WAIT_CZ, + MSG_PLEASE_WAIT_IT, + MSG_PLEASE_WAIT_ES, + MSG_PLEASE_WAIT_PL, + MSG_PLEASE_WAIT_DE +}; + +const char MSG_POSITION_UNKNOWN_EN[] PROGMEM = "Home X/Y before Z"; +const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[1] PROGMEM = { + MSG_POSITION_UNKNOWN_EN +}; + +const char MSG_POWERUP_EN[] PROGMEM = "PowerUp"; +const char * const MSG_POWERUP_LANG_TABLE[1] PROGMEM = { + MSG_POWERUP_EN +}; + +const char MSG_PREHEAT_EN[] PROGMEM = "Preheat"; +const char MSG_PREHEAT_CZ[] PROGMEM = "Predehrev"; +const char MSG_PREHEAT_IT[] PROGMEM = "Preriscalda"; +const char MSG_PREHEAT_ES[] PROGMEM = "Precalentar"; +const char MSG_PREHEAT_PL[] PROGMEM = "Grzanie"; +const char MSG_PREHEAT_DE[] PROGMEM = "Vorwaermen"; +const char * const MSG_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREHEAT_EN, + MSG_PREHEAT_CZ, + MSG_PREHEAT_IT, + MSG_PREHEAT_ES, + MSG_PREHEAT_PL, + MSG_PREHEAT_DE +}; + +const char MSG_PREHEAT_NOZZLE_EN[] PROGMEM = "Preheat the nozzle!"; +const char MSG_PREHEAT_NOZZLE_CZ[] PROGMEM = "Predehrejte trysku!"; +const char MSG_PREHEAT_NOZZLE_IT[] PROGMEM = "Preris. ugello!"; +const char MSG_PREHEAT_NOZZLE_ES[] PROGMEM = "Precalentar extrusor"; +const char MSG_PREHEAT_NOZZLE_PL[] PROGMEM = "Nagrzej dysze!"; +const char MSG_PREHEAT_NOZZLE_DE[] PROGMEM = "Duese vorwaermen!"; +const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREHEAT_NOZZLE_EN, + MSG_PREHEAT_NOZZLE_CZ, + MSG_PREHEAT_NOZZLE_IT, + MSG_PREHEAT_NOZZLE_ES, + MSG_PREHEAT_NOZZLE_PL, + MSG_PREHEAT_NOZZLE_DE +}; + +const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; +const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; +const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; +const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; +const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; +const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filam. bereithalten"; +const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREPARE_FILAMENT_EN, + MSG_PREPARE_FILAMENT_CZ, + MSG_PREPARE_FILAMENT_IT, + MSG_PREPARE_FILAMENT_ES, + MSG_PREPARE_FILAMENT_PL, + MSG_PREPARE_FILAMENT_DE +}; + +const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; +const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; +const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; +const char MSG_PRESS_ES[] PROGMEM = "Pulsar el mando"; +const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; +const char MSG_PRESS_DE[] PROGMEM = "und Knopf druecken"; +const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRESS_EN, + MSG_PRESS_CZ, + MSG_PRESS_IT, + MSG_PRESS_ES, + MSG_PRESS_PL, + MSG_PRESS_DE +}; + +const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; +const char MSG_PRINTER_DISCONNECTED_DE[] PROGMEM = "Drucker getrent"; +const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_DE +}; + +const char MSG_PRINT_ABORTED_EN[] PROGMEM = "Print aborted"; +const char MSG_PRINT_ABORTED_CZ[] PROGMEM = "Tisk prerusen"; +const char MSG_PRINT_ABORTED_IT[] PROGMEM = "Stampa abortita"; +const char MSG_PRINT_ABORTED_ES[] PROGMEM = "Impresion cancelada"; +const char MSG_PRINT_ABORTED_PL[] PROGMEM = "Druk przerwany"; +const char MSG_PRINT_ABORTED_DE[] PROGMEM = "Druck abgebrochen"; +const char * const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINT_ABORTED_EN, + MSG_PRINT_ABORTED_CZ, + MSG_PRINT_ABORTED_IT, + MSG_PRINT_ABORTED_ES, + MSG_PRINT_ABORTED_PL, + MSG_PRINT_ABORTED_DE +}; + +const char MSG_PRINT_PAUSED_EN[] PROGMEM = "Print paused"; +const char MSG_PRINT_PAUSED_CZ[] PROGMEM = "Tisk pozastaven"; +const char MSG_PRINT_PAUSED_IT[] PROGMEM = "Stampa in pausa"; +const char MSG_PRINT_PAUSED_ES[] PROGMEM = "Impresion en pausa"; +const char MSG_PRINT_PAUSED_PL[] PROGMEM = "Druk zatrzymany"; +const char MSG_PRINT_PAUSED_DE[] PROGMEM = "Druck pausiert"; +const char * const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINT_PAUSED_EN, + MSG_PRINT_PAUSED_CZ, + MSG_PRINT_PAUSED_IT, + MSG_PRINT_PAUSED_ES, + MSG_PRINT_PAUSED_PL, + MSG_PRINT_PAUSED_DE +}; + +const char MSG_PRUSA3D_EN[] PROGMEM = "prusa3d.com"; +const char MSG_PRUSA3D_CZ[] PROGMEM = "prusa3d.cz"; +const char MSG_PRUSA3D_PL[] PROGMEM = "prusa3d.cz"; +const char * const MSG_PRUSA3D_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_EN, + MSG_PRUSA3D_CZ, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_PL, + MSG_PRUSA3D_EN +}; + +const char MSG_PRUSA3D_FORUM_EN[] PROGMEM = "forum.prusa3d.com"; +const char MSG_PRUSA3D_FORUM_CZ[] PROGMEM = "forum.prusa3d.cz"; +const char MSG_PRUSA3D_FORUM_PL[] PROGMEM = "forum.prusa3d.cz"; +const char * const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_CZ, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_PL, + MSG_PRUSA3D_FORUM_EN +}; + +const char MSG_PRUSA3D_HOWTO_EN[] PROGMEM = "howto.prusa3d.com"; +const char MSG_PRUSA3D_HOWTO_CZ[] PROGMEM = "howto.prusa3d.cz"; +const char MSG_PRUSA3D_HOWTO_PL[] PROGMEM = "howto.prusa3d.cz"; +const char * const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_CZ, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_PL, + MSG_PRUSA3D_HOWTO_EN +}; + +const char MSG_REBOOT_EN[] PROGMEM = "Reboot the printer"; +const char MSG_REBOOT_CZ[] PROGMEM = "Restartujte tiskarnu"; +const char MSG_REBOOT_IT[] PROGMEM = "Riavvia stampante"; +const char MSG_REBOOT_ES[] PROGMEM = "Reiniciar impresora"; +const char MSG_REBOOT_PL[] PROGMEM = "Restart drukarki"; +const char MSG_REBOOT_DE[] PROGMEM = "Reboot den Drucker"; +const char * const MSG_REBOOT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_REBOOT_EN, + MSG_REBOOT_CZ, + MSG_REBOOT_IT, + MSG_REBOOT_ES, + MSG_REBOOT_PL, + MSG_REBOOT_DE +}; + +const char MSG_RECTRACT_EN[] PROGMEM = "Rectract"; +const char * const MSG_RECTRACT_LANG_TABLE[1] PROGMEM = { + MSG_RECTRACT_EN +}; + +const char MSG_REFRESH_EN[] PROGMEM = "\xF8" "Refresh"; +const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { + MSG_REFRESH_EN +}; + +const char MSG_RESEND_EN[] PROGMEM = "Resend: "; +const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { + MSG_RESEND_EN +}; + +const char MSG_RESET_CALIBRATE_E_EN[] PROGMEM = "Reset E Cal."; +const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[1] PROGMEM = { + MSG_RESET_CALIBRATE_E_EN +}; + +const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; +const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { + MSG_RESTORE_FAILSAFE_EN +}; + +const char MSG_RESUME_PRINT_EN[] PROGMEM = "Resume print"; +const char MSG_RESUME_PRINT_CZ[] PROGMEM = "Pokracovat"; +const char MSG_RESUME_PRINT_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUME_PRINT_ES[] PROGMEM = "Reanudar impres."; +const char MSG_RESUME_PRINT_PL[] PROGMEM = "Kontynuowac"; +const char MSG_RESUME_PRINT_DE[] PROGMEM = "Fortsetzen"; +const char * const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUME_PRINT_EN, + MSG_RESUME_PRINT_CZ, + MSG_RESUME_PRINT_IT, + MSG_RESUME_PRINT_ES, + MSG_RESUME_PRINT_PL, + MSG_RESUME_PRINT_DE +}; + +const char MSG_RESUMING_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_CZ[] PROGMEM = "Obnoveni tisku"; +const char MSG_RESUMING_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUMING_ES[] PROGMEM = "Resumiendo impresion"; +const char MSG_RESUMING_PL[] PROGMEM = "Wznowienie druku"; +const char MSG_RESUMING_DE[] PROGMEM = "Druck fortgesetzt"; +const char * const MSG_RESUMING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUMING_EN, + MSG_RESUMING_CZ, + MSG_RESUMING_IT, + MSG_RESUMING_ES, + MSG_RESUMING_PL, + MSG_RESUMING_DE +}; + +const char MSG_RESUMING_PRINT_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_PRINT_CZ[] PROGMEM = "Obnovovani tisku"; +const char MSG_RESUMING_PRINT_IT[] PROGMEM = "Stampa in ripresa"; +const char MSG_RESUMING_PRINT_ES[] PROGMEM = "Reanudar impresion"; +const char MSG_RESUMING_PRINT_PL[] PROGMEM = "Wznawianie druku"; +const char MSG_RESUMING_PRINT_DE[] PROGMEM = "Druck fortsetzen"; +const char * const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUMING_PRINT_EN, + MSG_RESUMING_PRINT_CZ, + MSG_RESUMING_PRINT_IT, + MSG_RESUMING_PRINT_ES, + MSG_RESUMING_PRINT_PL, + MSG_RESUMING_PRINT_DE +}; + +const char MSG_RIGHT_EN[] PROGMEM = "Right:"; +const char MSG_RIGHT_CZ[] PROGMEM = "Pravy:"; +const char MSG_RIGHT_IT[] PROGMEM = "Destra:"; +const char MSG_RIGHT_ES[] PROGMEM = "Derecha:"; +const char MSG_RIGHT_PL[] PROGMEM = "Prawy:"; +const char MSG_RIGHT_DE[] PROGMEM = "Rechts:"; +const char * const MSG_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RIGHT_EN, + MSG_RIGHT_CZ, + MSG_RIGHT_IT, + MSG_RIGHT_ES, + MSG_RIGHT_PL, + MSG_RIGHT_DE +}; + +const char MSG_SD_CANT_ENTER_SUBDIR_EN[] PROGMEM = "Cannot enter subdir: "; +const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1] PROGMEM = { + MSG_SD_CANT_ENTER_SUBDIR_EN +}; + +const char MSG_SD_CANT_OPEN_SUBDIR_EN[] PROGMEM = "Cannot open subdir"; +const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1] PROGMEM = { + MSG_SD_CANT_OPEN_SUBDIR_EN +}; + +const char MSG_SD_CARD_OK_EN[] PROGMEM = "SD card ok"; +const char * const MSG_SD_CARD_OK_LANG_TABLE[1] PROGMEM = { + MSG_SD_CARD_OK_EN +}; + +const char MSG_SD_ERR_WRITE_TO_FILE_EN[] PROGMEM = "error writing to file"; +const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { + MSG_SD_ERR_WRITE_TO_FILE_EN +}; + +const char MSG_SD_FILE_OPENED_EN[] PROGMEM = "File opened: "; +const char * const MSG_SD_FILE_OPENED_LANG_TABLE[1] PROGMEM = { + MSG_SD_FILE_OPENED_EN +}; + +const char MSG_SD_FILE_SELECTED_EN[] PROGMEM = "File selected"; +const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[1] PROGMEM = { + MSG_SD_FILE_SELECTED_EN +}; + +const char MSG_SD_INIT_FAIL_EN[] PROGMEM = "SD init fail"; +const char * const MSG_SD_INIT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_INIT_FAIL_EN +}; + +const char MSG_SD_INSERTED_EN[] PROGMEM = "Card inserted"; +const char MSG_SD_INSERTED_CZ[] PROGMEM = "Karta vlozena"; +const char MSG_SD_INSERTED_IT[] PROGMEM = "SD inserita"; +const char MSG_SD_INSERTED_ES[] PROGMEM = "Tarjeta insertada"; +const char MSG_SD_INSERTED_PL[] PROGMEM = "Karta wlozona"; +const char MSG_SD_INSERTED_DE[] PROGMEM = "SD eingesetzt"; +const char * const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SD_INSERTED_EN, + MSG_SD_INSERTED_CZ, + MSG_SD_INSERTED_IT, + MSG_SD_INSERTED_ES, + MSG_SD_INSERTED_PL, + MSG_SD_INSERTED_DE +}; + +const char MSG_SD_NOT_PRINTING_EN[] PROGMEM = "Not SD printing"; +const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[1] PROGMEM = { + MSG_SD_NOT_PRINTING_EN +}; + +const char MSG_SD_OPENROOT_FAIL_EN[] PROGMEM = "openRoot failed"; +const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_OPENROOT_FAIL_EN +}; + +const char MSG_SD_OPEN_FILE_FAIL_EN[] PROGMEM = "open failed, File: "; +const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_OPEN_FILE_FAIL_EN +}; + +const char MSG_SD_PRINTING_BYTE_EN[] PROGMEM = "SD printing byte "; +const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[1] PROGMEM = { + MSG_SD_PRINTING_BYTE_EN +}; + +const char MSG_SD_REMOVED_EN[] PROGMEM = "Card removed"; +const char MSG_SD_REMOVED_CZ[] PROGMEM = "Karta vyjmuta"; +const char MSG_SD_REMOVED_IT[] PROGMEM = "SD rimossa"; +const char MSG_SD_REMOVED_ES[] PROGMEM = "Tarjeta retirada"; +const char MSG_SD_REMOVED_PL[] PROGMEM = "Karta wyjeta"; +const char MSG_SD_REMOVED_DE[] PROGMEM = "SD entfernt "; +const char * const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SD_REMOVED_EN, + MSG_SD_REMOVED_CZ, + MSG_SD_REMOVED_IT, + MSG_SD_REMOVED_ES, + MSG_SD_REMOVED_PL, + MSG_SD_REMOVED_DE +}; + +const char MSG_SD_SIZE_EN[] PROGMEM = " Size: "; +const char * const MSG_SD_SIZE_LANG_TABLE[1] PROGMEM = { + MSG_SD_SIZE_EN +}; + +const char MSG_SD_VOL_INIT_FAIL_EN[] PROGMEM = "volume.init failed"; +const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_VOL_INIT_FAIL_EN +}; + +const char MSG_SD_WORKDIR_FAIL_EN[] PROGMEM = "workDir open failed"; +const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_WORKDIR_FAIL_EN +}; + +const char MSG_SD_WRITE_TO_FILE_EN[] PROGMEM = "Writing to file: "; +const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { + MSG_SD_WRITE_TO_FILE_EN +}; + +const char MSG_SELFTEST_EN[] PROGMEM = "Selftest "; +const char MSG_SELFTEST_IT[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_ES[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_DE[] PROGMEM = "Selbsttest "; +const char * const MSG_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_EN, + MSG_SELFTEST_EN, + MSG_SELFTEST_IT, + MSG_SELFTEST_ES, + MSG_SELFTEST_EN, + MSG_SELFTEST_DE +}; + +const char MSG_SELFTEST_BEDHEATER_EN[] PROGMEM = "Bed / Heater"; +const char MSG_SELFTEST_BEDHEATER_IT[] PROGMEM = "Letto/Riscald."; +const char MSG_SELFTEST_BEDHEATER_ES[] PROGMEM = "Cama/Calentador"; +const char * const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_IT, + MSG_SELFTEST_BEDHEATER_ES, + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_EN +}; + +const char MSG_SELFTEST_CHECK_ALLCORRECT_EN[] PROGMEM = "All correct "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_CZ[] PROGMEM = "Vse OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_IT[] PROGMEM = "Nessun errore"; +const char MSG_SELFTEST_CHECK_ALLCORRECT_ES[] PROGMEM = "Todo bie "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_PL[] PROGMEM = "Wszystko OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_DE[] PROGMEM = "Alles richtig "; +const char * const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_ALLCORRECT_EN, + MSG_SELFTEST_CHECK_ALLCORRECT_CZ, + MSG_SELFTEST_CHECK_ALLCORRECT_IT, + MSG_SELFTEST_CHECK_ALLCORRECT_ES, + MSG_SELFTEST_CHECK_ALLCORRECT_PL, + MSG_SELFTEST_CHECK_ALLCORRECT_DE +}; + +const char MSG_SELFTEST_CHECK_BED_EN[] PROGMEM = "Checking bed "; +const char MSG_SELFTEST_CHECK_BED_CZ[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_IT[] PROGMEM = "Verifica letto"; +const char MSG_SELFTEST_CHECK_BED_ES[] PROGMEM = "Control de cama"; +const char MSG_SELFTEST_CHECK_BED_PL[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pruefe Bett "; +const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_BED_EN, + MSG_SELFTEST_CHECK_BED_CZ, + MSG_SELFTEST_CHECK_BED_IT, + MSG_SELFTEST_CHECK_BED_ES, + MSG_SELFTEST_CHECK_BED_PL, + MSG_SELFTEST_CHECK_BED_DE +}; + +const char MSG_SELFTEST_CHECK_ENDSTOPS_EN[] PROGMEM = "Checking endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; +const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_ENDSTOPS_EN, + MSG_SELFTEST_CHECK_ENDSTOPS_CZ, + MSG_SELFTEST_CHECK_ENDSTOPS_IT, + MSG_SELFTEST_CHECK_ENDSTOPS_ES, + MSG_SELFTEST_CHECK_ENDSTOPS_PL, + MSG_SELFTEST_CHECK_ENDSTOPS_DE +}; + +const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_IT[] PROGMEM = "Verifica ugello"; +const char MSG_SELFTEST_CHECK_HOTEND_ES[] PROGMEM = "Control hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_PL[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_DE[] PROGMEM = "Pruefe Hotend"; +const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_HOTEND_EN, + MSG_SELFTEST_CHECK_HOTEND_CZ, + MSG_SELFTEST_CHECK_HOTEND_IT, + MSG_SELFTEST_CHECK_HOTEND_ES, + MSG_SELFTEST_CHECK_HOTEND_PL, + MSG_SELFTEST_CHECK_HOTEND_DE +}; + +const char MSG_SELFTEST_CHECK_X_EN[] PROGMEM = "Checking X axis "; +const char MSG_SELFTEST_CHECK_X_CZ[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_IT[] PROGMEM = "Verifica asse X"; +const char MSG_SELFTEST_CHECK_X_ES[] PROGMEM = "Control del eje X"; +const char MSG_SELFTEST_CHECK_X_PL[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_DE[] PROGMEM = "Pruefe X Achse "; +const char * const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_X_EN, + MSG_SELFTEST_CHECK_X_CZ, + MSG_SELFTEST_CHECK_X_IT, + MSG_SELFTEST_CHECK_X_ES, + MSG_SELFTEST_CHECK_X_PL, + MSG_SELFTEST_CHECK_X_DE +}; + +const char MSG_SELFTEST_CHECK_Y_EN[] PROGMEM = "Checking Y axis "; +const char MSG_SELFTEST_CHECK_Y_CZ[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_IT[] PROGMEM = "Verifica asse Y"; +const char MSG_SELFTEST_CHECK_Y_ES[] PROGMEM = "Control del eje Y"; +const char MSG_SELFTEST_CHECK_Y_PL[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_DE[] PROGMEM = "Pruefe Y Achse "; +const char * const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_Y_EN, + MSG_SELFTEST_CHECK_Y_CZ, + MSG_SELFTEST_CHECK_Y_IT, + MSG_SELFTEST_CHECK_Y_ES, + MSG_SELFTEST_CHECK_Y_PL, + MSG_SELFTEST_CHECK_Y_DE +}; + +const char MSG_SELFTEST_CHECK_Z_EN[] PROGMEM = "Checking Z axis "; +const char MSG_SELFTEST_CHECK_Z_CZ[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_IT[] PROGMEM = "Verifica asse Z"; +const char MSG_SELFTEST_CHECK_Z_ES[] PROGMEM = "Control del eje Z"; +const char MSG_SELFTEST_CHECK_Z_PL[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_DE[] PROGMEM = "Pruefe Z Achse "; +const char * const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_Z_EN, + MSG_SELFTEST_CHECK_Z_CZ, + MSG_SELFTEST_CHECK_Z_IT, + MSG_SELFTEST_CHECK_Z_ES, + MSG_SELFTEST_CHECK_Z_PL, + MSG_SELFTEST_CHECK_Z_DE +}; + +const char MSG_SELFTEST_COOLING_FAN_EN[] PROGMEM = "Front print fan?";; +const char MSG_SELFTEST_COOLING_FAN_CZ[] PROGMEM = "Predni tiskovy vent?";; +const char MSG_SELFTEST_COOLING_FAN_IT[] PROGMEM = "Vent di stampa ant.?";; +const char MSG_SELFTEST_COOLING_FAN_ES[] PROGMEM = "Vent. al frente?";; +const char MSG_SELFTEST_COOLING_FAN_PL[] PROGMEM = "Przodni went. druku?";; +const char MSG_SELFTEST_COOLING_FAN_DE[] PROGMEM = "Vorderer Luefter?";; +const char * const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_COOLING_FAN_EN, + MSG_SELFTEST_COOLING_FAN_CZ, + MSG_SELFTEST_COOLING_FAN_IT, + MSG_SELFTEST_COOLING_FAN_ES, + MSG_SELFTEST_COOLING_FAN_PL, + MSG_SELFTEST_COOLING_FAN_DE +}; + +const char MSG_SELFTEST_ENDSTOP_EN[] PROGMEM = "Endstop"; +const char MSG_SELFTEST_ENDSTOP_IT[] PROGMEM = "Finecorsa"; +const char MSG_SELFTEST_ENDSTOP_ES[] PROGMEM = "Tope final"; +const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_IT, + MSG_SELFTEST_ENDSTOP_ES, + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_EN +}; + +const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; +const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; +const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; +const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; +const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_IT, + MSG_SELFTEST_ENDSTOPS_ES, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_DE +}; + +const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Endsch. n. erreicht"; +const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_IT, + MSG_SELFTEST_ENDSTOP_NOTHIT_ES, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_DE +}; + +const char MSG_SELFTEST_ERROR_EN[] PROGMEM = "Selftest error !"; +const char MSG_SELFTEST_ERROR_IT[] PROGMEM = "Autotest negativo"; +const char MSG_SELFTEST_ERROR_ES[] PROGMEM = "Autotest error!"; +const char MSG_SELFTEST_ERROR_DE[] PROGMEM = "Selbsttest Fehler !"; +const char * const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_IT, + MSG_SELFTEST_ERROR_ES, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_DE +}; + +const char MSG_SELFTEST_EXTRUDER_FAN_EN[] PROGMEM = "Left hotend fan?";; +const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; +const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; +const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; +const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; +const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?";; +const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_EXTRUDER_FAN_EN, + MSG_SELFTEST_EXTRUDER_FAN_CZ, + MSG_SELFTEST_EXTRUDER_FAN_IT, + MSG_SELFTEST_EXTRUDER_FAN_ES, + MSG_SELFTEST_EXTRUDER_FAN_PL, + MSG_SELFTEST_EXTRUDER_FAN_DE +}; + +const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed "; +const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal "; +const char MSG_SELFTEST_FAILED_IT[] PROGMEM = "Autotest fallito"; +const char MSG_SELFTEST_FAILED_ES[] PROGMEM = "Autotest fallado"; +const char MSG_SELFTEST_FAILED_PL[] PROGMEM = "Selftest nieudany"; +const char MSG_SELFTEST_FAILED_DE[] PROGMEM = "Selbsttest misluekt"; +const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAILED_EN, + MSG_SELFTEST_FAILED_CZ, + MSG_SELFTEST_FAILED_IT, + MSG_SELFTEST_FAILED_ES, + MSG_SELFTEST_FAILED_PL, + MSG_SELFTEST_FAILED_DE +}; + +const char MSG_SELFTEST_FAN_EN[] PROGMEM = "Fan test";; +const char MSG_SELFTEST_FAN_CZ[] PROGMEM = "Test ventilatoru";; +const char MSG_SELFTEST_FAN_IT[] PROGMEM = "Prova del ventilator";; +const char MSG_SELFTEST_FAN_ES[] PROGMEM = "Test del ventilador";; +const char MSG_SELFTEST_FAN_PL[] PROGMEM = "Test wentylatora";; +const char MSG_SELFTEST_FAN_DE[] PROGMEM = "Lueftertest";; +const char * const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_EN, + MSG_SELFTEST_FAN_CZ, + MSG_SELFTEST_FAN_IT, + MSG_SELFTEST_FAN_ES, + MSG_SELFTEST_FAN_PL, + MSG_SELFTEST_FAN_DE +}; + +const char MSG_SELFTEST_FAN_NO_EN[] PROGMEM = "Not spinning";; +const char MSG_SELFTEST_FAN_NO_CZ[] PROGMEM = "Netoci se";; +const char MSG_SELFTEST_FAN_NO_IT[] PROGMEM = "Non si gira";; +const char MSG_SELFTEST_FAN_NO_ES[] PROGMEM = "Ventilador no gira";; +const char MSG_SELFTEST_FAN_NO_PL[] PROGMEM = "Nekreci sie";; +const char MSG_SELFTEST_FAN_NO_DE[] PROGMEM = "Dreht nicht";; +const char * const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_NO_EN, + MSG_SELFTEST_FAN_NO_CZ, + MSG_SELFTEST_FAN_NO_IT, + MSG_SELFTEST_FAN_NO_ES, + MSG_SELFTEST_FAN_NO_PL, + MSG_SELFTEST_FAN_NO_DE +}; + +const char MSG_SELFTEST_FAN_YES_EN[] PROGMEM = "Spinning";; +const char MSG_SELFTEST_FAN_YES_CZ[] PROGMEM = "Toci se";; +const char MSG_SELFTEST_FAN_YES_IT[] PROGMEM = "Gira";; +const char MSG_SELFTEST_FAN_YES_ES[] PROGMEM = "Ventilador gira";; +const char MSG_SELFTEST_FAN_YES_PL[] PROGMEM = "Kreci sie";; +const char MSG_SELFTEST_FAN_YES_DE[] PROGMEM = "Dreht";; +const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_YES_EN, + MSG_SELFTEST_FAN_YES_CZ, + MSG_SELFTEST_FAN_YES_IT, + MSG_SELFTEST_FAN_YES_ES, + MSG_SELFTEST_FAN_YES_PL, + MSG_SELFTEST_FAN_YES_DE +}; + +const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor"; +const char MSG_SELFTEST_HEATERTHERMISTOR_IT[] PROGMEM = "Riscald./Termist."; +const char MSG_SELFTEST_HEATERTHERMISTOR_ES[] PROGMEM = "Calent./Termistor"; +const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_IT, + MSG_SELFTEST_HEATERTHERMISTOR_ES, + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_EN +}; + +const char MSG_SELFTEST_MOTOR_EN[] PROGMEM = "Motor"; +const char MSG_SELFTEST_MOTOR_IT[] PROGMEM = "Motore"; +const char MSG_SELFTEST_MOTOR_PL[] PROGMEM = "Silnik"; +const char * const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_IT, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_PL, + MSG_SELFTEST_MOTOR_EN +}; + +const char MSG_SELFTEST_NOTCONNECTED_EN[] PROGMEM = "Not connected"; +const char MSG_SELFTEST_NOTCONNECTED_CZ[] PROGMEM = "Nezapojeno "; +const char MSG_SELFTEST_NOTCONNECTED_IT[] PROGMEM = "Non connesso"; +const char MSG_SELFTEST_NOTCONNECTED_ES[] PROGMEM = "No hay conexion "; +const char MSG_SELFTEST_NOTCONNECTED_PL[] PROGMEM = "Nie podlaczono "; +const char MSG_SELFTEST_NOTCONNECTED_DE[] PROGMEM = "Nicht angeschlossen"; +const char * const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_NOTCONNECTED_EN, + MSG_SELFTEST_NOTCONNECTED_CZ, + MSG_SELFTEST_NOTCONNECTED_IT, + MSG_SELFTEST_NOTCONNECTED_ES, + MSG_SELFTEST_NOTCONNECTED_PL, + MSG_SELFTEST_NOTCONNECTED_DE +}; + +const char MSG_SELFTEST_OK_EN[] PROGMEM = "Self test OK"; +const char MSG_SELFTEST_OK_IT[] PROGMEM = "Autotest OK"; +const char MSG_SELFTEST_OK_DE[] PROGMEM = "Selbsttest OK"; +const char * const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_IT, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_DE +}; + +const char MSG_SELFTEST_PLEASECHECK_EN[] PROGMEM = "Please check :"; +const char MSG_SELFTEST_PLEASECHECK_CZ[] PROGMEM = "Zkontrolujte :"; +const char MSG_SELFTEST_PLEASECHECK_IT[] PROGMEM = "Verificare:"; +const char MSG_SELFTEST_PLEASECHECK_ES[] PROGMEM = "Controla :"; +const char MSG_SELFTEST_PLEASECHECK_PL[] PROGMEM = "Skontroluj :"; +const char MSG_SELFTEST_PLEASECHECK_DE[] PROGMEM = "Bitte pruefe:"; +const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_PLEASECHECK_EN, + MSG_SELFTEST_PLEASECHECK_CZ, + MSG_SELFTEST_PLEASECHECK_IT, + MSG_SELFTEST_PLEASECHECK_ES, + MSG_SELFTEST_PLEASECHECK_PL, + MSG_SELFTEST_PLEASECHECK_DE +}; + +const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start "; +const char MSG_SELFTEST_START_IT[] PROGMEM = "Avvia autotest"; +const char MSG_SELFTEST_START_ES[] PROGMEM = "Autotest salida"; +const char MSG_SELFTEST_START_DE[] PROGMEM = "Selbsttest start "; +const char * const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_IT, + MSG_SELFTEST_START_ES, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_DE +}; + +const char MSG_SELFTEST_WIRINGERROR_EN[] PROGMEM = "Wiring error"; +const char MSG_SELFTEST_WIRINGERROR_CZ[] PROGMEM = "Chyba zapojeni"; +const char MSG_SELFTEST_WIRINGERROR_IT[] PROGMEM = "Errore cablaggio"; +const char MSG_SELFTEST_WIRINGERROR_ES[] PROGMEM = "Error de conexion"; +const char MSG_SELFTEST_WIRINGERROR_PL[] PROGMEM = "Blad polaczenia"; +const char MSG_SELFTEST_WIRINGERROR_DE[] PROGMEM = "Verdrahtungsfehler"; +const char * const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_WIRINGERROR_EN, + MSG_SELFTEST_WIRINGERROR_CZ, + MSG_SELFTEST_WIRINGERROR_IT, + MSG_SELFTEST_WIRINGERROR_ES, + MSG_SELFTEST_WIRINGERROR_PL, + MSG_SELFTEST_WIRINGERROR_DE +}; + +const char MSG_SERIAL_ERROR_MENU_STRUCTURE_EN[] PROGMEM = "Error in menu structure"; +const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1] PROGMEM = { + MSG_SERIAL_ERROR_MENU_STRUCTURE_EN +}; + +const char MSG_SETTINGS_EN[] PROGMEM = "Settings"; +const char MSG_SETTINGS_CZ[] PROGMEM = "Nastaveni"; +const char MSG_SETTINGS_IT[] PROGMEM = "Impostazioni"; +const char MSG_SETTINGS_ES[] PROGMEM = "Configuracion"; +const char MSG_SETTINGS_PL[] PROGMEM = "Ustawienia"; +const char MSG_SETTINGS_DE[] PROGMEM = "Einstellungen"; +const char * const MSG_SETTINGS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SETTINGS_EN, + MSG_SETTINGS_CZ, + MSG_SETTINGS_IT, + MSG_SETTINGS_ES, + MSG_SETTINGS_PL, + MSG_SETTINGS_DE +}; + +const char MSG_SET_HOME_OFFSETS_EN[] PROGMEM = "Set home offsets"; +const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[1] PROGMEM = { + MSG_SET_HOME_OFFSETS_EN +}; + +const char MSG_SET_ORIGIN_EN[] PROGMEM = "Set origin"; +const char * const MSG_SET_ORIGIN_LANG_TABLE[1] PROGMEM = { + MSG_SET_ORIGIN_EN +}; + +const char MSG_SET_TEMPERATURE_EN[] PROGMEM = "Set temperature:"; +const char MSG_SET_TEMPERATURE_CZ[] PROGMEM = "Nastavte teplotu:"; +const char MSG_SET_TEMPERATURE_IT[] PROGMEM = "Imposta temperatura"; +const char MSG_SET_TEMPERATURE_ES[] PROGMEM = "Establecer temp.:"; +const char MSG_SET_TEMPERATURE_PL[] PROGMEM = "Ustawic temperature"; +const char MSG_SET_TEMPERATURE_DE[] PROGMEM = "Temp.einstellen"; +const char * const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SET_TEMPERATURE_EN, + MSG_SET_TEMPERATURE_CZ, + MSG_SET_TEMPERATURE_IT, + MSG_SET_TEMPERATURE_ES, + MSG_SET_TEMPERATURE_PL, + MSG_SET_TEMPERATURE_DE +}; + +const char MSG_SEVERE_SKEW_EN[] PROGMEM = "Severe skew:"; +const char MSG_SEVERE_SKEW_CZ[] PROGMEM = "Tezke zkoseni:"; +const char MSG_SEVERE_SKEW_IT[] PROGMEM = "Inc. rilevante:"; +const char MSG_SEVERE_SKEW_ES[] PROGMEM = "Inclin. severa:"; +const char MSG_SEVERE_SKEW_PL[] PROGMEM = "Ostre sciecie:"; +const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwere Asym.:"; +const char * const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SEVERE_SKEW_EN, + MSG_SEVERE_SKEW_CZ, + MSG_SEVERE_SKEW_IT, + MSG_SEVERE_SKEW_ES, + MSG_SEVERE_SKEW_PL, + MSG_SEVERE_SKEW_DE +}; + +const char MSG_SHOW_END_STOPS_EN[] PROGMEM = "Show end stops"; +const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; +const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; +const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; +const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; +const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Anzeigen Enschalter"; +const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SHOW_END_STOPS_EN, + MSG_SHOW_END_STOPS_CZ, + MSG_SHOW_END_STOPS_IT, + MSG_SHOW_END_STOPS_ES, + MSG_SHOW_END_STOPS_PL, + MSG_SHOW_END_STOPS_DE +}; + +const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; +const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; +const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]"; +const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [rend.pleno]"; +const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; +const char MSG_SILENT_MODE_OFF_DE[] PROGMEM = "Mode [Hohe Leist]"; +const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SILENT_MODE_OFF_EN, + MSG_SILENT_MODE_OFF_CZ, + MSG_SILENT_MODE_OFF_IT, + MSG_SILENT_MODE_OFF_ES, + MSG_SILENT_MODE_OFF_PL, + MSG_SILENT_MODE_OFF_DE +}; + +const char MSG_SILENT_MODE_ON_EN[] PROGMEM = "Mode [silent]"; +const char MSG_SILENT_MODE_ON_CZ[] PROGMEM = "Mod [tichy]"; +const char MSG_SILENT_MODE_ON_IT[] PROGMEM = "Modo [silenzioso]"; +const char MSG_SILENT_MODE_ON_ES[] PROGMEM = "Modo [silencio]"; +const char MSG_SILENT_MODE_ON_PL[] PROGMEM = "Mod [cichy]"; +const char MSG_SILENT_MODE_ON_DE[] PROGMEM = "Mode [leise]"; +const char * const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SILENT_MODE_ON_EN, + MSG_SILENT_MODE_ON_CZ, + MSG_SILENT_MODE_ON_IT, + MSG_SILENT_MODE_ON_ES, + MSG_SILENT_MODE_ON_PL, + MSG_SILENT_MODE_ON_DE +}; + +const char MSG_SLIGHT_SKEW_EN[] PROGMEM = "Slight skew:"; +const char MSG_SLIGHT_SKEW_CZ[] PROGMEM = "Lehke zkoseni:"; +const char MSG_SLIGHT_SKEW_IT[] PROGMEM = "Incl. leggera:"; +const char MSG_SLIGHT_SKEW_ES[] PROGMEM = "Inclin. ligera:"; +const char MSG_SLIGHT_SKEW_PL[] PROGMEM = "Lekkie sciecie:"; +const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Geringe Asym.:"; +const char * const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SLIGHT_SKEW_EN, + MSG_SLIGHT_SKEW_CZ, + MSG_SLIGHT_SKEW_IT, + MSG_SLIGHT_SKEW_ES, + MSG_SLIGHT_SKEW_PL, + MSG_SLIGHT_SKEW_DE +}; + +const char MSG_SOFTWARE_RESET_EN[] PROGMEM = " Software Reset"; +const char * const MSG_SOFTWARE_RESET_LANG_TABLE[1] PROGMEM = { + MSG_SOFTWARE_RESET_EN +}; + +const char MSG_SORTING_EN[] PROGMEM = "Sorting files"; +const char MSG_SORTING_DE[] PROGMEM = "Sortiere Dateien"; +const char * const MSG_SORTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_DE +}; + +const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort: [Alphabet]"; +const char * const MSG_SORT_ALPHA_LANG_TABLE[1] PROGMEM = { + MSG_SORT_ALPHA_EN +}; + +const char MSG_SORT_NONE_EN[] PROGMEM = "Sort: [None]"; +const char MSG_SORT_NONE_DE[] PROGMEM = "Sort: [Keine]"; +const char * const MSG_SORT_NONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_DE +}; + +const char MSG_SORT_TIME_EN[] PROGMEM = "Sort: [Time]"; +const char MSG_SORT_TIME_DE[] PROGMEM = "Sort: [Zeit]"; +const char * const MSG_SORT_TIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_DE +}; + +const char MSG_SPEED_EN[] PROGMEM = "Speed"; +const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; +const char MSG_SPEED_IT[] PROGMEM = "Velocita"; +const char MSG_SPEED_ES[] PROGMEM = "Velocidad"; +const char MSG_SPEED_PL[] PROGMEM = "Predkosc"; +const char MSG_SPEED_DE[] PROGMEM = "Geschwindigkeit"; +const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SPEED_EN, + MSG_SPEED_CZ, + MSG_SPEED_IT, + MSG_SPEED_ES, + MSG_SPEED_PL, + MSG_SPEED_DE +}; + +const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; +const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { + MSG_STACK_ERROR_EN +}; + +const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; +const char MSG_STATISTICS_CZ[] PROGMEM = "Statistika "; +const char MSG_STATISTICS_IT[] PROGMEM = "Statistiche"; +const char MSG_STATISTICS_ES[] PROGMEM = "Estadistica "; +const char MSG_STATISTICS_PL[] PROGMEM = "Statystyka "; +const char MSG_STATISTICS_DE[] PROGMEM = "Statistiken "; +const char * const MSG_STATISTICS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATISTICS_EN, + MSG_STATISTICS_CZ, + MSG_STATISTICS_IT, + MSG_STATISTICS_ES, + MSG_STATISTICS_PL, + MSG_STATISTICS_DE +}; + +const char MSG_STATS_FILAMENTUSED_EN[] PROGMEM = "Filament used: "; +const char MSG_STATS_FILAMENTUSED_CZ[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_IT[] PROGMEM = "Filamento usato:"; +const char MSG_STATS_FILAMENTUSED_ES[] PROGMEM = "Filamento : "; +const char MSG_STATS_FILAMENTUSED_PL[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_DE[] PROGMEM = "Filamentverbrauch:"; +const char * const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_FILAMENTUSED_EN, + MSG_STATS_FILAMENTUSED_CZ, + MSG_STATS_FILAMENTUSED_IT, + MSG_STATS_FILAMENTUSED_ES, + MSG_STATS_FILAMENTUSED_PL, + MSG_STATS_FILAMENTUSED_DE +}; + +const char MSG_STATS_PRINTTIME_EN[] PROGMEM = "Print time: "; +const char MSG_STATS_PRINTTIME_CZ[] PROGMEM = "Cas tisku : "; +const char MSG_STATS_PRINTTIME_IT[] PROGMEM = "Tempo di stampa:"; +const char MSG_STATS_PRINTTIME_ES[] PROGMEM = "Tiempo de imp.:"; +const char MSG_STATS_PRINTTIME_PL[] PROGMEM = "Czas druku : "; +const char MSG_STATS_PRINTTIME_DE[] PROGMEM = "Druckzeit: "; +const char * const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_PRINTTIME_EN, + MSG_STATS_PRINTTIME_CZ, + MSG_STATS_PRINTTIME_IT, + MSG_STATS_PRINTTIME_ES, + MSG_STATS_PRINTTIME_PL, + MSG_STATS_PRINTTIME_DE +}; + +const char MSG_STATS_TOTALFILAMENT_EN[] PROGMEM = "Total filament :"; +const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; +const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; +const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; +const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; +const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Filament Gesamt:"; +const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_TOTALFILAMENT_EN, + MSG_STATS_TOTALFILAMENT_CZ, + MSG_STATS_TOTALFILAMENT_IT, + MSG_STATS_TOTALFILAMENT_ES, + MSG_STATS_TOTALFILAMENT_PL, + MSG_STATS_TOTALFILAMENT_DE +}; + +const char MSG_STATS_TOTALPRINTTIME_EN[] PROGMEM = "Total print time :"; +const char MSG_STATS_TOTALPRINTTIME_CZ[] PROGMEM = "Celkovy cas :"; +const char MSG_STATS_TOTALPRINTTIME_IT[] PROGMEM = "Tempo stampa tot:"; +const char MSG_STATS_TOTALPRINTTIME_ES[] PROGMEM = "Tiempo total :"; +const char MSG_STATS_TOTALPRINTTIME_PL[] PROGMEM = "Czas calkowity :"; +const char MSG_STATS_TOTALPRINTTIME_DE[] PROGMEM = "Totale Druckzeit:"; +const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_TOTALPRINTTIME_EN, + MSG_STATS_TOTALPRINTTIME_CZ, + MSG_STATS_TOTALPRINTTIME_IT, + MSG_STATS_TOTALPRINTTIME_ES, + MSG_STATS_TOTALPRINTTIME_PL, + MSG_STATS_TOTALPRINTTIME_DE +}; + +const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; +const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { + MSG_STEPPER_TOO_HIGH_EN +}; + +const char MSG_STOPPED_EN[] PROGMEM = "STOPPED. "; +const char MSG_STOPPED_IT[] PROGMEM = "ARRESTATO."; +const char MSG_STOPPED_ES[] PROGMEM = "PARADA"; +const char MSG_STOPPED_DE[] PROGMEM = "GESTOPPT. "; +const char * const MSG_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STOPPED_EN, + MSG_STOPPED_EN, + MSG_STOPPED_IT, + MSG_STOPPED_ES, + MSG_STOPPED_EN, + MSG_STOPPED_DE +}; + +const char MSG_STOP_PRINT_EN[] PROGMEM = "Stop print"; +const char MSG_STOP_PRINT_CZ[] PROGMEM = "Zastavit tisk"; +const char MSG_STOP_PRINT_IT[] PROGMEM = "Arresta stampa"; +const char MSG_STOP_PRINT_ES[] PROGMEM = "Detener impresion"; +const char MSG_STOP_PRINT_PL[] PROGMEM = "Zatrzymac druk"; +const char MSG_STOP_PRINT_DE[] PROGMEM = "Druck abbrechen"; +const char * const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STOP_PRINT_EN, + MSG_STOP_PRINT_CZ, + MSG_STOP_PRINT_IT, + MSG_STOP_PRINT_ES, + MSG_STOP_PRINT_PL, + MSG_STOP_PRINT_DE +}; + +const char MSG_STORE_EPROM_EN[] PROGMEM = "Store memory"; +const char * const MSG_STORE_EPROM_LANG_TABLE[1] PROGMEM = { + MSG_STORE_EPROM_EN +}; + +const char MSG_SUPPORT_EN[] PROGMEM = "Support"; +const char MSG_SUPPORT_CZ[] PROGMEM = "Podpora"; +const char MSG_SUPPORT_ES[] PROGMEM = "Soporte"; +const char MSG_SUPPORT_PL[] PROGMEM = "Pomoc"; +const char * const MSG_SUPPORT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SUPPORT_EN, + MSG_SUPPORT_CZ, + MSG_SUPPORT_EN, + MSG_SUPPORT_ES, + MSG_SUPPORT_PL, + MSG_SUPPORT_EN +}; + +const char MSG_SWITCH_PS_OFF_EN[] PROGMEM = "Switch power off"; +const char MSG_SWITCH_PS_OFF_CZ[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_PL[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_DE[] PROGMEM = "Netzteil AUS"; +const char * const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_CZ, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_PL, + MSG_SWITCH_PS_OFF_DE +}; + +const char MSG_SWITCH_PS_ON_EN[] PROGMEM = "Switch power on"; +const char MSG_SWITCH_PS_ON_CZ[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_PL[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_DE[] PROGMEM = "Netzteil EIN"; +const char * const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_CZ, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_PL, + MSG_SWITCH_PS_ON_DE +}; + +const char MSG_TAKE_EFFECT_EN[] PROGMEM = " for take effect"; +const char MSG_TAKE_EFFECT_CZ[] PROGMEM = " pro projeveni zmen"; +const char MSG_TAKE_EFFECT_IT[] PROGMEM = " per attualizzare"; +const char MSG_TAKE_EFFECT_ES[] PROGMEM = " para aplicar cambios"; +const char MSG_TAKE_EFFECT_PL[] PROGMEM = " wprow. zmian"; +const char MSG_TAKE_EFFECT_DE[] PROGMEM = " um wirksam zu werden"; +const char * const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TAKE_EFFECT_EN, + MSG_TAKE_EFFECT_CZ, + MSG_TAKE_EFFECT_IT, + MSG_TAKE_EFFECT_ES, + MSG_TAKE_EFFECT_PL, + MSG_TAKE_EFFECT_DE +}; + +const char MSG_TEMPERATURE_EN[] PROGMEM = "Temperature"; +const char MSG_TEMPERATURE_CZ[] PROGMEM = "Teplota"; +const char MSG_TEMPERATURE_IT[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_ES[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_PL[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_DE[] PROGMEM = "Temperatur"; +const char * const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMPERATURE_EN, + MSG_TEMPERATURE_CZ, + MSG_TEMPERATURE_IT, + MSG_TEMPERATURE_ES, + MSG_TEMPERATURE_PL, + MSG_TEMPERATURE_DE +}; + +const char MSG_TEMP_CALIBRATION_EN[] PROGMEM = "Temp. cal. "; +const char MSG_TEMP_CALIBRATION_CZ[] PROGMEM = "Tepl. kal. "; +const char MSG_TEMP_CALIBRATION_IT[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_ES[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_PL[] PROGMEM = "Ciepl. kal. "; +const char MSG_TEMP_CALIBRATION_DE[] PROGMEM = "PINDA Temp.Kal. "; +const char * const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_EN, + MSG_TEMP_CALIBRATION_CZ, + MSG_TEMP_CALIBRATION_IT, + MSG_TEMP_CALIBRATION_ES, + MSG_TEMP_CALIBRATION_PL, + MSG_TEMP_CALIBRATION_DE +}; + +const char MSG_TEMP_CALIBRATION_DONE_EN[] PROGMEM = "Temperature calibration is finished. Click to continue."; +const char MSG_TEMP_CALIBRATION_DONE_CZ[] PROGMEM = "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka."; +const char MSG_TEMP_CALIBRATION_DONE_IT[] PROGMEM = "Taratura temperatura terminata. Fare click per continuare."; +const char MSG_TEMP_CALIBRATION_DONE_ES[] PROGMEM = "Calibracon temperatura terminada. Presionar para continuar."; +const char MSG_TEMP_CALIBRATION_DONE_PL[] PROGMEM = "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"; +const char MSG_TEMP_CALIBRATION_DONE_DE[] PROGMEM = "Die PINDA Temperaturkalibrierung ist beendet. Klicke um fortzufahren."; +const char * const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_DONE_EN, + MSG_TEMP_CALIBRATION_DONE_CZ, + MSG_TEMP_CALIBRATION_DONE_IT, + MSG_TEMP_CALIBRATION_DONE_ES, + MSG_TEMP_CALIBRATION_DONE_PL, + MSG_TEMP_CALIBRATION_DONE_DE +}; + +const char MSG_TEMP_CALIBRATION_OFF_EN[] PROGMEM = "Temp. cal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_CZ[] PROGMEM = "Tepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_IT[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_ES[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_PL[] PROGMEM = "Ciepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_DE[] PROGMEM = "PINDA T.Kal.[OFF]"; +const char * const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_OFF_EN, + MSG_TEMP_CALIBRATION_OFF_CZ, + MSG_TEMP_CALIBRATION_OFF_IT, + MSG_TEMP_CALIBRATION_OFF_ES, + MSG_TEMP_CALIBRATION_OFF_PL, + MSG_TEMP_CALIBRATION_OFF_DE +}; + +const char MSG_TEMP_CALIBRATION_ON_EN[] PROGMEM = "Temp. cal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_CZ[] PROGMEM = "Tepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_IT[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_ES[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_PL[] PROGMEM = "Ciepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_DE[] PROGMEM = "PINDA T.Kal. [ON]"; +const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_ON_EN, + MSG_TEMP_CALIBRATION_ON_CZ, + MSG_TEMP_CALIBRATION_ON_IT, + MSG_TEMP_CALIBRATION_ON_ES, + MSG_TEMP_CALIBRATION_ON_PL, + MSG_TEMP_CALIBRATION_ON_DE +}; + +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; +const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE +}; + +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlashAir]"; +const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE +}; + +const char MSG_TUNE_EN[] PROGMEM = "Tune"; +const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; +const char MSG_TUNE_IT[] PROGMEM = "Regola"; +const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; +const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; +const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; +const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TUNE_EN, + MSG_TUNE_CZ, + MSG_TUNE_IT, + MSG_TUNE_ES, + MSG_TUNE_PL, + MSG_TUNE_DE +}; + +const char MSG_UNKNOWN_COMMAND_EN[] PROGMEM = "Unknown command: \""; +const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = { + MSG_UNKNOWN_COMMAND_EN +}; + +const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament"; +const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament"; +const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento"; +const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento"; +const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament"; +const char MSG_UNLOADING_FILAMENT_DE[] PROGMEM = "Filament auswerfen"; +const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOADING_FILAMENT_EN, + MSG_UNLOADING_FILAMENT_CZ, + MSG_UNLOADING_FILAMENT_IT, + MSG_UNLOADING_FILAMENT_ES, + MSG_UNLOADING_FILAMENT_PL, + MSG_UNLOADING_FILAMENT_DE +}; + +const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; +const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; +const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; +const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; +const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; +const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Alles entladen"; +const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_ALL_EN, + MSG_UNLOAD_ALL_CZ, + MSG_UNLOAD_ALL_IT, + MSG_UNLOAD_ALL_ES, + MSG_UNLOAD_ALL_PL, + MSG_UNLOAD_ALL_DE +}; + +const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; +const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; +const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; +const char MSG_UNLOAD_FILAMENT_ES[] PROGMEM = "Soltar filamento"; +const char MSG_UNLOAD_FILAMENT_PL[] PROGMEM = "Wyjac filament"; +const char MSG_UNLOAD_FILAMENT_DE[] PROGMEM = "Filament entnehmen"; +const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_EN, + MSG_UNLOAD_FILAMENT_CZ, + MSG_UNLOAD_FILAMENT_IT, + MSG_UNLOAD_FILAMENT_ES, + MSG_UNLOAD_FILAMENT_PL, + MSG_UNLOAD_FILAMENT_DE +}; + +const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; +const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; +const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; +const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Filam. 1 entladen"; +const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_1_EN, + MSG_UNLOAD_FILAMENT_1_CZ, + MSG_UNLOAD_FILAMENT_1_IT, + MSG_UNLOAD_FILAMENT_1_ES, + MSG_UNLOAD_FILAMENT_1_PL, + MSG_UNLOAD_FILAMENT_1_DE +}; + +const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; +const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; +const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; +const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; +const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Filam. 2 entladen"; +const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_2_EN, + MSG_UNLOAD_FILAMENT_2_CZ, + MSG_UNLOAD_FILAMENT_2_IT, + MSG_UNLOAD_FILAMENT_2_ES, + MSG_UNLOAD_FILAMENT_2_PL, + MSG_UNLOAD_FILAMENT_2_DE +}; + +const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; +const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; +const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; +const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; +const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Filam. 3 entladen"; +const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_3_EN, + MSG_UNLOAD_FILAMENT_3_CZ, + MSG_UNLOAD_FILAMENT_3_IT, + MSG_UNLOAD_FILAMENT_3_ES, + MSG_UNLOAD_FILAMENT_3_PL, + MSG_UNLOAD_FILAMENT_3_DE +}; + +const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; +const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; +const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; +const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; +const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Filam. 4 entladen"; +const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_4_EN, + MSG_UNLOAD_FILAMENT_4_CZ, + MSG_UNLOAD_FILAMENT_4_IT, + MSG_UNLOAD_FILAMENT_4_ES, + MSG_UNLOAD_FILAMENT_4_PL, + MSG_UNLOAD_FILAMENT_4_DE +}; + +const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; +const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; +const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; +const char MSG_USB_PRINTING_ES[] PROGMEM = "Impresion de USB "; +const char MSG_USB_PRINTING_PL[] PROGMEM = "Druk z USB "; +const char MSG_USB_PRINTING_DE[] PROGMEM = "Drucken ueber USB"; +const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USB_PRINTING_EN, + MSG_USB_PRINTING_CZ, + MSG_USB_PRINTING_IT, + MSG_USB_PRINTING_ES, + MSG_USB_PRINTING_PL, + MSG_USB_PRINTING_DE +}; + +const char MSG_USED_EN[] PROGMEM = "Used during print"; +const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku"; +const char MSG_USED_IT[] PROGMEM = "Usati nella stampa"; +const char MSG_USED_ES[] PROGMEM = "Usado en impresion"; +const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku"; +const char MSG_USED_DE[] PROGMEM = "Benutzt beim Druck"; +const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USED_EN, + MSG_USED_CZ, + MSG_USED_IT, + MSG_USED_ES, + MSG_USED_PL, + MSG_USED_DE +}; + +const char MSG_USERWAIT_EN[] PROGMEM = "Wait for user..."; +const char MSG_USERWAIT_IT[] PROGMEM = "Attendendo utente"; +const char MSG_USERWAIT_ES[] PROGMEM = "Esperando ordenes"; +const char MSG_USERWAIT_DE[] PROGMEM = "Warte auf Nutzer..."; +const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USERWAIT_EN, + MSG_USERWAIT_EN, + MSG_USERWAIT_IT, + MSG_USERWAIT_ES, + MSG_USERWAIT_EN, + MSG_USERWAIT_DE +}; + +const char MSG_VMIN_EN[] PROGMEM = "Vmin"; +const char * const MSG_VMIN_LANG_TABLE[1] PROGMEM = { + MSG_VMIN_EN +}; + +const char MSG_VOLUMETRIC_EN[] PROGMEM = "Filament"; +const char * const MSG_VOLUMETRIC_LANG_TABLE[1] PROGMEM = { + MSG_VOLUMETRIC_EN +}; + +const char MSG_VOLUMETRIC_ENABLED_EN[] PROGMEM = "E in mm3"; +const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1] PROGMEM = { + MSG_VOLUMETRIC_ENABLED_EN +}; + +const char MSG_VTRAV_MIN_EN[] PROGMEM = "VTrav min"; +const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = { + MSG_VTRAV_MIN_EN +}; + +const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for nozzle and bed cooling"; +const char MSG_WAITING_TEMP_CZ[] PROGMEM = "Cekani na zchladnuti trysky a podlozky."; +const char MSG_WAITING_TEMP_IT[] PROGMEM = "In attesa del raffreddamento della testina e del piatto"; +const char MSG_WAITING_TEMP_ES[] PROGMEM = "Esperando enfriamiento de la cama y del extrusor."; +const char MSG_WAITING_TEMP_PL[] PROGMEM = "Oczekiwanie na wychlodzenie dyszy i podkladki."; +const char MSG_WAITING_TEMP_DE[] PROGMEM = "Warten auf Abkuehlung von Duese und Bett."; +const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WAITING_TEMP_EN, + MSG_WAITING_TEMP_CZ, + MSG_WAITING_TEMP_IT, + MSG_WAITING_TEMP_ES, + MSG_WAITING_TEMP_PL, + MSG_WAITING_TEMP_DE +}; + +const char MSG_WATCH_EN[] PROGMEM = "Info screen"; +const char MSG_WATCH_CZ[] PROGMEM = "Informace"; +const char MSG_WATCH_IT[] PROGMEM = "Schermata info"; +const char MSG_WATCH_ES[] PROGMEM = "Monitorizar"; +const char MSG_WATCH_PL[] PROGMEM = "Informacje"; +const char MSG_WATCH_DE[] PROGMEM = "Information"; +const char * const MSG_WATCH_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WATCH_EN, + MSG_WATCH_CZ, + MSG_WATCH_IT, + MSG_WATCH_ES, + MSG_WATCH_PL, + MSG_WATCH_DE +}; + +const char MSG_WATCHDOG_RESET_EN[] PROGMEM = " Watchdog Reset"; +const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { + MSG_WATCHDOG_RESET_EN +}; + +const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; +const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; +const char MSG_XYZ_DETAILS_IT[] PROGMEM = "XYZ Cal. dettagli"; +const char MSG_XYZ_DETAILS_ES[] PROGMEM = "Inform. XYZ cal."; +const char MSG_XYZ_DETAILS_PL[] PROGMEM = "Szczegoly kal.XYZ"; +const char MSG_XYZ_DETAILS_DE[] PROGMEM = "XYZ Kal. Details"; +const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_XYZ_DETAILS_EN, + MSG_XYZ_DETAILS_CZ, + MSG_XYZ_DETAILS_IT, + MSG_XYZ_DETAILS_ES, + MSG_XYZ_DETAILS_PL, + MSG_XYZ_DETAILS_DE +}; + +const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; +const char * const MSG_X_MAX_LANG_TABLE[1] PROGMEM = { + MSG_X_MAX_EN +}; + +const char MSG_X_MIN_EN[] PROGMEM = "x_min: "; +const char * const MSG_X_MIN_LANG_TABLE[1] PROGMEM = { + MSG_X_MIN_EN +}; + +const char MSG_YES_EN[] PROGMEM = "Yes"; +const char MSG_YES_CZ[] PROGMEM = "Ano"; +const char MSG_YES_IT[] PROGMEM = "Si"; +const char MSG_YES_ES[] PROGMEM = "Si"; +const char MSG_YES_PL[] PROGMEM = "Tak"; +const char MSG_YES_DE[] PROGMEM = "Ja"; +const char * const MSG_YES_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_YES_EN, + MSG_YES_CZ, + MSG_YES_IT, + MSG_YES_ES, + MSG_YES_PL, + MSG_YES_DE +}; + +const char MSG_Y_DISTANCE_FROM_MIN_EN[] PROGMEM = "Y distance from min:"; +const char MSG_Y_DISTANCE_FROM_MIN_CZ[] PROGMEM = "Y vzdalenost od min:"; +const char MSG_Y_DISTANCE_FROM_MIN_IT[] PROGMEM = "Distanza Y da min:"; +const char MSG_Y_DISTANCE_FROM_MIN_ES[] PROGMEM = "Dist. Y desde min:"; +const char MSG_Y_DISTANCE_FROM_MIN_PL[] PROGMEM = "Odleglosc Y od min.:"; +const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung von min"; +const char * const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_Y_DISTANCE_FROM_MIN_EN, + MSG_Y_DISTANCE_FROM_MIN_CZ, + MSG_Y_DISTANCE_FROM_MIN_IT, + MSG_Y_DISTANCE_FROM_MIN_ES, + MSG_Y_DISTANCE_FROM_MIN_PL, + MSG_Y_DISTANCE_FROM_MIN_DE +}; + +const char MSG_Y_MAX_EN[] PROGMEM = "y_max: "; +const char * const MSG_Y_MAX_LANG_TABLE[1] PROGMEM = { + MSG_Y_MAX_EN +}; + +const char MSG_Y_MIN_EN[] PROGMEM = "y_min: "; +const char * const MSG_Y_MIN_LANG_TABLE[1] PROGMEM = { + MSG_Y_MIN_EN +}; + +const char MSG_ZPROBE_OUT_EN[] PROGMEM = "Z probe out. bed"; +const char * const MSG_ZPROBE_OUT_LANG_TABLE[1] PROGMEM = { + MSG_ZPROBE_OUT_EN +}; + +const char MSG_ZPROBE_ZOFFSET_EN[] PROGMEM = "Z Offset"; +const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1] PROGMEM = { + MSG_ZPROBE_ZOFFSET_EN +}; + +const char MSG_Z_MAX_EN[] PROGMEM = "z_max: "; +const char * const MSG_Z_MAX_LANG_TABLE[1] PROGMEM = { + MSG_Z_MAX_EN +}; + +const char MSG_Z_MIN_EN[] PROGMEM = "z_min: "; +const char * const MSG_Z_MIN_LANG_TABLE[1] PROGMEM = { + MSG_Z_MIN_EN +}; + +const char WELCOME_MSG_EN[] PROGMEM = CUSTOM_MENDEL_NAME " ready."; +const char WELCOME_MSG_CZ[] PROGMEM = CUSTOM_MENDEL_NAME " ok"; +const char WELCOME_MSG_IT[] PROGMEM = CUSTOM_MENDEL_NAME " pronta."; +const char WELCOME_MSG_ES[] PROGMEM = CUSTOM_MENDEL_NAME " prep."; +const char WELCOME_MSG_PL[] PROGMEM = CUSTOM_MENDEL_NAME " gotowa"; +const char WELCOME_MSG_DE[] PROGMEM = CUSTOM_MENDEL_NAME " bereit."; +const char * const WELCOME_MSG_LANG_TABLE[LANG_NUM] PROGMEM = { + WELCOME_MSG_EN, + WELCOME_MSG_CZ, + WELCOME_MSG_IT, + WELCOME_MSG_ES, + WELCOME_MSG_PL, + WELCOME_MSG_DE +}; + + +char langbuffer[LCD_WIDTH+1]; +char* CAT2(const char *s1,const char *s2) { + unsigned char len=0; + strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); + len+=strlen_P(s1); + strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); + return langbuffer; +} +char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4) { + unsigned char len=0; + strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); + len+=strlen_P(s1); + strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); + len+=strlen_P(s2); + strncpy_P(langbuffer+len,s3,LCD_WIDTH-len); + len+=strlen_P(s3); + strncpy_P(langbuffer+len,s4,LCD_WIDTH-len); + return langbuffer; +} diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 209c4954a..297ab4d51 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -1,671 +1,671 @@ -#ifndef LANGUAGE_ALL_H -#define LANGUAGE_ALL_H - -#include -// Language indices into their particular symbol tables. -#define LANG_ID_EN 0 -#define LANG_ID_CZ 1 -#define LANG_ID_IT 2 -#define LANG_ID_ES 3 -#define LANG_ID_PL 4 -#define LANG_ID_DE 5 -// Language is not defined and it shall be selected from the menu. -#define LANG_ID_FORCE_SELECTION 254 -// Language is not defined on a virgin RAMBo board. -#define LANG_ID_UNDEFINED 255 - -// Default language ID, if no language is selected. -#define LANG_ID_DEFAULT LANG_ID_CZ - -// Number of languages available in the language table. -#define LANG_NUM 6 - -// Currectly active language selection. -extern unsigned char lang_selected; - -#define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG)))) -#define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected) - -extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1]; -#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM]; -#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE) -extern const char* const MSG_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_ALL LANG_TABLE_SELECT(MSG_ALL_LANG_TABLE) -extern const char* const MSG_AMAX_LANG_TABLE[1]; -#define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0) -extern const char* const MSG_AUTHOR_LANG_TABLE[1]; -#define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) -extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; -#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) -extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; -#define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_X_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Y_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_Z_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_Z LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Z_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1]; -#define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1]; -#define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM]; -#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE) -extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM]; -#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE) -extern const char* const MSG_BED_LANG_TABLE[LANG_NUM]; -#define MSG_BED LANG_TABLE_SELECT(MSG_BED_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT(MSG_BED_CORRECTION_RESET_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE) -extern const char* const MSG_BED_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_BED_DONE LANG_TABLE_SELECT(MSG_BED_DONE_LANG_TABLE) -extern const char* const MSG_BED_HEATING_LANG_TABLE[LANG_NUM]; -#define MSG_BED_HEATING LANG_TABLE_SELECT(MSG_BED_HEATING_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE) -extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1]; -#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0) -extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1]; -#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE) -extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE) -extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE) -extern const char* const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) -extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE) -extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE) -extern const char* const MSG_CENTER_LANG_TABLE[LANG_NUM]; -#define MSG_CENTER LANG_TABLE_SELECT(MSG_CENTER_LANG_TABLE) -extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE) -extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE) -extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE) -extern const char* const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT(MSG_CHOOSE_EXTRUDER_LANG_TABLE) -extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM]; -#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE) -extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1]; -#define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0) -extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1]; -#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0) -extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE) -extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE) -extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE) -extern const char* const MSG_CONTROL_LANG_TABLE[1]; -#define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0) -extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; -#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE) -extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; -#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) -extern const char* const MSG_COUNT_X_LANG_TABLE[1]; -#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) -extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; -#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE) -extern const char* const MSG_DATE_LANG_TABLE[LANG_NUM]; -#define MSG_DATE LANG_TABLE_SELECT(MSG_DATE_LANG_TABLE) -extern const char* const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[1]; -#define MSG_DEFAULT_SETTINGS_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE, 0) -extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM]; -#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE) -extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM]; -#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE) -extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1]; -#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0) -extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1]; -#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_HIT_LANG_TABLE, 0) -extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1]; -#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0) -extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1]; -#define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0) -extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM]; -#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE) -extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1]; -#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0) -extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1]; -#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE, 0) -extern const char* const MSG_ERR_KILLED_LANG_TABLE[1]; -#define MSG_ERR_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_KILLED_LANG_TABLE, 0) -extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[1]; -#define MSG_ERR_LINE_NO LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LINE_NO_LANG_TABLE, 0) -extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1]; -#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1]; -#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_CHECKSUM_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1]; -#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1]; -#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_THERMISTORS_LANG_TABLE, 0) -extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1]; -#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0) -extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1]; -#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER LANG_TABLE_SELECT(MSG_EXTRUDER_LANG_TABLE) -extern const char* const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_1 LANG_TABLE_SELECT(MSG_EXTRUDER_1_LANG_TABLE) -extern const char* const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_2 LANG_TABLE_SELECT(MSG_EXTRUDER_2_LANG_TABLE) -extern const char* const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_3 LANG_TABLE_SELECT(MSG_EXTRUDER_3_LANG_TABLE) -extern const char* const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_4 LANG_TABLE_SELECT(MSG_EXTRUDER_4_LANG_TABLE) -extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM]; -#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE) -extern const char* const MSG_Enqueing_LANG_TABLE[1]; -#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0) -extern const char* const MSG_FACTOR_LANG_TABLE[1]; -#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) -extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; -#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) -extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1]; -#define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0) -extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) -extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) -extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; -#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) -extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; -#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0) -extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM]; -#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) -extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM]; -#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT(MSG_FINISHING_MOVEMENTS_LANG_TABLE) -extern const char* const MSG_FLOW_LANG_TABLE[LANG_NUM]; -#define MSG_FLOW LANG_TABLE_SELECT(MSG_FLOW_LANG_TABLE) -extern const char* const MSG_FLOW0_LANG_TABLE[1]; -#define MSG_FLOW0 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW0_LANG_TABLE, 0) -extern const char* const MSG_FLOW1_LANG_TABLE[1]; -#define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) -extern const char* const MSG_FLOW2_LANG_TABLE[1]; -#define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) -extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; -#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) -extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; -#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) -extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; -#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) -extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; -#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT(MSG_HEATING_COMPLETE_LANG_TABLE) -extern const char* const MSG_HOMEYZ_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ LANG_TABLE_SELECT(MSG_HOMEYZ_LANG_TABLE) -extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE) -extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE) -extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1]; -#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) -extern const char* const MSG_INIT_SDCARD_LANG_TABLE[1]; -#define MSG_INIT_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_INIT_SDCARD_LANG_TABLE, 0) -extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE) -extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM]; -#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE) -extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM]; -#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT(MSG_LANGUAGE_NAME_LANG_TABLE) -#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, LANG) -extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM]; -#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT(MSG_LANGUAGE_SELECT_LANG_TABLE) -#define MSG_LANGUAGE_SELECT_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, LANG) -extern const char* const MSG_LEFT_LANG_TABLE[LANG_NUM]; -#define MSG_LEFT LANG_TABLE_SELECT(MSG_LEFT_LANG_TABLE) -extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; -#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) -extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) -extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) -extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; -#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) -extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM]; -#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE) -extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M115_REPORT_LANG_TABLE[1]; -#define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0) -extern const char* const MSG_M119_REPORT_LANG_TABLE[1]; -#define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0) -extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM]; -#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) -extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM]; -#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE) -extern const char* const MSG_MAX_LANG_TABLE[1]; -#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) -extern const char* const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURED_SKEW LANG_TABLE_SELECT(MSG_MEASURED_SKEW_LANG_TABLE) -extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE) -extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE) -extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM]; -#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT(MSG_MENU_CALIBRATION_LANG_TABLE) -extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM]; -#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT(MSG_MESH_BED_LEVELING_LANG_TABLE) -extern const char* const MSG_MIN_LANG_TABLE[1]; -#define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0) -extern const char* const MSG_MOTION_LANG_TABLE[1]; -#define MSG_MOTION LANG_TABLE_SELECT_EXPLICIT(MSG_MOTION_LANG_TABLE, 0) -extern const char* const MSG_MOVE_01MM_LANG_TABLE[1]; -#define MSG_MOVE_01MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_01MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_10MM_LANG_TABLE[1]; -#define MSG_MOVE_10MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_10MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_1MM_LANG_TABLE[1]; -#define MSG_MOVE_1MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_1MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_AXIS LANG_TABLE_SELECT(MSG_MOVE_AXIS_LANG_TABLE) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE) -extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE) -extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE) -extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_Y LANG_TABLE_SELECT(MSG_MOVE_Y_LANG_TABLE) -extern const char* const MSG_MOVE_Z_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_Z LANG_TABLE_SELECT(MSG_MOVE_Z_LANG_TABLE) -extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM]; -#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE) -extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM]; -#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE) -extern const char* const MSG_NO_LANG_TABLE[LANG_NUM]; -#define MSG_NO LANG_TABLE_SELECT(MSG_NO_LANG_TABLE) -extern const char* const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM]; -#define MSG_NOT_COLOR LANG_TABLE_SELECT(MSG_NOT_COLOR_LANG_TABLE) -extern const char* const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM]; -#define MSG_NOT_LOADED LANG_TABLE_SELECT(MSG_NOT_LOADED_LANG_TABLE) -extern const char* const MSG_NOZZLE_LANG_TABLE[LANG_NUM]; -#define MSG_NOZZLE LANG_TABLE_SELECT(MSG_NOZZLE_LANG_TABLE) -extern const char* const MSG_NOZZLE1_LANG_TABLE[1]; -#define MSG_NOZZLE1 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE1_LANG_TABLE, 0) -extern const char* const MSG_NOZZLE2_LANG_TABLE[1]; -#define MSG_NOZZLE2 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE2_LANG_TABLE, 0) -extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM]; -#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE) -extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM]; -#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE) -extern const char* const MSG_OFF_LANG_TABLE[1]; -#define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0) -extern const char* const MSG_OK_LANG_TABLE[1]; -#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) -extern const char* const MSG_ON_LANG_TABLE[1]; -#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) -extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM]; -#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE) -extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) -extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; -#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE) -extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_PID_EXTRUDER LANG_TABLE_SELECT(MSG_PID_EXTRUDER_LANG_TABLE) -extern const char* const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM]; -#define MSG_PID_FINISHED LANG_TABLE_SELECT(MSG_PID_FINISHED_LANG_TABLE) -extern const char* const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM]; -#define MSG_PID_RUNNING LANG_TABLE_SELECT(MSG_PID_RUNNING_LANG_TABLE) -extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; -#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) -extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; -#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) -extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; -#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) -extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; -#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) -extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; -#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0) -extern const char* const MSG_POWERUP_LANG_TABLE[1]; -#define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0) -extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; -#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) -extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; -#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) -extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) -extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; -#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) -extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1]; -#define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINTER_DISCONNECTED_LANG_TABLE, 0) -extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; -#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) -extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM]; -#define MSG_PRINT_PAUSED LANG_TABLE_SELECT(MSG_PRINT_PAUSED_LANG_TABLE) -extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D LANG_TABLE_SELECT(MSG_PRUSA3D_LANG_TABLE) -extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT(MSG_PRUSA3D_FORUM_LANG_TABLE) -extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE) -extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM]; -#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE) -extern const char* const MSG_RECTRACT_LANG_TABLE[1]; -#define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) -extern const char* const MSG_REFRESH_LANG_TABLE[1]; -#define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) -extern const char* const MSG_RESEND_LANG_TABLE[1]; -#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) -extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; -#define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0) -extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; -#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) -extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE) -extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM]; -#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE) -extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_RESUMING_PRINT LANG_TABLE_SELECT(MSG_RESUMING_PRINT_LANG_TABLE) -extern const char* const MSG_RIGHT_LANG_TABLE[LANG_NUM]; -#define MSG_RIGHT LANG_TABLE_SELECT(MSG_RIGHT_LANG_TABLE) -extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1]; -#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0) -extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1]; -#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE, 0) -extern const char* const MSG_SD_CARD_OK_LANG_TABLE[1]; -#define MSG_SD_CARD_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CARD_OK_LANG_TABLE, 0) -extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1]; -#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE, 0) -extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[1]; -#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_OPENED_LANG_TABLE, 0) -extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1]; -#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0) -extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1]; -#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM]; -#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE) -extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1]; -#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0) -extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1]; -#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPENROOT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1]; -#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1]; -#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0) -extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM]; -#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE) -extern const char* const MSG_SD_SIZE_LANG_TABLE[1]; -#define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0) -extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1]; -#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1]; -#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1]; -#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE) -extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT(MSG_SELFTEST_BEDHEATER_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_X_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) -extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) -extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) -extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE) -extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) -extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT(MSG_SELFTEST_MOTOR_LANG_TABLE) -extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE) -extern const char* const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_OK LANG_TABLE_SELECT(MSG_SELFTEST_OK_LANG_TABLE) -extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE) -extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE) -extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE) -extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1]; -#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0) -extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM]; -#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE) -extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[1]; -#define MSG_SET_HOME_OFFSETS LANG_TABLE_SELECT_EXPLICIT(MSG_SET_HOME_OFFSETS_LANG_TABLE, 0) -extern const char* const MSG_SET_ORIGIN_LANG_TABLE[1]; -#define MSG_SET_ORIGIN LANG_TABLE_SELECT_EXPLICIT(MSG_SET_ORIGIN_LANG_TABLE, 0) -extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM]; -#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT(MSG_SET_TEMPERATURE_LANG_TABLE) -extern const char* const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_SEVERE_SKEW LANG_TABLE_SELECT(MSG_SEVERE_SKEW_LANG_TABLE) -extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT(MSG_SHOW_END_STOPS_LANG_TABLE) -extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE) -extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM]; -#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE) -extern const char* const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_SLIGHT_SKEW LANG_TABLE_SELECT(MSG_SLIGHT_SKEW_LANG_TABLE) -extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1]; -#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) -extern const char* const MSG_SORTING_LANG_TABLE[1]; -#define MSG_SORTING LANG_TABLE_SELECT_EXPLICIT(MSG_SORTING_LANG_TABLE, 0) -extern const char* const MSG_SORT_ALPHA_LANG_TABLE[1]; -#define MSG_SORT_ALPHA LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_ALPHA_LANG_TABLE, 0) -extern const char* const MSG_SORT_NONE_LANG_TABLE[1]; -#define MSG_SORT_NONE LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_NONE_LANG_TABLE, 0) -extern const char* const MSG_SORT_TIME_LANG_TABLE[1]; -#define MSG_SORT_TIME LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_TIME_LANG_TABLE, 0) -extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; -#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) -extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; -#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) -extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; -#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) -extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT(MSG_STATS_FILAMENTUSED_LANG_TABLE) -extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT(MSG_STATS_PRINTTIME_LANG_TABLE) -extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) -extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) -extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; -#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) -extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; -#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE) -extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE) -extern const char* const MSG_STORE_EPROM_LANG_TABLE[1]; -#define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0) -extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM]; -#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE) -extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT(MSG_SWITCH_PS_OFF_LANG_TABLE) -extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM]; -#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT(MSG_SWITCH_PS_ON_LANG_TABLE) -extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM]; -#define MSG_TAKE_EFFECT LANG_TABLE_SELECT(MSG_TAKE_EFFECT_LANG_TABLE) -extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM]; -#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE) -extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM]; -#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) -extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; -#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) -extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) -extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) -extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; -#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) -extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; -#define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) -extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; -#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) -extern const char* const MSG_VMIN_LANG_TABLE[1]; -#define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) -extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; -#define MSG_VOLUMETRIC LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_LANG_TABLE, 0) -extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1]; -#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0) -extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1]; -#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0) -extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM]; -#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE) -extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; -#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) -extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; -#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) -extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; -#define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) -extern const char* const MSG_X_MAX_LANG_TABLE[1]; -#define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) -extern const char* const MSG_X_MIN_LANG_TABLE[1]; -#define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0) -extern const char* const MSG_YES_LANG_TABLE[LANG_NUM]; -#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE) -extern const char* const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM]; -#define MSG_Y_DISTANCE_FROM_MIN LANG_TABLE_SELECT(MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE) -extern const char* const MSG_Y_MAX_LANG_TABLE[1]; -#define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0) -extern const char* const MSG_Y_MIN_LANG_TABLE[1]; -#define MSG_Y_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MIN_LANG_TABLE, 0) -extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[1]; -#define MSG_ZPROBE_OUT LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_OUT_LANG_TABLE, 0) -extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1]; -#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_ZOFFSET_LANG_TABLE, 0) -extern const char* const MSG_Z_MAX_LANG_TABLE[1]; -#define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0) -extern const char* const MSG_Z_MIN_LANG_TABLE[1]; -#define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0) -extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM]; -#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE) - -extern char* CAT2(const char *s1,const char *s2); -extern char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4); - -#endif //LANGUAGE_ALL.H +#ifndef LANGUAGE_ALL_H +#define LANGUAGE_ALL_H + +#include +// Language indices into their particular symbol tables. +#define LANG_ID_EN 0 +#define LANG_ID_CZ 1 +#define LANG_ID_IT 2 +#define LANG_ID_ES 3 +#define LANG_ID_PL 4 +#define LANG_ID_DE 5 +// Language is not defined and it shall be selected from the menu. +#define LANG_ID_FORCE_SELECTION 254 +// Language is not defined on a virgin RAMBo board. +#define LANG_ID_UNDEFINED 255 + +// Default language ID, if no language is selected. +#define LANG_ID_DEFAULT LANG_ID_CZ + +// Number of languages available in the language table. +#define LANG_NUM 6 + +// Currectly active language selection. +extern unsigned char lang_selected; + +#define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG)))) +#define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected) + +extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1]; +#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM]; +#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE) +extern const char* const MSG_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_ALL LANG_TABLE_SELECT(MSG_ALL_LANG_TABLE) +extern const char* const MSG_AMAX_LANG_TABLE[1]; +#define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0) +extern const char* const MSG_AUTHOR_LANG_TABLE[1]; +#define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) +extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; +#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) +extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; +#define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_X_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Y_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_Z_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_Z LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Z_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1]; +#define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1]; +#define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE) +extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE) +extern const char* const MSG_BED_LANG_TABLE[LANG_NUM]; +#define MSG_BED LANG_TABLE_SELECT(MSG_BED_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT(MSG_BED_CORRECTION_RESET_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE) +extern const char* const MSG_BED_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_BED_DONE LANG_TABLE_SELECT(MSG_BED_DONE_LANG_TABLE) +extern const char* const MSG_BED_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_BED_HEATING LANG_TABLE_SELECT(MSG_BED_HEATING_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE) +extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1]; +#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0) +extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1]; +#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0) +extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE) +extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE) +extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE) +extern const char* const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) +extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE) +extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE) +extern const char* const MSG_CENTER_LANG_TABLE[LANG_NUM]; +#define MSG_CENTER LANG_TABLE_SELECT(MSG_CENTER_LANG_TABLE) +extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE) +extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE) +extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE) +extern const char* const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT(MSG_CHOOSE_EXTRUDER_LANG_TABLE) +extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM]; +#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE) +extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1]; +#define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0) +extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1]; +#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0) +extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE) +extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE) +extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE) +extern const char* const MSG_CONTROL_LANG_TABLE[1]; +#define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0) +extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; +#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE) +extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; +#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) +extern const char* const MSG_COUNT_X_LANG_TABLE[1]; +#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) +extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; +#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE) +extern const char* const MSG_DATE_LANG_TABLE[LANG_NUM]; +#define MSG_DATE LANG_TABLE_SELECT(MSG_DATE_LANG_TABLE) +extern const char* const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_DEFAULT_SETTINGS_LOADED LANG_TABLE_SELECT(MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE) +extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM]; +#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE) +extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM]; +#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE) +extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1]; +#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0) +extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1]; +#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_HIT_LANG_TABLE, 0) +extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1]; +#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0) +extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1]; +#define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0) +extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE) +extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1]; +#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0) +extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1]; +#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE, 0) +extern const char* const MSG_ERR_KILLED_LANG_TABLE[1]; +#define MSG_ERR_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_KILLED_LANG_TABLE, 0) +extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[1]; +#define MSG_ERR_LINE_NO LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LINE_NO_LANG_TABLE, 0) +extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1]; +#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1]; +#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_CHECKSUM_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1]; +#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1]; +#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_THERMISTORS_LANG_TABLE, 0) +extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1]; +#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0) +extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1]; +#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0) +extern const char* const MSG_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER LANG_TABLE_SELECT(MSG_EXTRUDER_LANG_TABLE) +extern const char* const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_1 LANG_TABLE_SELECT(MSG_EXTRUDER_1_LANG_TABLE) +extern const char* const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_2 LANG_TABLE_SELECT(MSG_EXTRUDER_2_LANG_TABLE) +extern const char* const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_3 LANG_TABLE_SELECT(MSG_EXTRUDER_3_LANG_TABLE) +extern const char* const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_4 LANG_TABLE_SELECT(MSG_EXTRUDER_4_LANG_TABLE) +extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM]; +#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE) +extern const char* const MSG_Enqueing_LANG_TABLE[1]; +#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0) +extern const char* const MSG_FACTOR_LANG_TABLE[1]; +#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) +extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) +extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1]; +#define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0) +extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) +extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) +extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; +#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) +extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; +#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0) +extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM]; +#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) +extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM]; +#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT(MSG_FINISHING_MOVEMENTS_LANG_TABLE) +extern const char* const MSG_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FLOW LANG_TABLE_SELECT(MSG_FLOW_LANG_TABLE) +extern const char* const MSG_FLOW0_LANG_TABLE[1]; +#define MSG_FLOW0 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW0_LANG_TABLE, 0) +extern const char* const MSG_FLOW1_LANG_TABLE[1]; +#define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) +extern const char* const MSG_FLOW2_LANG_TABLE[1]; +#define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) +extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) +extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; +#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) +extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) +extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT(MSG_HEATING_COMPLETE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ LANG_TABLE_SELECT(MSG_HOMEYZ_LANG_TABLE) +extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE) +extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1]; +#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) +extern const char* const MSG_INIT_SDCARD_LANG_TABLE[1]; +#define MSG_INIT_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_INIT_SDCARD_LANG_TABLE, 0) +extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE) +extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM]; +#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE) +extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT(MSG_LANGUAGE_NAME_LANG_TABLE) +#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, LANG) +extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT(MSG_LANGUAGE_SELECT_LANG_TABLE) +#define MSG_LANGUAGE_SELECT_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, LANG) +extern const char* const MSG_LEFT_LANG_TABLE[LANG_NUM]; +#define MSG_LEFT LANG_TABLE_SELECT(MSG_LEFT_LANG_TABLE) +extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) +extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) +extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; +#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) +extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM]; +#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE) +extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M115_REPORT_LANG_TABLE[1]; +#define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0) +extern const char* const MSG_M119_REPORT_LANG_TABLE[1]; +#define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0) +extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM]; +#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) +extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM]; +#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE) +extern const char* const MSG_MAX_LANG_TABLE[1]; +#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) +extern const char* const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURED_SKEW LANG_TABLE_SELECT(MSG_MEASURED_SKEW_LANG_TABLE) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE) +extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT(MSG_MENU_CALIBRATION_LANG_TABLE) +extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM]; +#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT(MSG_MESH_BED_LEVELING_LANG_TABLE) +extern const char* const MSG_MIN_LANG_TABLE[1]; +#define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0) +extern const char* const MSG_MOTION_LANG_TABLE[1]; +#define MSG_MOTION LANG_TABLE_SELECT_EXPLICIT(MSG_MOTION_LANG_TABLE, 0) +extern const char* const MSG_MOVE_01MM_LANG_TABLE[1]; +#define MSG_MOVE_01MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_01MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_10MM_LANG_TABLE[1]; +#define MSG_MOVE_10MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_10MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_1MM_LANG_TABLE[1]; +#define MSG_MOVE_1MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_1MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_AXIS LANG_TABLE_SELECT(MSG_MOVE_AXIS_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE) +extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE) +extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE) +extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Y LANG_TABLE_SELECT(MSG_MOVE_Y_LANG_TABLE) +extern const char* const MSG_MOVE_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Z LANG_TABLE_SELECT(MSG_MOVE_Z_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE) +extern const char* const MSG_NO_LANG_TABLE[LANG_NUM]; +#define MSG_NO LANG_TABLE_SELECT(MSG_NO_LANG_TABLE) +extern const char* const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_COLOR LANG_TABLE_SELECT(MSG_NOT_COLOR_LANG_TABLE) +extern const char* const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_LOADED LANG_TABLE_SELECT(MSG_NOT_LOADED_LANG_TABLE) +extern const char* const MSG_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_NOZZLE LANG_TABLE_SELECT(MSG_NOZZLE_LANG_TABLE) +extern const char* const MSG_NOZZLE1_LANG_TABLE[1]; +#define MSG_NOZZLE1 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE1_LANG_TABLE, 0) +extern const char* const MSG_NOZZLE2_LANG_TABLE[1]; +#define MSG_NOZZLE2 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE2_LANG_TABLE, 0) +extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM]; +#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE) +extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM]; +#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE) +extern const char* const MSG_OFF_LANG_TABLE[1]; +#define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0) +extern const char* const MSG_OK_LANG_TABLE[1]; +#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) +extern const char* const MSG_ON_LANG_TABLE[1]; +#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) +extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM]; +#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE) +extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) +extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE) +extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_PID_EXTRUDER LANG_TABLE_SELECT(MSG_PID_EXTRUDER_LANG_TABLE) +extern const char* const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM]; +#define MSG_PID_FINISHED LANG_TABLE_SELECT(MSG_PID_FINISHED_LANG_TABLE) +extern const char* const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM]; +#define MSG_PID_RUNNING LANG_TABLE_SELECT(MSG_PID_RUNNING_LANG_TABLE) +extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) +extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) +extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; +#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) +extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; +#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) +extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; +#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0) +extern const char* const MSG_POWERUP_LANG_TABLE[1]; +#define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0) +extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) +extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) +extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) +extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; +#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) +extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT(MSG_PRINTER_DISCONNECTED_LANG_TABLE) +extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) +extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_PAUSED LANG_TABLE_SELECT(MSG_PRINT_PAUSED_LANG_TABLE) +extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D LANG_TABLE_SELECT(MSG_PRUSA3D_LANG_TABLE) +extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT(MSG_PRUSA3D_FORUM_LANG_TABLE) +extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE) +extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM]; +#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE) +extern const char* const MSG_RECTRACT_LANG_TABLE[1]; +#define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) +extern const char* const MSG_REFRESH_LANG_TABLE[1]; +#define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) +extern const char* const MSG_RESEND_LANG_TABLE[1]; +#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) +extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; +#define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0) +extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; +#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) +extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE) +extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE) +extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING_PRINT LANG_TABLE_SELECT(MSG_RESUMING_PRINT_LANG_TABLE) +extern const char* const MSG_RIGHT_LANG_TABLE[LANG_NUM]; +#define MSG_RIGHT LANG_TABLE_SELECT(MSG_RIGHT_LANG_TABLE) +extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1]; +#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0) +extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1]; +#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE, 0) +extern const char* const MSG_SD_CARD_OK_LANG_TABLE[1]; +#define MSG_SD_CARD_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CARD_OK_LANG_TABLE, 0) +extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1]; +#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE, 0) +extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[1]; +#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_OPENED_LANG_TABLE, 0) +extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1]; +#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0) +extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1]; +#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE) +extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1]; +#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0) +extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1]; +#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPENROOT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1]; +#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1]; +#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0) +extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE) +extern const char* const MSG_SD_SIZE_LANG_TABLE[1]; +#define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0) +extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1]; +#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1]; +#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1]; +#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0) +extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE) +extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT(MSG_SELFTEST_BEDHEATER_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_X_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) +extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) +extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) +extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE) +extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT(MSG_SELFTEST_MOTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE) +extern const char* const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_OK LANG_TABLE_SELECT(MSG_SELFTEST_OK_LANG_TABLE) +extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE) +extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE) +extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE) +extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1]; +#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0) +extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM]; +#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE) +extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[1]; +#define MSG_SET_HOME_OFFSETS LANG_TABLE_SELECT_EXPLICIT(MSG_SET_HOME_OFFSETS_LANG_TABLE, 0) +extern const char* const MSG_SET_ORIGIN_LANG_TABLE[1]; +#define MSG_SET_ORIGIN LANG_TABLE_SELECT_EXPLICIT(MSG_SET_ORIGIN_LANG_TABLE, 0) +extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT(MSG_SET_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_SEVERE_SKEW LANG_TABLE_SELECT(MSG_SEVERE_SKEW_LANG_TABLE) +extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT(MSG_SHOW_END_STOPS_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE) +extern const char* const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_SLIGHT_SKEW LANG_TABLE_SELECT(MSG_SLIGHT_SKEW_LANG_TABLE) +extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1]; +#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) +extern const char* const MSG_SORTING_LANG_TABLE[LANG_NUM]; +#define MSG_SORTING LANG_TABLE_SELECT(MSG_SORTING_LANG_TABLE) +extern const char* const MSG_SORT_ALPHA_LANG_TABLE[1]; +#define MSG_SORT_ALPHA LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_ALPHA_LANG_TABLE, 0) +extern const char* const MSG_SORT_NONE_LANG_TABLE[LANG_NUM]; +#define MSG_SORT_NONE LANG_TABLE_SELECT(MSG_SORT_NONE_LANG_TABLE) +extern const char* const MSG_SORT_TIME_LANG_TABLE[LANG_NUM]; +#define MSG_SORT_TIME LANG_TABLE_SELECT(MSG_SORT_TIME_LANG_TABLE) +extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) +extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; +#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) +extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; +#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) +extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT(MSG_STATS_FILAMENTUSED_LANG_TABLE) +extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT(MSG_STATS_PRINTTIME_LANG_TABLE) +extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) +extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) +extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; +#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) +extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; +#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE) +extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE) +extern const char* const MSG_STORE_EPROM_LANG_TABLE[1]; +#define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0) +extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM]; +#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT(MSG_SWITCH_PS_OFF_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT(MSG_SWITCH_PS_ON_LANG_TABLE) +extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM]; +#define MSG_TAKE_EFFECT LANG_TABLE_SELECT(MSG_TAKE_EFFECT_LANG_TABLE) +extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE) +extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM]; +#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) +extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; +#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) +extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; +#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) +extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; +#define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) +extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; +#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) +extern const char* const MSG_VMIN_LANG_TABLE[1]; +#define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) +extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; +#define MSG_VOLUMETRIC LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_LANG_TABLE, 0) +extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1]; +#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0) +extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1]; +#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0) +extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM]; +#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE) +extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; +#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) +extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; +#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) +extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; +#define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) +extern const char* const MSG_X_MAX_LANG_TABLE[1]; +#define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) +extern const char* const MSG_X_MIN_LANG_TABLE[1]; +#define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0) +extern const char* const MSG_YES_LANG_TABLE[LANG_NUM]; +#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE) +extern const char* const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM]; +#define MSG_Y_DISTANCE_FROM_MIN LANG_TABLE_SELECT(MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE) +extern const char* const MSG_Y_MAX_LANG_TABLE[1]; +#define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0) +extern const char* const MSG_Y_MIN_LANG_TABLE[1]; +#define MSG_Y_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MIN_LANG_TABLE, 0) +extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[1]; +#define MSG_ZPROBE_OUT LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_OUT_LANG_TABLE, 0) +extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1]; +#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_ZOFFSET_LANG_TABLE, 0) +extern const char* const MSG_Z_MAX_LANG_TABLE[1]; +#define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0) +extern const char* const MSG_Z_MIN_LANG_TABLE[1]; +#define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0) +extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM]; +#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE) + +extern char* CAT2(const char *s1,const char *s2); +extern char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4); + +#endif //LANGUAGE_ALL.H diff --git a/Firmware/language_de.h b/Firmware/language_de.h index aab7c91b9..655d3f955 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -1,326 +1,331 @@ -+/** - + * German - + * - + * LCD Menu Messages - + * Please note these are limited to 17 characters! - + * - + */ - + - +#define(length = 20) WELCOME_MSG CUSTOM_MENDEL_NAME " bereit." - + #define MSG_SD_INSERTED "SD eingesetzt" - + #define MSG_SD_REMOVED "SD entfernt " - + #define MSG_MAIN "Hauptmenue" - + #define MSG_DISABLE_STEPPERS "Motoren aus" - + #define MSG_AUTO_HOME "Startposition" - + #define MSG_SET_HOME_OFFSETS "Abstand vom Ursprung einstellen" - + #define MSG_SET_ORIGIN "Ursprung einstellen" - + #define MSG_COOLDOWN "Abkuehlen" - + #define MSG_SWITCH_PS_ON "Netzteil EIN" - + #define MSG_SWITCH_PS_OFF "Netzteil AUS" - + #define MSG_MOVE_AXIS "Achsbewegung" - + #define MSG_MOVE_X "Bewege X" - + #define MSG_MOVE_Y "Bewege Y" - + #define MSG_MOVE_Z "Bewege Z" - + #define MSG_MOVE_E "Extruder" - + #define MSG_SPEED "Geschwindigkeit" - + #define MSG_NOZZLE "Duese" - + #define MSG_NOZZLE1 "Duese2" - + #define MSG_NOZZLE2 "Duese3" - + #define MSG_BED "Bed" - + #define MSG_FAN_SPEED "Luefter-Tempo" - + #define MSG_FLOW "Durchfluss" - + #define MSG_FLOW0 "Durchfluss 0" - + #define MSG_FLOW1 "Durchfluss 1" - + #define MSG_FLOW2 "Durchfluss 2" - + #define MSG_CONTROL "Kontrolle" - + #define MSG_MIN " \002 Min" - + #define MSG_MAX " \002 Max" - + #define MSG_FACTOR " \002 Fakt" - + #define MSG_TEMPERATURE "Temperatur" - + #define MSG_MOTION "Bewegung" - + #define MSG_VOLUMETRIC "Filament" - + #define MSG_VOLUMETRIC_ENABLED "E in mm3" - + #define MSG_STORE_EPROM "Abspeichern" - + #define MSG_LOAD_EPROM "Lade Speicher" - + #define MSG_RESTORE_FAILSAFE "Standardwerte setzen" - + #define MSG_REFRESH "\xF8" "Erneuern" - + #define MSG_WATCH "Information" - + #define MSG_TUNE "Feineinstellung" - + #define MSG_PAUSE_PRINT "Druck unterbrech." - + #define MSG_RESUME_PRINT "Fortsetzen" - + #define MSG_STOP_PRINT "Druck abbrechen" - + #define MSG_CARD_MENU "Drucken von SD" - + #define MSG_NO_CARD "Keine SD Karte" - + #define MSG_DWELL "Einen Moment bitte." - + #define MSG_USERWAIT "Warte auf user..." - + #define MSG_RESUMING "Druck fortgesetzt" - + #define(length = 20) MSG_PRINT_ABORTED "Druck abgebrochen" - + #define MSG_NO_MOVE "Keine Bewegung." - + #define MSG_KILLED "ABGEBROCHEN. " - + #define MSG_STOPPED "GESTOPPT. " - + #define MSG_FILAMENTCHANGE "Filament-Wechsel" - + #define MSG_INIT_SDCARD "Init SD Karte" - + #define MSG_CNG_SDCARD "Wechsel SD Karte" - + #define MSG_BABYSTEP_X "Babystep X" - + #define MSG_BABYSTEP_Y "Babystep Y" - + #define MSG_BABYSTEP_Z "Z einstellen" - + #define MSG_ADJUSTZ "Auto Z einstellen?" - + #define MSG_PICK_Z "Waehle Abdruck" - + - +#define MSG_SETTINGS "Einstellungen" - + #define MSG_PREHEAT "Vorwaermen" - + #define MSG_UNLOAD_FILAMENT "Filament entladen" - + #define MSG_LOAD_FILAMENT "Filament laden" - + - +#define MSG_RECTRACT "Retract" - + #define MSG_ERROR "FEHLER:" - + #define(length = 20) MSG_PREHEAT_NOZZLE "Duese Vorwaermen" - + #define MSG_SUPPORT "Support" - + #define(length = 20) MSG_CORRECTLY "Wechsel ok?" - + #define MSG_YES "Ja" - + #define MSG_NO "Nein" - + #define(length = 19) MSG_NOT_LOADED "Fil. nicht geladen" - + #define MSG_NOT_COLOR "Farbe unklar" - + #define(length = 20) MSG_LOADING_FILAMENT "Filament leadt" - + #define(length = 20) MSG_PLEASE_WAIT "Bitte warten" - + #define MSG_LOADING_COLOR "Lade Farbe" - + #define MSG_CHANGE_SUCCESS "Wechsel erfolgr.!" - + #define(length = 20) MSG_PRESS "und Knopf druecken" - + #define(length = 20) MSG_INSERT_FILAMENT "Filament einlegen" - + #define(length = 20) MSG_CHANGING_FILAMENT "Filament-Wechsel!" - + - + - +#define MSG_SILENT_MODE_ON "Mode [leise]" - + #define MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" - + #define(length = 20) MSG_REBOOT "Zum Uebernehmen " - + #define(length = 22) MSG_TAKE_EFFECT "Drucker neu starten" - + - +#define MSG_Enqueing "enqueuing \" - + #define MSG_POWERUP "Einschalten" - + #define MSG_CONFIGURATION_VER " Letztes Update:" - + #define MSG_FREE_MEMORY " Freier Speicher: " - + #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " - + #define MSG_OK "ok" - + #define MSG_ERR_CHECKSUM_MISMATCH "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " - + #define MSG_ERR_NO_CHECKSUM "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " - + #define MSG_BEGIN_FILE_LIST "Beginn Dateiliste" - + #define MSG_END_FILE_LIST "Ende Dateiliste" - + #define MSG_M104_INVALID_EXTRUDER "M104 Falscher Extruder" - + #define MSG_M105_INVALID_EXTRUDER "M105 Falscher Extruder" - + #define MSG_M200_INVALID_EXTRUDER "M200 Falscher Extruder" - + #define MSG_M218_INVALID_EXTRUDER "M218 Falscher Extruder" - + #define MSG_M221_INVALID_EXTRUDER "M221 Falscher Extruder" - + #define MSG_ERR_NO_THERMISTORS "Keine Thermistoren - keine Temperatur" - + #define MSG_M109_INVALID_EXTRUDER "M109 Falscher Extruder" - + #define MSG_HEATING "Aufwaermen" - + #define(length = 20) MSG_HEATING_COMPLETE "Aufwaermen OK" - + #define MSG_BED_HEATING "Bed aufwaermen" - + #define MSG_BED_DONE "Bed OK" - + #define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" - + #define MSG_ERR_KILLED "Printer gestoppt. kill() aufgerufen!" - + #define MSG_ERR_STOPPED "Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)" - + #define MSG_RESEND "Wiederholen: " - + #define MSG_M119_REPORT "Statusbericht Endanschlag" - + #define MSG_ENDSTOP_HIT "AUSGELOEST" - + #define MSG_ENDSTOP_OPEN "offen" - + - +#define MSG_SD_CANT_OPEN_SUBDIR "Kann Unterverz. nicht oeffnen" - + #define MSG_SD_INIT_FAIL "SD Init fehlerhaft" - + #define MSG_SD_VOL_INIT_FAIL "Dateisystem Init fehlerhaft" - + #define MSG_SD_OPENROOT_FAIL "Zugriff auf Basisverzeichnis misslungen" - + #define MSG_SD_CARD_OK "SD Karte ok" - + #define MSG_SD_WORKDIR_FAIL "Oeffnen Arbeitsverzeichnis misslungen" - + #define MSG_SD_OPEN_FILE_FAIL "Fehler beim Oeffnen der Datei: " - + #define MSG_SD_FILE_OPENED "Datei geoeffnet: " - + #define MSG_SD_FILE_SELECTED "Datei ausgewaehlt" - + #define MSG_SD_WRITE_TO_FILE "Schreiben der Datei: " - + #define MSG_SD_PRINTING_BYTE "SD printing byte " - + #define MSG_SD_NOT_PRINTING "Kein SD Print" - + #define MSG_SD_ERR_WRITE_TO_FILE "Fehler beim Schreiben in Datei" - + #define MSG_SD_CANT_ENTER_SUBDIR "Zugangsproblem Unterverzeichnis: " - + #define MSG_STEPPER_TOO_HIGH "Schrittrate zu hoch" - + #define MSG_ENDSTOPS_HIT "Endanschlag erreicht" - + #define MSG_ERR_COLD_EXTRUDE_STOP "Stopp, Extruder kalt!" - + #define MSG_BABYSTEPPING_X "Babystepping X" - + #define MSG_BABYSTEPPING_Y "Babystepping Y" - + #define MSG_BABYSTEPPING_Z "Z wurde eingestellt" - + #define MSG_SERIAL_ERROR_MENU_STRUCTURE "Menuestruktur fehlerhaft" - + - +#define MSG_LANGUAGE_NAME "Deutsch" - + #define MSG_LANGUAGE_SELECT "Waehle Sprache" - + #define MSG_PRUSA3D "prusa3d.com" - + #define MSG_PRUSA3D_FORUM "forum.prusa3d.com" - + #define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" - + - +#define MSG_SELFTEST_ERROR "Selbtest Fehler!" - + #define MSG_SELFTEST_PLEASECHECK "Bitte pruefe:" - + #define MSG_SELFTEST_NOTCONNECTED "Nicht angeschlossen" - + #define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" - + #define MSG_SELFTEST_BEDHEATER "Bed / Heater" - + #define MSG_SELFTEST_WIRINGERROR "Verdrahtungfehler" - + #define MSG_SELFTEST_ENDSTOPS "Endschalter" - + #define MSG_SELFTEST_MOTOR "Motor" - + #define MSG_SELFTEST_ENDSTOP "Endstop" - + #define MSG_SELFTEST_ENDSTOP_NOTHIT "Ende nicht getrof." - + #define MSG_SELFTEST_OK "Selbsttest OK" - + #define MSG_LOOSE_PULLEY "Lose Riemenscheibe" - + - +#define MSG_SELFTEST_FAN "Lueftertest" -+#define(length = 20) MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?" -+#define(length = 20) MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?" -+#define MSG_SELFTEST_FAN_YES "Dreht" -+#define MSG_SELFTEST_FAN_NO "Dreht nicht" -+ -+#define(length = 20) MSG_STATS_TOTALFILAMENT "Gesamtfilament:" -+ #define(length = 20) MSG_STATS_TOTALPRINTTIME "Totale Druckzeit:" -+ #define(length = 20) MSG_STATS_FILAMENTUSED "Filamentverbrauch:" -+ #define(length = 20) MSG_STATS_PRINTTIME "Druckzeit: " -+ #define(length = 20) MSG_SELFTEST_START "Selbsttest start " -+ #define(length = 20) MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe Endschalter " -+ #define(length = 20) MSG_SELFTEST_CHECK_HOTEND "Pruefe Hotend" -+ #define(length = 20) MSG_SELFTEST_CHECK_X "Pruefe X Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_Y "Pruefe Y Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_Z "Pruefe Z Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_BED "Pr\x81fe Bed " -+ #define(length = 20) MSG_SELFTEST_CHECK_ALLCORRECT "Alles richtig " -+ #define MSG_SELFTEST "Selbsttest " -+ #define(length = 20) MSG_SELFTEST_FAILED "Selbsttest misslung." -+ #define MSG_STATISTICS "Statistiken " -+ #define MSG_USB_PRINTING "Drucken ueber USB" -+ #define MSG_HOMEYZ "Kalibrieren Z" -+ #define MSG_HOMEYZ_PROGRESS "Kalibriere Z" -+ #define MSG_HOMEYZ_DONE "Kalibrierung OK" -+ -+#define MSG_SHOW_END_STOPS "Endschalter Stat." -+ #define MSG_CALIBRATE_BED "Kalibrierung XYZ" -+ #define MSG_CALIBRATE_BED_RESET "Reset XYZ Kalibr." -+ +/** + * German + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ -+#define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." -+ #define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." -+ +#define WELCOME_MSG CUSTOM_MENDEL_NAME " bereit." +#define MSG_SD_INSERTED "SD eingesetzt" +#define MSG_SD_REMOVED "SD entfernt " +#define MSG_MAIN "Hauptmenue" +#define MSG_DISABLE_STEPPERS "Motoren aus" +#define MSG_AUTO_HOME "Startposition" +#define MSG_SET_HOME_OFFSETS "Setze Homeversatz" +#define MSG_SET_ORIGIN "Setze Nullpunkt" +#define MSG_COOLDOWN "Abkuehlen" +#define MSG_SWITCH_PS_ON "Netzteil EIN" +#define MSG_SWITCH_PS_OFF "Netzteil AUS" +#define MSG_MOVE_AXIS "Bewege Achse" +#define MSG_MOVE_X "Bewege X" +#define MSG_MOVE_Y "Bewege Y" +#define MSG_MOVE_Z "Bewege Z" +#define MSG_MOVE_E "Extruder" +#define MSG_SPEED "Geschwindigkeit" +#define MSG_NOZZLE "Duese" +#define MSG_NOZZLE1 "Duese2" +#define MSG_NOZZLE2 "Duese3" +#define MSG_BED "Bett" +#define MSG_FAN_SPEED "Luefter-Tempo" +#define MSG_FLOW "Durchfluss" +#define MSG_FLOW0 "Durchfluss 0" +#define MSG_FLOW1 "Durchfluss 1" +#define MSG_FLOW2 "Durchfluss 2" +#define MSG_CONTROL "Einstellungen" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Fakt" +#define MSG_TEMPERATURE "Temperatur" +#define MSG_MOTION "Bewegung" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_STORE_EPROM "EEPROM speichern" +#define MSG_LOAD_EPROM "EEPROM laden" +#define MSG_RESTORE_FAILSAFE "Standardwerte setzen" +#define MSG_REFRESH "Aktualisieren" +#define MSG_WATCH "Information" +#define MSG_TUNE "Feineinstellung" +#define MSG_PAUSE_PRINT "Pause" +#define MSG_RESUME_PRINT "Fortsetzen" +#define MSG_STOP_PRINT "Druck abbrechen" +#define MSG_CARD_MENU "Drucken von SD" +#define MSG_NO_CARD "Keine SD Karte" +#define MSG_DWELL "Warten..." +#define MSG_USERWAIT "Warte auf Nutzer..." +#define MSG_RESUMING "Druck fortgesetzt" +#define MSG_PRINT_ABORTED "Druck abgebrochen" +#define MSG_NO_MOVE "Keine Bewegung." +#define MSG_KILLED "ABGEBROCHEN. " +#define MSG_STOPPED "GESTOPPT. " +#define MSG_FILAMENTCHANGE "Filament-Wechsel" +#define MSG_INIT_SDCARD "SD erkennen" +#define MSG_CNG_SDCARD "SD wechseln" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Live Z einstellen" +#define MSG_ADJUSTZ "Auto Z einstellen?" +#define MSG_PICK_Z "Waehle Druck" -+#define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." -+ #define(length = 20, lines = 2) MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Ist der Schlitten ganz oben?" -+ -+#define(length = 60) MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Suchen Bed Kalibrierpunkt" -+ #define(length = 14) MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " von 4" -+ #define(length = 60) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Verbesserung Bed Kalibrierpunkt" -+ #define(length = 14) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " von 9" -+ #define(length = 60) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Messen der Referenzhoehe des Kalibrierpunktes" -+ #define(length = 14) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " von 9" -#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteration " -+ -+#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bed-Kalibrierpunkt nicht gefunden." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." +#define MSG_SETTINGS "Einstellungen" +#define MSG_PREHEAT "Vorwaermen" +#define MSG_UNLOAD_FILAMENT "Filament entnehmen" +#define MSG_LOAD_FILAMENT "Filament laden" +#define MSG_LOAD_FILAMENT_1 "Filament 1 laden" +#define MSG_LOAD_FILAMENT_2 "Filament 2 laden" +#define MSG_LOAD_FILAMENT_3 "Filament 3 laden" +#define MSG_LOAD_FILAMENT_4 "Filament 4 laden" +#define MSG_UNLOAD_FILAMENT_1 "Filament 1 entnehmen" +#define MSG_UNLOAD_FILAMENT_2 "Filament 2 entnehmen" +#define MSG_UNLOAD_FILAMENT_3 "Filament 3 entnehmen" +#define MSG_UNLOAD_FILAMENT_4 "Filament 4 entnehmen" +#define MSG_UNLOAD_ALL "Alle entnehmen" +#define MSG_LOAD_ALL "Alle laden" -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert." - -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne." -+ -+#define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_LOW "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset" - -+ #define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_HIGH "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset." -+ #define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset." -+ -+#define(length = 20, lines = 2) MSG_NEW_FIRMWARE_AVAILABLE "Neue Firmware Version verfuegbar:" -+ #define(length = 20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Bitte aktualisieren." -+ -+ #define(length = 20, lines = 8) MSG_FOLLOW_CALIBRATION_FLOW "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow." -+ #define(length = 20, lines = 12) MSG_BABYSTEP_Z_NOT_SET "Der Abstand zwischen der Spitze der Duese und der Bed ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration." -+ -+ - -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T0 "Filament in extruder 1 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T1 "Filament in extruder 2 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T2 "Filament in extruder 3 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T3 "Filament in extruder 4 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 1) MSG_CHANGE_EXTR "Wechsel extruder" -+ +#define MSG_RECTRACT "Retract" +#define MSG_ERROR "FEHLER:" +#define MSG_PREHEAT_NOZZLE "Duese vorwaermen!" +#define MSG_SUPPORT "Support" +#define MSG_CORRECTLY "Wechsel ok?" +#define MSG_YES "Ja" +#define MSG_NO "Nein" +#define MSG_NOT_LOADED "Fil. nicht geladen" +#define MSG_NOT_COLOR "Farbe nicht klar." +#define MSG_LOADING_FILAMENT "Filament laedt" +#define MSG_PLEASE_WAIT "Bitte warten" +#define MSG_LOADING_COLOR "Lade Farbe" +#define MSG_CHANGE_SUCCESS "Wechsel erfolgreich!" +#define MSG_PRESS "und Knopf druecken" +#define MSG_INSERT_FILAMENT "Filament einlegen" +#define MSG_CHANGING_FILAMENT "Filament-Wechsel!" -+ #define(length = 20, lines = 4) MSG_FIL_ADJUSTING "Filament positionieren. Bitte warten." -+ #define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." -+ -+ #define(length = 20, lines = 1) MSG_CALIBRATE_E "Kalibriere E" -+//#define(length=20, lines=1) "Reset E Cal." +#define MSG_SILENT_MODE_ON "Mode [leise]" +#define MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" +#define MSG_REBOOT "Reboot den Drucker" +#define MSG_TAKE_EFFECT " um wirksam zu werden" -+#define(length = 20, lines = 8) MSG_E_CAL_KNOB "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." -+ -+//#define(length=20, lines=1) MSG_FARM_CARD_MENU "Farm mode print" +#define MSG_Enqueing "enqueuing \" +#define MSG_POWERUP "Einschalten" +#define MSG_CONFIGURATION_VER " Letzes Updated: " +#define MSG_FREE_MEMORY " Freier Speicher: " +#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +#define MSG_OK "ok" +#define MSG_ERR_CHECKSUM_MISMATCH "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " +#define MSG_ERR_NO_CHECKSUM "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " +#define MSG_BEGIN_FILE_LIST "Beginn Dateiliste" +#define MSG_END_FILE_LIST "Ende Dateiliste" +#define MSG_M104_INVALID_EXTRUDER "M104 Falscher Extruder" +#define MSG_M105_INVALID_EXTRUDER "M105 Falscher Extruder" +#define MSG_M200_INVALID_EXTRUDER "M200 Falscher Extruder" +#define MSG_M218_INVALID_EXTRUDER "M218 Falscher Extruder" +#define MSG_M221_INVALID_EXTRUDER "M221 Falscher Extruder" +#define MSG_ERR_NO_THERMISTORS "Keine Temp.sensoren - keine Temperatur" +#define MSG_M109_INVALID_EXTRUDER "M109 Falscher Extruder" +#define MSG_HEATING "Aufwaermen" +#define MSG_HEATING_COMPLETE "Aufwaermen OK" +#define MSG_BED_HEATING "Bett aufwaermen" +#define MSG_BED_DONE "Bett OK" +#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" +#define MSG_ERR_KILLED "Drucker gestoppt. kill() aufgerufen!" +#define MSG_ERR_STOPPED "Der Drucker wurde aufgrund von Fehlern gestoppt. Beheben Sie den Fehler und verwenden Sie M999, um neu zu starten. (Temperatur wird reset. Stellen Sie es nach dem Neustart ein)" +#define MSG_RESEND "Wiederholen: " +#define MSG_M119_REPORT "Endstop status anzeigen" +#define MSG_ENDSTOP_HIT "AUSGELOEST" +#define MSG_ENDSTOP_OPEN "offen" -+#define(length = 20, lines = 8) MSG_MARK_FIL "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." -+ #define(length = 20, lines = 8) MSG_CLEAN_NOZZLE_E "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." -+ #define(length = 20, lines = 3) MSG_WAITING_TEMP "Warten auf Abkuehlung von Heater und Bed." +#define MSG_SD_CANT_OPEN_SUBDIR "Kann Unterverz. nicht oeffnen" +#define MSG_SD_INIT_FAIL "SD Init fehlerhaft" +#define MSG_SD_VOL_INIT_FAIL "Dateisystem Init fehlerhaft" +#define MSG_SD_OPENROOT_FAIL "Zugriff auf Basisverzeichnis misslungen" +#define MSG_SD_CARD_OK "SD Karte ok" +#define MSG_SD_WORKDIR_FAIL "Oeffnen Arbeitsverzeichnis misslungen" +#define MSG_SD_OPEN_FILE_FAIL "Fehler beim Oeffnen der Datei: " +#define MSG_SD_FILE_OPENED "Datei geoeffnet: " +#define MSG_SD_FILE_SELECTED "Datei ausgewaehlt" +#define MSG_SD_WRITE_TO_FILE "Schreiben in Datei: " +#define MSG_SD_PRINTING_BYTE "SD printing byte " +#define MSG_SD_NOT_PRINTING "Kein SD Druck" +#define MSG_SD_ERR_WRITE_TO_FILE "Fehler beim Schreiben in Datei" +#define MSG_SD_CANT_ENTER_SUBDIR "Zugangsproblem Unterverzeichnis: " +#define MSG_STEPPER_TOO_HIGH "Schrittrate zu hoch" +#define MSG_ENDSTOPS_HIT "Endanstop erreicht" +#define MSG_ERR_COLD_EXTRUDE_STOP "Stop, Extruder kalt!" +#define MSG_BABYSTEPPING_X "Babystepping X" +#define MSG_BABYSTEPPING_Y "Babystepping Y" +#define MSG_BABYSTEPPING_Z "Z wurde eingestellt" +#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Menuestruktur fehlerhaft" -+ #define(length = 20, lines = 2) MSG_FILAMENT_CLEAN "Ist Farbe rein?" -+ #define(lenght = 20, lines = 1) MSG_UNLOADING_FILAMENT "Filament auswerfen" -+ #define(length = 20, lines = 8) MSG_PAPER "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" -+ -+#define MSG_BED_CORRECTION_MENU "Bed level Korrekt" +#define MSG_LANGUAGE_NAME "Deutsch" +#define MSG_LANGUAGE_SELECT "Waehle Sprache" +#define MSG_PRUSA3D "prusa3d.com" +#define MSG_PRUSA3D_FORUM "forum.prusa3d.com" +#define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" -+ #define MSG_BED_CORRECTION_LEFT "Links [um]" -+ #define MSG_BED_CORRECTION_RIGHT "Rechts [um]" -+ #define MSG_BED_CORRECTION_FRONT "Vorne [um]" -+ #define MSG_BED_CORRECTION_REAR "Hinten [um]" -+ #define MSG_BED_CORRECTION_RESET "Ruecksetzen" -+ -+#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" -+ #define MSG_MENU_CALIBRATION "Kalibrierung" +#define MSG_SELFTEST_ERROR "Selbsttest Fehler !" +#define MSG_SELFTEST_PLEASECHECK "Bitte pruefe:" +#define MSG_SELFTEST_NOTCONNECTED "Nicht angeschlossen" +#define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" +#define MSG_SELFTEST_BEDHEATER "Bed / Heater" +#define MSG_SELFTEST_WIRINGERROR "Verdrahtungsfehler" +#define MSG_SELFTEST_ENDSTOPS "Endschalter" +#define MSG_SELFTEST_MOTOR "Motor" +#define MSG_SELFTEST_ENDSTOP "Endstop" +#define MSG_SELFTEST_ENDSTOP_NOTHIT "Endsch. n. erreicht" +#define MSG_SELFTEST_OK "Selbsttest OK" +#define MSG_LOOSE_PULLEY "Loser pulley" -+ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" -+ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlashAir]" +#define MSG_SELFTEST_FAN "Lueftertest"; +#define MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?"; +#define MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?"; +#define MSG_SELFTEST_FAN_YES "Dreht"; +#define MSG_SELFTEST_FAN_NO "Dreht nicht"; -#define MSG_FINISHING_MOVEMENTS "Bewegung beenden" -#define MSG_PRINT_PAUSED "Druck pausiert" -#define MSG_RESUMING_PRINT "Druck weitergehen" -#define MSG_PID_EXTRUDER "PID Kalibrierung" -#define MSG_SET_TEMPERATURE "Temp. einsetzen" -#define MSG_PID_FINISHED "PID Kalib. fertig" -#define MSG_PID_RUNNING "PID Kalib." +#define MSG_STATS_TOTALFILAMENT "Filament Gesamt:" +#define MSG_STATS_TOTALPRINTTIME "Totale Druckzeit:" +#define MSG_STATS_FILAMENTUSED "Filamentverbrauch:" +#define MSG_STATS_PRINTTIME "Druckzeit: " +#define MSG_SELFTEST_START "Selbsttest start " +#define MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe Endschalter " +#define MSG_SELFTEST_CHECK_HOTEND "Pruefe Hotend" +#define MSG_SELFTEST_CHECK_X "Pruefe X Achse " +#define MSG_SELFTEST_CHECK_Y "Pruefe Y Achse " +#define MSG_SELFTEST_CHECK_Z "Pruefe Z Achse " +#define MSG_SELFTEST_CHECK_BED "Pruefe Bett " +#define MSG_SELFTEST_CHECK_ALLCORRECT "Alles richtig " +#define MSG_SELFTEST "Selbsttest " +#define MSG_SELFTEST_FAILED "Selbsttest misluekt" +#define MSG_STATISTICS "Statistiken " +#define MSG_USB_PRINTING "Drucken ueber USB" +#define MSG_HOMEYZ "Kalibrieren Z" +#define MSG_HOMEYZ_PROGRESS "Kalibriere Z" +#define MSG_HOMEYZ_DONE "Kalibrierung OK" -#define MSG_CALIBRATE_PINDA "Kalibrieren" -#define MSG_CALIBRATION_PINDA_MENU "Temp. kalibrieren" -#define MSG_PINDA_NOT_CALIBRATED "Temperatur wurde nicht kalibriert" -#define MSG_PINDA_PREHEAT "PINDA erwaermen" -#define MSG_TEMP_CALIBRATION "Temp Kalib. " -#define MSG_TEMP_CALIBRATION_DONE "Temp. Kalibrierung fertig. Klicken um weiter zu gehen." -#define MSG_TEMP_CALIBRATION_ON "Temp. Kal. [ON]" -#define MSG_TEMP_CALIBRATION_OFF "Temp. Kal. [OFF]" +#define MSG_SHOW_END_STOPS "Anzeigen Enschalter" +#define MSG_CALIBRATE_BED "Kalibrierung XYZ" +#define MSG_CALIBRATE_BED_RESET "Reset XYZ Kalibr." -#define MSG_LOAD_ALL "Alle laden" -#define MSG_LOAD_FILAMENT_1 "Filament 1 laden" -#define MSG_LOAD_FILAMENT_2 "Filament 2 laden" -#define MSG_LOAD_FILAMENT_3 "Filament 3 laden" -#define MSG_LOAD_FILAMENT_4 "Filament 4 laden" -#define MSG_UNLOAD_FILAMENT_1 "Filam. 1 entladen" -#define MSG_UNLOAD_FILAMENT_2 "Filam. 2 entladen" -#define MSG_UNLOAD_FILAMENT_3 "Filam. 3 entladen" -#define MSG_UNLOAD_FILAMENT_4 "Filam. 4 entladen" -#define MSG_UNLOAD_ALL "Alles entladen" -#define MSG_PREPARE_FILAMENT "Filam. bereithalten" -#define MSG_ALL "Alle" -#define MSG_USED "Beim Druck benutzte" -#define MSG_CURRENT "Aktuelles" -#define MSG_CHOOSE_EXTRUDER "Waehlen Sie Extruder" -#define MSG_EXTRUDER "Extruder" -#define MSG_EXTRUDER_1 "Extruder 1" -#define MSG_EXTRUDER_2 "Extruder 2" -#define MSG_EXTRUDER_3 "Extruder 3" -#define MSG_EXTRUDER_4 "Extruder 4" -#define MSG_DATE "Datum" +#define MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind." +#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind." + +#define MSG_CONFIRM_NOZZLE_CLEAN "Bitte reinigen Sie die Duese vor Kalibrierung. Klicken wenn sauber." +#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Sind beide Z Schlitten ganz oben?" + +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Suche Bett Kalibrierpunkt" +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " von 4" +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Genauigkeit verbessern bei Kalibrierpunkt" +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " von 9" +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Messen der Referenzhoehe des Kalibrierpunktes" +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " von 9" +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Wiederholung " + +#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden." +#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." +#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ-Kalibrierung ok. X/Y-Achsen sind etwas schief. Schiefheit wird automatisch korrigiert. Gut gemacht!" +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ-Kalibrierung ok. X/Y-Achsen sind sehr schief. Schiefheit wird automatisch korrigiert." +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker voderer Kalibrierpunkt nicht erreichbar." +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt nicht erreichbar." +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar." +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar." +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar." +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar." + +#define MSG_BED_LEVELING_FAILED_POINT_LOW "Bett-Nivellierung fehlgeschlagen. Sensor wurde nicht ausgeloest. Schmutzige Duese? Warte auf Reset." +#define MSG_BED_LEVELING_FAILED_POINT_HIGH "Bett-Nivellierung fehlgeschlagen. Sensor wurde zu hoch ausgeloest. Warte auf Reset." +#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Bett-Nivellierung fehlgeschlagen. Sensor nicht angeschlossen oder Kabel defekt. Warte auf Reset." + +#define MSG_NEW_FIRMWARE_AVAILABLE "Neue Firmware Version verfuegbar:" +#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Bitte aktualisieren." + +#define MSG_FOLLOW_CALIBRATION_FLOW "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow." +#define MSG_BABYSTEP_Z_NOT_SET "Der Abstand zwischen der Spitze der Duese und der Druckoberflaeche / Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, Abschnitt First layer calibration." + +#define MSG_FILAMENT_LOADING_T0 "Filament in extruder 1 einlegen. Klicken wenn fertig." +#define MSG_FILAMENT_LOADING_T1 "Filament in extruder 2 einlegen. Klicken wenn fertig." +#define MSG_FILAMENT_LOADING_T2 "Filament in extruder 3 einlegen. Klicken wenn fertig." +#define MSG_FILAMENT_LOADING_T3 "Filament in extruder 4 einlegen. Klicken wenn fertig." +#define MSG_CHANGE_EXTR "Wechsel extruder" + +#define MSG_FIL_ADJUSTING "Einstellen Filament. Bitte warten." +#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber." + +#define MSG_CALIBRATE_E "Kalibriere E" +//#define MSG_RESET_CALIBRATE_E "Reset E Cal." +#define MSG_E_CAL_KNOB "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." + +//#define MSG_FARM_CARD_MENU "Farm mode print" + +#define MSG_MARK_FIL "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." +#define MSG_CLEAN_NOZZLE_E "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." +#define MSG_WAITING_TEMP "Warten auf Abkuehlung von Duese und Bett." + +#define MSG_FILAMENT_CLEAN "Ist Farbe rein?" +#define MSG_UNLOADING_FILAMENT "Filament auswerfen" +#define MSG_PAPER "Lege waehrend der Kalibrierung der ersten 4 Punkte ein Blatt Papier unter die Duese. Wenn die Duese das Papier bewegt, Drucker sofort ausschalten!" + +#define MSG_BED_CORRECTION_MENU "Bett level korrekt" + +#define MSG_BED_CORRECTION_LEFT "Links [um]" +#define MSG_BED_CORRECTION_RIGHT "Rechts [um]" +#define MSG_BED_CORRECTION_FRONT "Vorne [um]" +#define MSG_BED_CORRECTION_REAR "Hinten [um]" +#define MSG_BED_CORRECTION_RESET "Zuruecksetzen" + +#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" +#define MSG_MENU_CALIBRATION "Kalibrierung" + +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlashAir]" +#define MSG_PRINTER_DISCONNECTED "Drucker getrent" +#define MSG_FINISHING_MOVEMENTS "Bewegungen beenden" +#define MSG_PRINT_PAUSED "Druck pausiert" +#define MSG_RESUMING_PRINT "Druck fortsetzen" +#define MSG_PID_EXTRUDER "PID Kalibrierung" +#define MSG_SET_TEMPERATURE "Temp.einstellen" +#define MSG_PID_FINISHED "PID Kal. fertig " +#define MSG_PID_RUNNING "PID Kal. " + +#define MSG_CALIBRATE_PINDA "PINDA Temp. Kal." +#define MSG_CALIBRATION_PINDA_MENU "PINDA Temp. Kal." +#define MSG_PINDA_NOT_CALIBRATED "PINDA Temperatur Kalibrierung wurde noch nicht ausgefuehrt" +#define MSG_PINDA_PREHEAT "PINDA erwaermen" +#define MSG_TEMP_CALIBRATION "PINDA Temp.Kal. " +#define MSG_TEMP_CALIBRATION_DONE "Die PINDA Temperaturkalibrierung ist beendet. Klicke um fortzufahren." +#define MSG_TEMP_CALIBRATION_ON "PINDA T.Kal. [ON]" +#define MSG_TEMP_CALIBRATION_OFF "PINDA T.Kal.[OFF]" + +#define MSG_LOAD_ALL "Alle laden" +#define MSG_LOAD_FILAMENT_1 "Filament 1 laden" +#define MSG_LOAD_FILAMENT_2 "Filament 2 laden" +#define MSG_LOAD_FILAMENT_3 "Filament 3 laden" +#define MSG_LOAD_FILAMENT_4 "Filament 4 laden" +#define MSG_UNLOAD_FILAMENT_1 "Filam. 1 entladen" +#define MSG_UNLOAD_FILAMENT_2 "Filam. 2 entladen" +#define MSG_UNLOAD_FILAMENT_3 "Filam. 3 entladen" +#define MSG_UNLOAD_FILAMENT_4 "Filam. 4 entladen" +#define MSG_UNLOAD_ALL "Alles entladen" +#define MSG_PREPARE_FILAMENT "Filam. bereithalten" +#define MSG_ALL "Alle" +#define MSG_USED "Benutzt beim Druck" +#define MSG_CURRENT "Aktuelles" +#define MSG_CHOOSE_EXTRUDER "Waehlen Sie Extruder" +#define MSG_EXTRUDER "Extruder" +#define MSG_EXTRUDER_1 "Extruder 1" +#define MSG_EXTRUDER_2 "Extruder 2" +#define MSG_EXTRUDER_3 "Extruder 3" +#define MSG_EXTRUDER_4 "Extruder 4" +#define MSG_DATE "Datum:" #define MSG_XYZ_DETAILS "XYZ Kal. Details" -#define MSG_Y_DISTANCE_FROM_MIN "Y Entfernung vom min" +#define MSG_Y_DISTANCE_FROM_MIN "Y Entfernung von min" #define MSG_LEFT "Links:" #define MSG_CENTER "Mitte:" #define MSG_RIGHT "Rechts:" -#define MSG_MEASURED_SKEW "Schraeglauf:" -#define MSG_SLIGHT_SKEW "Leichter Schr.:" -#define MSG_SEVERE_SKEW "Schwerer Schr.:" \ No newline at end of file +#define MSG_MEASURED_SKEW "Symmetrie:" +#define MSG_SLIGHT_SKEW "Geringe Asym.:" +#define MSG_SEVERE_SKEW "Schwere Asym.:" +#define MSG_DEFAULT_SETTINGS_LOADED "Standardeinstellungen geladen" +#define MSG_SORT_TIME "Sort: [Zeit]" +#define MSG_SORT_ALPHA "Sort: [Alphabet]" +#define MSG_SORT_NONE "Sort: [Keine]" +#define MSG_SORTING "Sortiere Dateien" diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 4e5e7b195..9421c9ab5 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -7,10 +7,10 @@ */ #define(length=20) WELCOME_MSG CUSTOM_MENDEL_NAME " ready." -#define MSG_SD_INSERTED "Card inserted" +#define(length=20) MSG_SD_INSERTED "Card inserted" #define MSG_SD_REMOVED "Card removed" #define MSG_MAIN "Main" -#define MSG_DISABLE_STEPPERS "Disable steppers" +#define(length=20) MSG_DISABLE_STEPPERS "Disable steppers" #define MSG_AUTO_HOME "Auto home" #define MSG_SET_HOME_OFFSETS "Set home offsets" #define MSG_SET_ORIGIN "Set origin" @@ -27,7 +27,7 @@ #define MSG_NOZZLE1 "Nozzle2" #define MSG_NOZZLE2 "Nozzle3" #define MSG_BED "Bed" -#define(length=14) MSG_FAN_SPEED "Fan speed" +#define(length=20) MSG_FAN_SPEED "Fan speed" #define MSG_FLOW "Flow" #define MSG_FLOW0 "Flow 0" #define MSG_FLOW1 "Flow 1" @@ -52,11 +52,11 @@ #define MSG_CARD_MENU "Print from SD" #define MSG_NO_CARD "No SD card" #define MSG_DWELL "Sleep..." -#define MSG_USERWAIT "Wait for user..." -#define MSG_RESUMING "Resuming print" +#define(length=20) MSG_USERWAIT "Wait for user..." +#define(length=20) MSG_RESUMING "Resuming print" #define(length=20) MSG_PRINT_ABORTED "Print aborted" #define MSG_NO_MOVE "No move." -#define MSG_KILLED "KILLED. " +#define(length=20) MSG_KILLED "KILLED. " #define MSG_STOPPED "STOPPED. " #define MSG_FILAMENTCHANGE "Change filament" #define MSG_INIT_SDCARD "Init. SD card" @@ -64,23 +64,23 @@ #define MSG_BABYSTEP_X "Babystep X" #define MSG_BABYSTEP_Y "Babystep Y" #define MSG_BABYSTEP_Z "Live adjust Z" -#define MSG_ADJUSTZ "Auto adjust Z?" -#define MSG_PICK_Z "Pick print" +#define(length=20) MSG_ADJUSTZ "Auto adjust Z?" +#define(length=20) MSG_PICK_Z "Pick print" #define MSG_SETTINGS "Settings" #define MSG_PREHEAT "Preheat" -#define(length=17) MSG_UNLOAD_FILAMENT "Unload filament" -#define(length=17) MSG_LOAD_FILAMENT "Load filament" -#define(length=17) MSG_LOAD_FILAMENT_1 "Load filament 1" -#define(length=17) MSG_LOAD_FILAMENT_2 "Load filament 2" -#define(length=17) MSG_LOAD_FILAMENT_3 "Load filament 3" -#define(length=17) MSG_LOAD_FILAMENT_4 "Load filament 4" -#define(length=17) MSG_UNLOAD_FILAMENT_1 "Unload filament 1" -#define(length=17) MSG_UNLOAD_FILAMENT_2 "Unload filament 2" -#define(length=17) MSG_UNLOAD_FILAMENT_3 "Unload filament 3" -#define(length=17) MSG_UNLOAD_FILAMENT_4 "Unload filament 4" -#define MSG_UNLOAD_ALL "Unload all" -#define MSG_LOAD_ALL "Load all" +#define(length=20) MSG_UNLOAD_FILAMENT "Unload filament" +#define(length=20) MSG_LOAD_FILAMENT "Load filament" +#define(length=20) MSG_LOAD_FILAMENT_1 "Load filament 1" +#define(length=20) MSG_LOAD_FILAMENT_2 "Load filament 2" +#define(length=20) MSG_LOAD_FILAMENT_3 "Load filament 3" +#define(length=20) MSG_LOAD_FILAMENT_4 "Load filament 4" +#define(length=20) MSG_UNLOAD_FILAMENT_1 "Unload filament 1" +#define(length=20) MSG_UNLOAD_FILAMENT_2 "Unload filament 2" +#define(length=20) MSG_UNLOAD_FILAMENT_3 "Unload filament 3" +#define(length=20) MSG_UNLOAD_FILAMENT_4 "Unload filament 4" +#define(length=20) MSG_UNLOAD_ALL "Unload all" +#define(length=20) MSG_LOAD_ALL "Load all" #define MSG_RECTRACT "Rectract" @@ -91,11 +91,11 @@ #define MSG_YES "Yes" #define MSG_NO "No" #define(length=19) MSG_NOT_LOADED "Filament not loaded" -#define MSG_NOT_COLOR "Color not clear" +#define(length=20) MSG_NOT_COLOR "Color not clear" #define(length=20) MSG_LOADING_FILAMENT "Loading filament" #define(length=20) MSG_PLEASE_WAIT "Please wait" #define MSG_LOADING_COLOR "Loading color" -#define MSG_CHANGE_SUCCESS "Change success!" +#define(length=20) MSG_CHANGE_SUCCESS "Change success!" #define(length=20) MSG_PRESS "and press the knob" #define(length=20) MSG_INSERT_FILAMENT "Insert filament" #define(length=20) MSG_CHANGING_FILAMENT "Changing filament!" @@ -104,7 +104,7 @@ #define MSG_SILENT_MODE_ON "Mode [silent]" #define MSG_SILENT_MODE_OFF "Mode [high power]" #define(length=20) MSG_REBOOT "Reboot the printer" -#define(length=20) MSG_TAKE_EFFECT " for take effect" +#define(length=20, lines=2) MSG_TAKE_EFFECT " for take effect" #define MSG_Enqueing "enqueing \"" #define MSG_POWERUP "PowerUp" @@ -164,12 +164,12 @@ #define MSG_PRUSA3D_FORUM "forum.prusa3d.com" #define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" -#define MSG_SELFTEST_ERROR "Selftest error !" +#define(length=20) MSG_SELFTEST_ERROR "Selftest error !" #define MSG_SELFTEST_PLEASECHECK "Please check :" -#define MSG_SELFTEST_NOTCONNECTED "Not connected" +#define(length=20) MSG_SELFTEST_NOTCONNECTED "Not connected" #define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" #define MSG_SELFTEST_BEDHEATER "Bed / Heater" -#define MSG_SELFTEST_WIRINGERROR "Wiring error" +#define(length=20) MSG_SELFTEST_WIRINGERROR "Wiring error" #define MSG_SELFTEST_ENDSTOPS "Endstops" #define MSG_SELFTEST_MOTOR "Motor" #define MSG_SELFTEST_ENDSTOP "Endstop" @@ -181,7 +181,7 @@ #define(length=20) MSG_SELFTEST_COOLING_FAN "Front print fan?"; #define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Left hotend fan?"; #define MSG_SELFTEST_FAN_YES "Spinning"; -#define MSG_SELFTEST_FAN_NO "Not spinning"; +#define(length=20) MSG_SELFTEST_FAN_NO "Not spinning"; #define(length=20) MSG_STATS_TOTALFILAMENT "Total filament :" #define(length=20) MSG_STATS_TOTALPRINTTIME "Total print time :" @@ -203,7 +203,7 @@ #define MSG_HOMEYZ_PROGRESS "Calibrating Z" #define MSG_HOMEYZ_DONE "Calibration done" -#define(length=17,lines=1) MSG_SHOW_END_STOPS "Show end stops" +#define(length=20,lines=1) MSG_SHOW_END_STOPS "Show end stops" #define MSG_CALIBRATE_BED "Calibrate XYZ" #define MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." @@ -233,9 +233,9 @@ #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ calibration compromised. Right front calibration point not reachable." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ calibration compromised. Front calibration points not reachable." -#define(length=20,lines=4) MSG_BED_LEVELING_FAILED_POINT_LOW "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." -#define(length=20,lines=4) MSG_BED_LEVELING_FAILED_POINT_HIGH "Bed leveling failed. Sensor triggered too high. Waiting for reset." -#define(length=20,lines=4) MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." +#define(length=20,lines=6) MSG_BED_LEVELING_FAILED_POINT_LOW "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +#define(length=20,lines=6) MSG_BED_LEVELING_FAILED_POINT_HIGH "Bed leveling failed. Sensor triggered too high. Waiting for reset." +#define(length=20,lines=6) MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset." #define(length=20,lines=2) MSG_NEW_FIRMWARE_AVAILABLE "New firmware version available:" #define(length=20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Please upgrade." @@ -261,35 +261,35 @@ #define(length=20, lines=8) MSG_CLEAN_NOZZLE_E "E calibration finished. Please clean the nozzle. Click when done." #define(length=20, lines=3) MSG_WAITING_TEMP "Waiting for nozzle and bed cooling" #define(length=20, lines=2) MSG_FILAMENT_CLEAN "Is color clear?" -#define(lenght=18, lines=1) MSG_UNLOADING_FILAMENT "Unloading filament" -#define(length=20, lines=8) MSG_PAPER "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +#define(length=20) MSG_UNLOADING_FILAMENT "Unloading filament" +#define(length=20, lines=10) MSG_PAPER "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -#define MSG_BED_CORRECTION_MENU "Bed level correct" +#define(length=20) MSG_BED_CORRECTION_MENU "Bed level correct" #define(length=14,lines=1) MSG_BED_CORRECTION_LEFT "Left side [um]" #define(length=14,lines=1) MSG_BED_CORRECTION_RIGHT "Right side[um]" #define(length=14,lines=1) MSG_BED_CORRECTION_FRONT "Front side[um]" #define(length=14,lines=1) MSG_BED_CORRECTION_REAR "Rear side [um]" -#define MSG_BED_CORRECTION_RESET "Reset" +#define(length=20) MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" #define MSG_MENU_CALIBRATION "Calibration" -#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" -#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +#define(length=20, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +#define(length=20, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" #define(length=20, lines=1) MSG_PRINTER_DISCONNECTED "Printer disconnected" #define(length=20, lines=1) MSG_FINISHING_MOVEMENTS "Finishing movements" #define(length=20, lines=1) MSG_PRINT_PAUSED "Print paused" #define(length=20, lines=1) MSG_RESUMING_PRINT "Resuming print" -#define(length=17, lines=1) MSG_PID_EXTRUDER "PID calibration" -#define(length=19, lines=1) MSG_SET_TEMPERATURE "Set temperature:" -#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. finished" +#define(length=20, lines=1) MSG_PID_EXTRUDER "PID calibration" +#define(length=20, lines=1) MSG_SET_TEMPERATURE "Set temperature:" +#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. finished " #define(length=20, lines=1) MSG_PID_RUNNING "PID cal. " -#define(length=17, lines=1) MSG_CALIBRATE_PINDA "Calibrate" -#define(length=17, lines=1) MSG_CALIBRATION_PINDA_MENU "Temp. calibration" +#define(length=20, lines=1) MSG_CALIBRATE_PINDA "Calibrate" +#define(length=20, lines=1) MSG_CALIBRATION_PINDA_MENU "Temp. calibration" #define(length=20, lines=4) MSG_PINDA_NOT_CALIBRATED "Temperature calibration has not been run yet" #define(length=20, lines=1) MSG_PINDA_PREHEAT "PINDA Heating" #define(length=20, lines=1) MSG_TEMP_CALIBRATION "Temp. cal. " -#define(length=20, lines=4) MSG_TEMP_CALIBRATION_DONE "Temperature calibration is finished. Click to continue." +#define(length=20, lines=5) MSG_TEMP_CALIBRATION_DONE "Temperature calibration is finished. Click to continue." #define(length=20, lines=1) MSG_TEMP_CALIBRATION_ON "Temp. cal. [ON]" #define(length=20, lines=1) MSG_TEMP_CALIBRATION_OFF "Temp. cal. [OFF]" #define(length=20, lines=1) MSG_PREPARE_FILAMENT "Prepare new filament" @@ -315,4 +315,4 @@ #define(length=17, lines=1) MSG_SORT_TIME "Sort: [Time]" #define(length=17, lines=1) MSG_SORT_ALPHA "Sort: [Alphabet]" #define(length=17, lines=1) MSG_SORT_NONE "Sort: [None]" -#define(length=20, lines=1) MSG_SORTING "Sorting files" \ No newline at end of file +#define(length=20, lines=1) MSG_SORTING "Sorting files" From 1870ac1b1552e32dbec5074862ff7e591a9198ce Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d-gussner@users.noreply.github.com> Date: Wed, 23 Aug 2017 17:21:03 +0200 Subject: [PATCH 02/29] run bash le.sh lf --- Firmware/language_all.cpp | 7262 ++++++++++++++++++------------------- Firmware/language_all.h | 1342 +++---- 2 files changed, 4302 insertions(+), 4302 deletions(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index de2b8e340..a60202abf 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1,3631 +1,3631 @@ - -#include "Configuration_prusa.h" -#include "language_all.h" - -#define LCD_WIDTH 20 -extern unsigned char lang_selected; - -const char MSG_ACTIVE_EXTRUDER_EN[] PROGMEM = "Active Extruder: "; -const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_ACTIVE_EXTRUDER_EN -}; - -const char MSG_ADJUSTZ_EN[] PROGMEM = "Auto adjust Z?"; -const char MSG_ADJUSTZ_CZ[] PROGMEM = "Auto doladit Z ?"; -const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; -const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; -const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; -const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; -const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ADJUSTZ_EN, - MSG_ADJUSTZ_CZ, - MSG_ADJUSTZ_IT, - MSG_ADJUSTZ_ES, - MSG_ADJUSTZ_PL, - MSG_ADJUSTZ_DE -}; - -const char MSG_ALL_EN[] PROGMEM = "All"; -const char MSG_ALL_CZ[] PROGMEM = "Vse"; -const char MSG_ALL_IT[] PROGMEM = "Tutti"; -const char MSG_ALL_ES[] PROGMEM = "Todos"; -const char MSG_ALL_PL[] PROGMEM = "Wszystko"; -const char MSG_ALL_DE[] PROGMEM = "Alle"; -const char * const MSG_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ALL_EN, - MSG_ALL_CZ, - MSG_ALL_IT, - MSG_ALL_ES, - MSG_ALL_PL, - MSG_ALL_DE -}; - -const char MSG_AMAX_EN[] PROGMEM = "Amax "; -const char * const MSG_AMAX_LANG_TABLE[1] PROGMEM = { - MSG_AMAX_EN -}; - -const char MSG_AUTHOR_EN[] PROGMEM = " | Author: "; -const char * const MSG_AUTHOR_LANG_TABLE[1] PROGMEM = { - MSG_AUTHOR_EN -}; - -const char MSG_AUTO_HOME_EN[] PROGMEM = "Auto home"; -const char MSG_AUTO_HOME_IT[] PROGMEM = "Trova origine"; -const char MSG_AUTO_HOME_ES[] PROGMEM = "Llevar al origen"; -const char MSG_AUTO_HOME_DE[] PROGMEM = "Startposition"; -const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_IT, - MSG_AUTO_HOME_ES, - MSG_AUTO_HOME_EN, - MSG_AUTO_HOME_DE -}; - -const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; -const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { - MSG_A_RETRACT_EN -}; - -const char MSG_BABYSTEPPING_X_EN[] PROGMEM = "Babystepping X"; -const char * const MSG_BABYSTEPPING_X_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_X_EN -}; - -const char MSG_BABYSTEPPING_Y_EN[] PROGMEM = "Babystepping Y"; -const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_Y_EN -}; - -const char MSG_BABYSTEPPING_Z_EN[] PROGMEM = "Adjusting Z"; -const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEPPING_Z_EN -}; - -const char MSG_BABYSTEP_X_EN[] PROGMEM = "Babystep X"; -const char * const MSG_BABYSTEP_X_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEP_X_EN -}; - -const char MSG_BABYSTEP_Y_EN[] PROGMEM = "Babystep Y"; -const char * const MSG_BABYSTEP_Y_LANG_TABLE[1] PROGMEM = { - MSG_BABYSTEP_Y_EN -}; - -const char MSG_BABYSTEP_Z_EN[] PROGMEM = "Live adjust Z"; -const char MSG_BABYSTEP_Z_CZ[] PROGMEM = "Doladeni osy Z"; -const char MSG_BABYSTEP_Z_IT[] PROGMEM = "Compensazione Z"; -const char MSG_BABYSTEP_Z_ES[] PROGMEM = "Micropaso Eje Z"; -const char MSG_BABYSTEP_Z_PL[] PROGMEM = "Dostrojenie osy Z"; -const char MSG_BABYSTEP_Z_DE[] PROGMEM = "Live Z einstellen"; -const char * const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_EN, - MSG_BABYSTEP_Z_CZ, - MSG_BABYSTEP_Z_IT, - MSG_BABYSTEP_Z_ES, - MSG_BABYSTEP_Z_PL, - MSG_BABYSTEP_Z_DE -}; - -const char MSG_BABYSTEP_Z_NOT_SET_EN[] PROGMEM = "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_CZ[] PROGMEM = "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."; -const char MSG_BABYSTEP_Z_NOT_SET_IT[] PROGMEM = "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_ES[] PROGMEM = "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."; -const char MSG_BABYSTEP_Z_NOT_SET_PL[] PROGMEM = "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."; -const char MSG_BABYSTEP_Z_NOT_SET_DE[] PROGMEM = "Der Abstand zwischen der Spitze der Duese und der Druckoberflaeche / Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, Abschnitt First layer calibration."; -const char * const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_NOT_SET_EN, - MSG_BABYSTEP_Z_NOT_SET_CZ, - MSG_BABYSTEP_Z_NOT_SET_IT, - MSG_BABYSTEP_Z_NOT_SET_ES, - MSG_BABYSTEP_Z_NOT_SET_PL, - MSG_BABYSTEP_Z_NOT_SET_DE -}; - -const char MSG_BED_EN[] PROGMEM = "Bed"; -const char MSG_BED_IT[] PROGMEM = "Letto"; -const char MSG_BED_ES[] PROGMEM = "Base"; -const char MSG_BED_PL[] PROGMEM = "Stolik"; -const char MSG_BED_DE[] PROGMEM = "Bett"; -const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_EN, - MSG_BED_EN, - MSG_BED_IT, - MSG_BED_ES, - MSG_BED_PL, - MSG_BED_DE -}; - -const char MSG_BED_CORRECTION_FRONT_EN[] PROGMEM = "Front side[um]"; -const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; -const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Fronte [um]"; -const char MSG_BED_CORRECTION_FRONT_ES[] PROGMEM = "Adelante [um]"; -const char MSG_BED_CORRECTION_FRONT_PL[] PROGMEM = "Do przodu [um]"; -const char MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; -const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_FRONT_EN, - MSG_BED_CORRECTION_FRONT_CZ, - MSG_BED_CORRECTION_FRONT_IT, - MSG_BED_CORRECTION_FRONT_ES, - MSG_BED_CORRECTION_FRONT_PL, - MSG_BED_CORRECTION_FRONT_DE -}; - -const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]"; -const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]"; -const char MSG_BED_CORRECTION_LEFT_IT[] PROGMEM = "Sinistra [um]"; -const char MSG_BED_CORRECTION_LEFT_ES[] PROGMEM = "Izquierda [um]"; -const char MSG_BED_CORRECTION_LEFT_PL[] PROGMEM = "W lewo [um]"; -const char MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; -const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_LEFT_EN, - MSG_BED_CORRECTION_LEFT_CZ, - MSG_BED_CORRECTION_LEFT_IT, - MSG_BED_CORRECTION_LEFT_ES, - MSG_BED_CORRECTION_LEFT_PL, - MSG_BED_CORRECTION_LEFT_DE -}; - -const char MSG_BED_CORRECTION_MENU_EN[] PROGMEM = "Bed level correct"; -const char MSG_BED_CORRECTION_MENU_CZ[] PROGMEM = "Korekce podlozky"; -const char MSG_BED_CORRECTION_MENU_IT[] PROGMEM = "Correz. liv.letto"; -const char MSG_BED_CORRECTION_MENU_ES[] PROGMEM = "Corr. de la cama"; -const char MSG_BED_CORRECTION_MENU_PL[] PROGMEM = "Korekta podkladki"; -const char MSG_BED_CORRECTION_MENU_DE[] PROGMEM = "Bett level korrekt"; -const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_MENU_EN, - MSG_BED_CORRECTION_MENU_CZ, - MSG_BED_CORRECTION_MENU_IT, - MSG_BED_CORRECTION_MENU_ES, - MSG_BED_CORRECTION_MENU_PL, - MSG_BED_CORRECTION_MENU_DE -}; - -const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]"; -const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]"; -const char MSG_BED_CORRECTION_REAR_IT[] PROGMEM = "Retro [um]"; -const char MSG_BED_CORRECTION_REAR_ES[] PROGMEM = "Atras [um]"; -const char MSG_BED_CORRECTION_REAR_PL[] PROGMEM = "Do tylu [um]"; -const char MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; -const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_REAR_EN, - MSG_BED_CORRECTION_REAR_CZ, - MSG_BED_CORRECTION_REAR_IT, - MSG_BED_CORRECTION_REAR_ES, - MSG_BED_CORRECTION_REAR_PL, - MSG_BED_CORRECTION_REAR_DE -}; - -const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; -const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Zuruecksetzen"; -const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_EN, - MSG_BED_CORRECTION_RESET_DE -}; - -const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side[um]"; -const char MSG_BED_CORRECTION_RIGHT_CZ[] PROGMEM = "Vpravo [um]"; -const char MSG_BED_CORRECTION_RIGHT_IT[] PROGMEM = "Destra [um]"; -const char MSG_BED_CORRECTION_RIGHT_ES[] PROGMEM = "Derecha [um]"; -const char MSG_BED_CORRECTION_RIGHT_PL[] PROGMEM = "W prawo [um]"; -const char MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; -const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RIGHT_EN, - MSG_BED_CORRECTION_RIGHT_CZ, - MSG_BED_CORRECTION_RIGHT_IT, - MSG_BED_CORRECTION_RIGHT_ES, - MSG_BED_CORRECTION_RIGHT_PL, - MSG_BED_CORRECTION_RIGHT_DE -}; - -const char MSG_BED_DONE_EN[] PROGMEM = "Bed done"; -const char MSG_BED_DONE_CZ[] PROGMEM = "Bed OK."; -const char MSG_BED_DONE_IT[] PROGMEM = "Piatto fatto."; -const char MSG_BED_DONE_ES[] PROGMEM = "Base preparada"; -const char MSG_BED_DONE_PL[] PROGMEM = "Stolik OK."; -const char MSG_BED_DONE_DE[] PROGMEM = "Bett OK"; -const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_DONE_EN, - MSG_BED_DONE_CZ, - MSG_BED_DONE_IT, - MSG_BED_DONE_ES, - MSG_BED_DONE_PL, - MSG_BED_DONE_DE -}; - -const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; -const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; -const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto"; -const char MSG_BED_HEATING_ES[] PROGMEM = "Calentando Base"; -const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; -const char MSG_BED_HEATING_DE[] PROGMEM = "Bett aufwaermen"; -const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_HEATING_EN, - MSG_BED_HEATING_CZ, - MSG_BED_HEATING_IT, - MSG_BED_HEATING_ES, - MSG_BED_HEATING_PL, - MSG_BED_HEATING_DE -}; - -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_EN[] PROGMEM = "Bed leveling failed. Sensor triggered too high. Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_IT[] PROGMEM = "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_ES[] PROGMEM = "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_PL[] PROGMEM = "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_HIGH_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde zu hoch ausgeloest. Warte auf Reset."; -const char * const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_HIGH_EN, - MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ, - MSG_BED_LEVELING_FAILED_POINT_HIGH_IT, - MSG_BED_LEVELING_FAILED_POINT_HIGH_ES, - MSG_BED_LEVELING_FAILED_POINT_HIGH_PL, - MSG_BED_LEVELING_FAILED_POINT_HIGH_DE -}; - -const char MSG_BED_LEVELING_FAILED_POINT_LOW_EN[] PROGMEM = "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_IT[] PROGMEM = "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_ES[] PROGMEM = "Nivelacion fallada. Sensor no funciona. Escombros en Boqui.? Esperando reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_PL[] PROGMEM = "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_POINT_LOW_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde nicht ausgeloest. Schmutzige Duese? Warte auf Reset."; -const char * const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_LOW_EN, - MSG_BED_LEVELING_FAILED_POINT_LOW_CZ, - MSG_BED_LEVELING_FAILED_POINT_LOW_IT, - MSG_BED_LEVELING_FAILED_POINT_LOW_ES, - MSG_BED_LEVELING_FAILED_POINT_LOW_PL, - MSG_BED_LEVELING_FAILED_POINT_LOW_DE -}; - -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN[] PROGMEM = "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT[] PROGMEM = "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES[] PROGMEM = "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL[] PROGMEM = "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."; -const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor nicht angeschlossen oder Kabel defekt. Warte auf Reset."; -const char * const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL, - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration failed. Front calibration points not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delanteros no alcanzables."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration failed. Left front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Linker voderer Kalibrierpunkt nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration failed. Right front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN[] PROGMEM = "XYZ calibration failed. Please consult the manual."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ[] PROGMEM = "Kalibrace XYZ selhala. Nahlednete do manualu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT[] PROGMEM = "Calibrazione XYZ fallita. Si prega di consultare il manuale."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES[] PROGMEM = "Calibracion XYZ fallada. Consultar el manual por favor."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL[] PROGMEM = "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."; -const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL, - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN[] PROGMEM = "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL, - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN[] PROGMEM = "XYZ calibration failed. Bed calibration point was not found."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ[] PROGMEM = "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT[] PROGMEM = "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES[] PROGMEM = "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL[] PROGMEM = "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."; -const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL, - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "XYZ calibration all right. Skew will be corrected automatically."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind sehr schief. Schiefheit wird automatisch korrigiert."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind etwas schief. Schiefheit wird automatisch korrigiert. Gut gemacht!"; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL, - MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration compromised. Front calibration points not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Left front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE -}; - -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Right front calibration point not reachable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar."; -const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL, - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE -}; - -const char MSG_BEGIN_FILE_LIST_EN[] PROGMEM = "Begin file list"; -const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[1] PROGMEM = { - MSG_BEGIN_FILE_LIST_EN -}; - -const char MSG_BROWNOUT_RESET_EN[] PROGMEM = " Brown out Reset"; -const char * const MSG_BROWNOUT_RESET_LANG_TABLE[1] PROGMEM = { - MSG_BROWNOUT_RESET_EN -}; - -const char MSG_CALIBRATE_BED_EN[] PROGMEM = "Calibrate XYZ"; -const char MSG_CALIBRATE_BED_CZ[] PROGMEM = "Kalibrace XYZ"; -const char MSG_CALIBRATE_BED_IT[] PROGMEM = "Calibra XYZ"; -const char MSG_CALIBRATE_BED_ES[] PROGMEM = "Calibra XYZ"; -const char MSG_CALIBRATE_BED_PL[] PROGMEM = "Kalibracja XYZ"; -const char MSG_CALIBRATE_BED_DE[] PROGMEM = "Kalibrierung XYZ"; -const char * const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_EN, - MSG_CALIBRATE_BED_CZ, - MSG_CALIBRATE_BED_IT, - MSG_CALIBRATE_BED_ES, - MSG_CALIBRATE_BED_PL, - MSG_CALIBRATE_BED_DE -}; - -const char MSG_CALIBRATE_BED_RESET_EN[] PROGMEM = "Reset XYZ calibr."; -const char MSG_CALIBRATE_BED_RESET_CZ[] PROGMEM = "Reset XYZ kalibr."; -const char MSG_CALIBRATE_BED_RESET_PL[] PROGMEM = "Reset kalibr. XYZ"; -const char MSG_CALIBRATE_BED_RESET_DE[] PROGMEM = "Reset XYZ Kalibr."; -const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_CZ, - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_EN, - MSG_CALIBRATE_BED_RESET_PL, - MSG_CALIBRATE_BED_RESET_DE -}; - -const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E"; -const char MSG_CALIBRATE_E_CZ[] PROGMEM = "Kalibrovat E"; -const char MSG_CALIBRATE_E_IT[] PROGMEM = "Calibra E"; -const char MSG_CALIBRATE_E_ES[] PROGMEM = "Calibrar E"; -const char MSG_CALIBRATE_E_PL[] PROGMEM = "Kalibruj E"; -const char MSG_CALIBRATE_E_DE[] PROGMEM = "Kalibriere E"; -const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_E_EN, - MSG_CALIBRATE_E_CZ, - MSG_CALIBRATE_E_IT, - MSG_CALIBRATE_E_ES, - MSG_CALIBRATE_E_PL, - MSG_CALIBRATE_E_DE -}; - -const char MSG_CALIBRATE_PINDA_EN[] PROGMEM = "Calibrate"; -const char MSG_CALIBRATE_PINDA_CZ[] PROGMEM = "Zkalibrovat"; -const char MSG_CALIBRATE_PINDA_IT[] PROGMEM = "Calibrare"; -const char MSG_CALIBRATE_PINDA_ES[] PROGMEM = "Calibrar"; -const char MSG_CALIBRATE_PINDA_PL[] PROGMEM = "Skalibrowac"; -const char MSG_CALIBRATE_PINDA_DE[] PROGMEM = "PINDA Temp. Kal."; -const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_PINDA_EN, - MSG_CALIBRATE_PINDA_CZ, - MSG_CALIBRATE_PINDA_IT, - MSG_CALIBRATE_PINDA_ES, - MSG_CALIBRATE_PINDA_PL, - MSG_CALIBRATE_PINDA_DE -}; - -const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; -const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; -const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; -const char MSG_CALIBRATION_PINDA_MENU_ES[] PROGMEM = "Calibracion temp."; -const char MSG_CALIBRATION_PINDA_MENU_PL[] PROGMEM = "Cieplna kalibr."; -const char MSG_CALIBRATION_PINDA_MENU_DE[] PROGMEM = "PINDA Temp. Kal."; -const char * const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATION_PINDA_MENU_EN, - MSG_CALIBRATION_PINDA_MENU_CZ, - MSG_CALIBRATION_PINDA_MENU_IT, - MSG_CALIBRATION_PINDA_MENU_ES, - MSG_CALIBRATION_PINDA_MENU_PL, - MSG_CALIBRATION_PINDA_MENU_DE -}; - -const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD"; -const char MSG_CARD_MENU_CZ[] PROGMEM = "Tisk z SD"; -const char MSG_CARD_MENU_IT[] PROGMEM = "Stampa da SD"; -const char MSG_CARD_MENU_ES[] PROGMEM = "Menu tarjeta SD"; -const char MSG_CARD_MENU_PL[] PROGMEM = "Druk z SD"; -const char MSG_CARD_MENU_DE[] PROGMEM = "Drucken von SD"; -const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CARD_MENU_EN, - MSG_CARD_MENU_CZ, - MSG_CARD_MENU_IT, - MSG_CARD_MENU_ES, - MSG_CARD_MENU_PL, - MSG_CARD_MENU_DE -}; - -const char MSG_CENTER_EN[] PROGMEM = "Center:"; -const char MSG_CENTER_CZ[] PROGMEM = "Stred:"; -const char MSG_CENTER_IT[] PROGMEM = "Centro:"; -const char MSG_CENTER_ES[] PROGMEM = "Centro:"; -const char MSG_CENTER_PL[] PROGMEM = "Srodek:"; -const char MSG_CENTER_DE[] PROGMEM = "Mitte:"; -const char * const MSG_CENTER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CENTER_EN, - MSG_CENTER_CZ, - MSG_CENTER_IT, - MSG_CENTER_ES, - MSG_CENTER_PL, - MSG_CENTER_DE -}; - -const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder"; -const char MSG_CHANGE_EXTR_CZ[] PROGMEM = "Zmenit extruder"; -const char MSG_CHANGE_EXTR_IT[] PROGMEM = "Cambio estrusore."; -const char MSG_CHANGE_EXTR_ES[] PROGMEM = "Cambiar extrusor."; -const char MSG_CHANGE_EXTR_PL[] PROGMEM = "Zmienic ekstruder"; -const char MSG_CHANGE_EXTR_DE[] PROGMEM = "Wechsel extruder"; -const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_EXTR_EN, - MSG_CHANGE_EXTR_CZ, - MSG_CHANGE_EXTR_IT, - MSG_CHANGE_EXTR_ES, - MSG_CHANGE_EXTR_PL, - MSG_CHANGE_EXTR_DE -}; - -const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; -const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; -const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!"; -const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambio correcto"; -const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; -const char MSG_CHANGE_SUCCESS_DE[] PROGMEM = "Wechsel erfolgreich!"; -const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_SUCCESS_EN, - MSG_CHANGE_SUCCESS_CZ, - MSG_CHANGE_SUCCESS_IT, - MSG_CHANGE_SUCCESS_ES, - MSG_CHANGE_SUCCESS_PL, - MSG_CHANGE_SUCCESS_DE -}; - -const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; -const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; -const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; -const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; -const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; -const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; -const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGING_FILAMENT_EN, - MSG_CHANGING_FILAMENT_CZ, - MSG_CHANGING_FILAMENT_IT, - MSG_CHANGING_FILAMENT_ES, - MSG_CHANGING_FILAMENT_PL, - MSG_CHANGING_FILAMENT_DE -}; - -const char MSG_CHOOSE_EXTRUDER_EN[] PROGMEM = "Choose extruder:"; -const char MSG_CHOOSE_EXTRUDER_CZ[] PROGMEM = "Vyberte extruder:"; -const char MSG_CHOOSE_EXTRUDER_IT[] PROGMEM = "Seleziona estrusore:"; -const char MSG_CHOOSE_EXTRUDER_ES[] PROGMEM = "Elegir extrusor:"; -const char MSG_CHOOSE_EXTRUDER_PL[] PROGMEM = "Wybierz ekstruder"; -const char MSG_CHOOSE_EXTRUDER_DE[] PROGMEM = "Waehlen Sie Extruder"; -const char * const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHOOSE_EXTRUDER_EN, - MSG_CHOOSE_EXTRUDER_CZ, - MSG_CHOOSE_EXTRUDER_IT, - MSG_CHOOSE_EXTRUDER_ES, - MSG_CHOOSE_EXTRUDER_PL, - MSG_CHOOSE_EXTRUDER_DE -}; - -const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done."; -const char MSG_CLEAN_NOZZLE_E_CZ[] PROGMEM = "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem."; -const char MSG_CLEAN_NOZZLE_E_IT[] PROGMEM = "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."; -const char MSG_CLEAN_NOZZLE_E_ES[] PROGMEM = "E calibrado. Limpiar la boquilla. Haga clic una vez terminado."; -const char MSG_CLEAN_NOZZLE_E_PL[] PROGMEM = "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "; -const char MSG_CLEAN_NOZZLE_E_DE[] PROGMEM = "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."; -const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CLEAN_NOZZLE_E_EN, - MSG_CLEAN_NOZZLE_E_CZ, - MSG_CLEAN_NOZZLE_E_IT, - MSG_CLEAN_NOZZLE_E_ES, - MSG_CLEAN_NOZZLE_E_PL, - MSG_CLEAN_NOZZLE_E_DE -}; - -const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card"; -const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = { - MSG_CNG_SDCARD_EN -}; - -const char MSG_CONFIGURATION_VER_EN[] PROGMEM = " Last Updated: "; -const char * const MSG_CONFIGURATION_VER_LANG_TABLE[1] PROGMEM = { - MSG_CONFIGURATION_VER_EN -}; - -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN[] PROGMEM = "Are left and right Z~carriages all up?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ[] PROGMEM = "Dojely oba Z voziky k~hornimu dorazu?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT[] PROGMEM = "I carrelli Z sin/des sono altezza max?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES[] PROGMEM = "Carros Z izq./der. estan arriba maximo?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL[] PROGMEM = "Oba wozki dojechaly do gornej ramy?"; -const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE[] PROGMEM = "Sind beide Z Schlitten ganz oben?"; -const char * const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL, - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE -}; - -const char MSG_CONFIRM_NOZZLE_CLEAN_EN[] PROGMEM = "Please clean the nozzle for calibration. Click when done."; -const char MSG_CONFIRM_NOZZLE_CLEAN_CZ[] PROGMEM = "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_IT[] PROGMEM = "Pulire l'ugello per la calibrazione, poi fare click."; -const char MSG_CONFIRM_NOZZLE_CLEAN_ES[] PROGMEM = "Limpiar boquilla para calibracion. Click cuando acabes."; -const char MSG_CONFIRM_NOZZLE_CLEAN_PL[] PROGMEM = "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_DE[] PROGMEM = "Bitte reinigen Sie die Duese vor Kalibrierung. Klicken wenn sauber."; -const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_NOZZLE_CLEAN_EN, - MSG_CONFIRM_NOZZLE_CLEAN_CZ, - MSG_CONFIRM_NOZZLE_CLEAN_IT, - MSG_CONFIRM_NOZZLE_CLEAN_ES, - MSG_CONFIRM_NOZZLE_CLEAN_PL, - MSG_CONFIRM_NOZZLE_CLEAN_DE -}; - -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN[] PROGMEM = "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber."; -const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL, - MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE -}; - -const char MSG_CONTROL_EN[] PROGMEM = "Control"; -const char * const MSG_CONTROL_LANG_TABLE[1] PROGMEM = { - MSG_CONTROL_EN -}; - -const char MSG_COOLDOWN_EN[] PROGMEM = "Cooldown"; -const char MSG_COOLDOWN_CZ[] PROGMEM = "Zchladit"; -const char MSG_COOLDOWN_IT[] PROGMEM = "Raffredda"; -const char MSG_COOLDOWN_ES[] PROGMEM = "Enfriar"; -const char MSG_COOLDOWN_PL[] PROGMEM = "Wychlodzic"; -const char MSG_COOLDOWN_DE[] PROGMEM = "Abkuehlen"; -const char * const MSG_COOLDOWN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_COOLDOWN_EN, - MSG_COOLDOWN_CZ, - MSG_COOLDOWN_IT, - MSG_COOLDOWN_ES, - MSG_COOLDOWN_PL, - MSG_COOLDOWN_DE -}; - -const char MSG_CORRECTLY_EN[] PROGMEM = "Changed correctly?"; -const char MSG_CORRECTLY_CZ[] PROGMEM = "Vymena ok?"; -const char MSG_CORRECTLY_IT[] PROGMEM = "Cambiato corr.?"; -const char MSG_CORRECTLY_ES[] PROGMEM = "Cambiado correct.?"; -const char MSG_CORRECTLY_PL[] PROGMEM = "Wymiana ok?"; -const char MSG_CORRECTLY_DE[] PROGMEM = "Wechsel ok?"; -const char * const MSG_CORRECTLY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CORRECTLY_EN, - MSG_CORRECTLY_CZ, - MSG_CORRECTLY_IT, - MSG_CORRECTLY_ES, - MSG_CORRECTLY_PL, - MSG_CORRECTLY_DE -}; - -const char MSG_COUNT_X_EN[] PROGMEM = " Count X: "; -const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { - MSG_COUNT_X_EN -}; - -const char MSG_CURRENT_EN[] PROGMEM = "Current"; -const char MSG_CURRENT_CZ[] PROGMEM = "Pouze aktualni"; -const char MSG_CURRENT_IT[] PROGMEM = "Attuale"; -const char MSG_CURRENT_ES[] PROGMEM = "Actual"; -const char MSG_CURRENT_PL[] PROGMEM = "Tylko aktualne"; -const char MSG_CURRENT_DE[] PROGMEM = "Aktuelles"; -const char * const MSG_CURRENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CURRENT_EN, - MSG_CURRENT_CZ, - MSG_CURRENT_IT, - MSG_CURRENT_ES, - MSG_CURRENT_PL, - MSG_CURRENT_DE -}; - -const char MSG_DATE_EN[] PROGMEM = "Date:"; -const char MSG_DATE_CZ[] PROGMEM = "Datum:"; -const char MSG_DATE_IT[] PROGMEM = "Data"; -const char MSG_DATE_ES[] PROGMEM = "Fecha:"; -const char MSG_DATE_PL[] PROGMEM = "Data:"; -const char MSG_DATE_DE[] PROGMEM = "Datum:"; -const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DATE_EN, - MSG_DATE_CZ, - MSG_DATE_IT, - MSG_DATE_ES, - MSG_DATE_PL, - MSG_DATE_DE -}; - -const char MSG_DEFAULT_SETTINGS_LOADED_EN[] PROGMEM = "Default settings loaded"; -const char MSG_DEFAULT_SETTINGS_LOADED_DE[] PROGMEM = "Standardeinstellungen geladen"; -const char * const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DEFAULT_SETTINGS_LOADED_EN, - MSG_DEFAULT_SETTINGS_LOADED_EN, - MSG_DEFAULT_SETTINGS_LOADED_EN, - MSG_DEFAULT_SETTINGS_LOADED_EN, - MSG_DEFAULT_SETTINGS_LOADED_EN, - MSG_DEFAULT_SETTINGS_LOADED_DE -}; - -const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers"; -const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory"; -const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori"; -const char MSG_DISABLE_STEPPERS_ES[] PROGMEM = "Apagar motores"; -const char MSG_DISABLE_STEPPERS_PL[] PROGMEM = "Wylaczyc silniki"; -const char MSG_DISABLE_STEPPERS_DE[] PROGMEM = "Motoren aus"; -const char * const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DISABLE_STEPPERS_EN, - MSG_DISABLE_STEPPERS_CZ, - MSG_DISABLE_STEPPERS_IT, - MSG_DISABLE_STEPPERS_ES, - MSG_DISABLE_STEPPERS_PL, - MSG_DISABLE_STEPPERS_DE -}; - -const char MSG_DWELL_EN[] PROGMEM = "Sleep..."; -const char MSG_DWELL_IT[] PROGMEM = "Sospensione..."; -const char MSG_DWELL_ES[] PROGMEM = "En espera"; -const char MSG_DWELL_DE[] PROGMEM = "Warten..."; -const char * const MSG_DWELL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DWELL_EN, - MSG_DWELL_EN, - MSG_DWELL_IT, - MSG_DWELL_ES, - MSG_DWELL_EN, - MSG_DWELL_DE -}; - -const char MSG_ENDSTOPS_HIT_EN[] PROGMEM = "endstops hit: "; -const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOPS_HIT_EN -}; - -const char MSG_ENDSTOP_HIT_EN[] PROGMEM = "TRIGGERED"; -const char * const MSG_ENDSTOP_HIT_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOP_HIT_EN -}; - -const char MSG_ENDSTOP_OPEN_EN[] PROGMEM = "open"; -const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[1] PROGMEM = { - MSG_ENDSTOP_OPEN_EN -}; - -const char MSG_END_FILE_LIST_EN[] PROGMEM = "End file list"; -const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { - MSG_END_FILE_LIST_EN -}; - -const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; -const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; -const char MSG_ERROR_IT[] PROGMEM = "ERRORE:"; -const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; -const char MSG_ERROR_DE[] PROGMEM = "FEHLER:"; -const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ERROR_EN, - MSG_ERROR_CZ, - MSG_ERROR_IT, - MSG_ERROR_EN, - MSG_ERROR_PL, - MSG_ERROR_DE -}; - -const char MSG_ERR_CHECKSUM_MISMATCH_EN[] PROGMEM = "checksum mismatch, Last Line: "; -const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1] PROGMEM = { - MSG_ERR_CHECKSUM_MISMATCH_EN -}; - -const char MSG_ERR_COLD_EXTRUDE_STOP_EN[] PROGMEM = " cold extrusion prevented"; -const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { - MSG_ERR_COLD_EXTRUDE_STOP_EN -}; - -const char MSG_ERR_KILLED_EN[] PROGMEM = "Printer halted. kill() called!"; -const char * const MSG_ERR_KILLED_LANG_TABLE[1] PROGMEM = { - MSG_ERR_KILLED_EN -}; - -const char MSG_ERR_LINE_NO_EN[] PROGMEM = "Line Number is not Last Line Number+1, Last Line: "; -const char * const MSG_ERR_LINE_NO_LANG_TABLE[1] PROGMEM = { - MSG_ERR_LINE_NO_EN -}; - -const char MSG_ERR_LONG_EXTRUDE_STOP_EN[] PROGMEM = " too long extrusion prevented"; -const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { - MSG_ERR_LONG_EXTRUDE_STOP_EN -}; - -const char MSG_ERR_NO_CHECKSUM_EN[] PROGMEM = "No Checksum with line number, Last Line: "; -const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_CHECKSUM_EN -}; - -const char MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN[] PROGMEM = "No Line Number with checksum, Last Line: "; -const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN -}; - -const char MSG_ERR_NO_THERMISTORS_EN[] PROGMEM = "No thermistors - no temperature"; -const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1] PROGMEM = { - MSG_ERR_NO_THERMISTORS_EN -}; - -const char MSG_ERR_STOPPED_EN[] PROGMEM = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; -const char * const MSG_ERR_STOPPED_LANG_TABLE[1] PROGMEM = { - MSG_ERR_STOPPED_EN -}; - -const char MSG_EXTERNAL_RESET_EN[] PROGMEM = " External Reset"; -const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = { - MSG_EXTERNAL_RESET_EN -}; - -const char MSG_EXTRUDER_EN[] PROGMEM = "Extruder"; -const char MSG_EXTRUDER_IT[] PROGMEM = "Estrusore"; -const char MSG_EXTRUDER_ES[] PROGMEM = "Extrusor"; -const char MSG_EXTRUDER_PL[] PROGMEM = "Ekstruder"; -const char * const MSG_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_EN, - MSG_EXTRUDER_EN, - MSG_EXTRUDER_IT, - MSG_EXTRUDER_ES, - MSG_EXTRUDER_PL, - MSG_EXTRUDER_EN -}; - -const char MSG_EXTRUDER_1_EN[] PROGMEM = "Extruder 1"; -const char MSG_EXTRUDER_1_IT[] PROGMEM = "Estrusore 1"; -const char MSG_EXTRUDER_1_ES[] PROGMEM = "Extrusor 1"; -const char MSG_EXTRUDER_1_PL[] PROGMEM = "Ekstruder 1"; -const char * const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_1_EN, - MSG_EXTRUDER_1_EN, - MSG_EXTRUDER_1_IT, - MSG_EXTRUDER_1_ES, - MSG_EXTRUDER_1_PL, - MSG_EXTRUDER_1_EN -}; - -const char MSG_EXTRUDER_2_EN[] PROGMEM = "Extruder 2"; -const char MSG_EXTRUDER_2_IT[] PROGMEM = "Estrusore 2"; -const char MSG_EXTRUDER_2_ES[] PROGMEM = "Extrusor 2"; -const char MSG_EXTRUDER_2_PL[] PROGMEM = "Ekstruder 2"; -const char * const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_2_EN, - MSG_EXTRUDER_2_EN, - MSG_EXTRUDER_2_IT, - MSG_EXTRUDER_2_ES, - MSG_EXTRUDER_2_PL, - MSG_EXTRUDER_2_EN -}; - -const char MSG_EXTRUDER_3_EN[] PROGMEM = "Extruder 3"; -const char MSG_EXTRUDER_3_IT[] PROGMEM = "Estrusore 3"; -const char MSG_EXTRUDER_3_ES[] PROGMEM = "Extrusor 3"; -const char MSG_EXTRUDER_3_PL[] PROGMEM = "Ekstruder 3"; -const char * const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_3_EN, - MSG_EXTRUDER_3_EN, - MSG_EXTRUDER_3_IT, - MSG_EXTRUDER_3_ES, - MSG_EXTRUDER_3_PL, - MSG_EXTRUDER_3_EN -}; - -const char MSG_EXTRUDER_4_EN[] PROGMEM = "Extruder 4"; -const char MSG_EXTRUDER_4_IT[] PROGMEM = "Estrusore 4"; -const char MSG_EXTRUDER_4_ES[] PROGMEM = "Extrusor 4"; -const char MSG_EXTRUDER_4_PL[] PROGMEM = "Ekstruder 4"; -const char * const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_EXTRUDER_4_EN, - MSG_EXTRUDER_4_EN, - MSG_EXTRUDER_4_IT, - MSG_EXTRUDER_4_ES, - MSG_EXTRUDER_4_PL, - MSG_EXTRUDER_4_EN -}; - -const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done."; -const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."; -const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."; -const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."; -const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; -const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_E_CAL_KNOB_EN, - MSG_E_CAL_KNOB_CZ, - MSG_E_CAL_KNOB_IT, - MSG_E_CAL_KNOB_ES, - MSG_E_CAL_KNOB_PL, - MSG_E_CAL_KNOB_DE -}; - -const char MSG_Enqueing_EN[] PROGMEM = "enqueing \""; -const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = { - MSG_Enqueing_EN -}; - -const char MSG_FACTOR_EN[] PROGMEM = " \002 Fact"; -const char * const MSG_FACTOR_LANG_TABLE[1] PROGMEM = { - MSG_FACTOR_EN -}; - -const char MSG_FAN_SPEED_EN[] PROGMEM = "Fan speed"; -const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; -const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; -const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; -const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; -const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; -const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FAN_SPEED_EN, - MSG_FAN_SPEED_CZ, - MSG_FAN_SPEED_IT, - MSG_FAN_SPEED_ES, - MSG_FAN_SPEED_PL, - MSG_FAN_SPEED_DE -}; - -const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; -const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = { - MSG_FARM_CARD_MENU_EN -}; - -const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament"; -const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; -const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; -const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; -const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; -const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; -const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENTCHANGE_EN, - MSG_FILAMENTCHANGE_CZ, - MSG_FILAMENTCHANGE_IT, - MSG_FILAMENTCHANGE_ES, - MSG_FILAMENTCHANGE_PL, - MSG_FILAMENTCHANGE_DE -}; - -const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?"; -const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?"; -const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?"; -const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?"; -const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?"; -const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; -const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_CLEAN_EN, - MSG_FILAMENT_CLEAN_CZ, - MSG_FILAMENT_CLEAN_IT, - MSG_FILAMENT_CLEAN_ES, - MSG_FILAMENT_CLEAN_PL, - MSG_FILAMENT_CLEAN_DE -}; - -const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; -const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte filament do extruderu 1. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare."; -const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T0_DE[] PROGMEM = "Filament in extruder 1 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T0_EN, - MSG_FILAMENT_LOADING_T0_CZ, - MSG_FILAMENT_LOADING_T0_IT, - MSG_FILAMENT_LOADING_T0_ES, - MSG_FILAMENT_LOADING_T0_PL, - MSG_FILAMENT_LOADING_T0_DE -}; - -const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; -const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte filament do extruderu 2. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare."; -const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T1_DE[] PROGMEM = "Filament in extruder 2 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T1_EN, - MSG_FILAMENT_LOADING_T1_CZ, - MSG_FILAMENT_LOADING_T1_IT, - MSG_FILAMENT_LOADING_T1_ES, - MSG_FILAMENT_LOADING_T1_PL, - MSG_FILAMENT_LOADING_T1_DE -}; - -const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; -const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte filament do extruderu 3. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare."; -const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T2_DE[] PROGMEM = "Filament in extruder 3 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T2_EN, - MSG_FILAMENT_LOADING_T2_CZ, - MSG_FILAMENT_LOADING_T2_IT, - MSG_FILAMENT_LOADING_T2_ES, - MSG_FILAMENT_LOADING_T2_PL, - MSG_FILAMENT_LOADING_T2_DE -}; - -const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; -const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte filament do extruderu 4. Potvrdte tlacitkem."; -const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare."; -const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado."; -const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."; -const char MSG_FILAMENT_LOADING_T3_DE[] PROGMEM = "Filament in extruder 4 einlegen. Klicken wenn fertig."; -const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T3_EN, - MSG_FILAMENT_LOADING_T3_CZ, - MSG_FILAMENT_LOADING_T3_IT, - MSG_FILAMENT_LOADING_T3_ES, - MSG_FILAMENT_LOADING_T3_PL, - MSG_FILAMENT_LOADING_T3_DE -}; - -const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; -const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { - MSG_FILE_PRINTED_EN -}; - -const char MSG_FILE_SAVED_EN[] PROGMEM = "Done saving file."; -const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = { - MSG_FILE_SAVED_EN -}; - -const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait."; -const char MSG_FIL_ADJUSTING_CZ[] PROGMEM = "Probiha srovnani filamentu. Prosim cekejte."; -const char MSG_FIL_ADJUSTING_IT[] PROGMEM = "Filamento in fase di regolazione. Attendere prego."; -const char MSG_FIL_ADJUSTING_ES[] PROGMEM = "Ajustando filamentos. Esperar por favor."; -const char MSG_FIL_ADJUSTING_PL[] PROGMEM = "Przebiega wyrownanie filamentow. Prosze czekac."; -const char MSG_FIL_ADJUSTING_DE[] PROGMEM = "Einstellen Filament. Bitte warten."; -const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIL_ADJUSTING_EN, - MSG_FIL_ADJUSTING_CZ, - MSG_FIL_ADJUSTING_IT, - MSG_FIL_ADJUSTING_ES, - MSG_FIL_ADJUSTING_PL, - MSG_FIL_ADJUSTING_DE -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE[] PROGMEM = "Wiederholung "; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Searching bed calibration point"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Hledam kalibracni bod podlozky"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Ricerca del letto punto di calibraz."; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Buscando cama punto de calibracion"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Szukam punktu kalibracyjnego podkladki"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Suche Bett Kalibrierpunkt"; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE -}; - -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; -const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; -const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL, - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE -}; - -const char MSG_FINISHING_MOVEMENTS_EN[] PROGMEM = "Finishing movements"; -const char MSG_FINISHING_MOVEMENTS_CZ[] PROGMEM = "Dokoncovani pohybu"; -const char MSG_FINISHING_MOVEMENTS_IT[] PROGMEM = "Arresto in corso"; -const char MSG_FINISHING_MOVEMENTS_ES[] PROGMEM = "Term. movimientos"; -const char MSG_FINISHING_MOVEMENTS_PL[] PROGMEM = "Konczenie druku"; -const char MSG_FINISHING_MOVEMENTS_DE[] PROGMEM = "Bewegungen beenden"; -const char * const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FINISHING_MOVEMENTS_EN, - MSG_FINISHING_MOVEMENTS_CZ, - MSG_FINISHING_MOVEMENTS_IT, - MSG_FINISHING_MOVEMENTS_ES, - MSG_FINISHING_MOVEMENTS_PL, - MSG_FINISHING_MOVEMENTS_DE -}; - -const char MSG_FLOW_EN[] PROGMEM = "Flow"; -const char MSG_FLOW_CZ[] PROGMEM = "Prutok"; -const char MSG_FLOW_IT[] PROGMEM = "Flusso"; -const char MSG_FLOW_ES[] PROGMEM = "Flujo"; -const char MSG_FLOW_PL[] PROGMEM = "Przeplyw"; -const char MSG_FLOW_DE[] PROGMEM = "Durchfluss"; -const char * const MSG_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FLOW_EN, - MSG_FLOW_CZ, - MSG_FLOW_IT, - MSG_FLOW_ES, - MSG_FLOW_PL, - MSG_FLOW_DE -}; - -const char MSG_FLOW0_EN[] PROGMEM = "Flow 0"; -const char * const MSG_FLOW0_LANG_TABLE[1] PROGMEM = { - MSG_FLOW0_EN -}; - -const char MSG_FLOW1_EN[] PROGMEM = "Flow 1"; -const char * const MSG_FLOW1_LANG_TABLE[1] PROGMEM = { - MSG_FLOW1_EN -}; - -const char MSG_FLOW2_EN[] PROGMEM = "Flow 2"; -const char * const MSG_FLOW2_LANG_TABLE[1] PROGMEM = { - MSG_FLOW2_EN -}; - -const char MSG_FOLLOW_CALIBRATION_FLOW_EN[] PROGMEM = "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."; -const char MSG_FOLLOW_CALIBRATION_FLOW_CZ[] PROGMEM = "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."; -const char MSG_FOLLOW_CALIBRATION_FLOW_IT[] PROGMEM = "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."; -const char MSG_FOLLOW_CALIBRATION_FLOW_ES[] PROGMEM = "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."; -const char MSG_FOLLOW_CALIBRATION_FLOW_PL[] PROGMEM = "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."; -const char MSG_FOLLOW_CALIBRATION_FLOW_DE[] PROGMEM = "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow."; -const char * const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FOLLOW_CALIBRATION_FLOW_EN, - MSG_FOLLOW_CALIBRATION_FLOW_CZ, - MSG_FOLLOW_CALIBRATION_FLOW_IT, - MSG_FOLLOW_CALIBRATION_FLOW_ES, - MSG_FOLLOW_CALIBRATION_FLOW_PL, - MSG_FOLLOW_CALIBRATION_FLOW_DE -}; - -const char MSG_FREE_MEMORY_EN[] PROGMEM = " Free Memory: "; -const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { - MSG_FREE_MEMORY_EN -}; - -const char MSG_HEATING_EN[] PROGMEM = "Heating"; -const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; -const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; -const char MSG_HEATING_ES[] PROGMEM = "Calentando..."; -const char MSG_HEATING_PL[] PROGMEM = "Grzanie..."; -const char MSG_HEATING_DE[] PROGMEM = "Aufwaermen"; -const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_EN, - MSG_HEATING_CZ, - MSG_HEATING_IT, - MSG_HEATING_ES, - MSG_HEATING_PL, - MSG_HEATING_DE -}; - -const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; -const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; -const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo"; -const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentamiento final."; -const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; -const char MSG_HEATING_COMPLETE_DE[] PROGMEM = "Aufwaermen OK"; -const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_COMPLETE_EN, - MSG_HEATING_COMPLETE_CZ, - MSG_HEATING_COMPLETE_IT, - MSG_HEATING_COMPLETE_ES, - MSG_HEATING_COMPLETE_PL, - MSG_HEATING_COMPLETE_DE -}; - -const char MSG_HOMEYZ_EN[] PROGMEM = "Calibrate Z"; -const char MSG_HOMEYZ_CZ[] PROGMEM = "Kalibrovat Z"; -const char MSG_HOMEYZ_IT[] PROGMEM = "Calibra Z"; -const char MSG_HOMEYZ_ES[] PROGMEM = "Calibrar Z"; -const char MSG_HOMEYZ_PL[] PROGMEM = "Kalibruj Z"; -const char MSG_HOMEYZ_DE[] PROGMEM = "Kalibrieren Z"; -const char * const MSG_HOMEYZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_EN, - MSG_HOMEYZ_CZ, - MSG_HOMEYZ_IT, - MSG_HOMEYZ_ES, - MSG_HOMEYZ_PL, - MSG_HOMEYZ_DE -}; - -const char MSG_HOMEYZ_DONE_EN[] PROGMEM = "Calibration done"; -const char MSG_HOMEYZ_DONE_CZ[] PROGMEM = "Kalibrace OK"; -const char MSG_HOMEYZ_DONE_IT[] PROGMEM = "Calibrazione OK"; -const char MSG_HOMEYZ_DONE_ES[] PROGMEM = "Calibracion OK"; -const char MSG_HOMEYZ_DONE_PL[] PROGMEM = "Kalibracja OK"; -const char MSG_HOMEYZ_DONE_DE[] PROGMEM = "Kalibrierung OK"; -const char * const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_DONE_EN, - MSG_HOMEYZ_DONE_CZ, - MSG_HOMEYZ_DONE_IT, - MSG_HOMEYZ_DONE_ES, - MSG_HOMEYZ_DONE_PL, - MSG_HOMEYZ_DONE_DE -}; - -const char MSG_HOMEYZ_PROGRESS_EN[] PROGMEM = "Calibrating Z"; -const char MSG_HOMEYZ_PROGRESS_CZ[] PROGMEM = "Kalibruji Z"; -const char MSG_HOMEYZ_PROGRESS_IT[] PROGMEM = "Calibrando Z"; -const char MSG_HOMEYZ_PROGRESS_ES[] PROGMEM = "Calibrando Z"; -const char MSG_HOMEYZ_PROGRESS_PL[] PROGMEM = "Kalibruje Z"; -const char MSG_HOMEYZ_PROGRESS_DE[] PROGMEM = "Kalibriere Z"; -const char * const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_PROGRESS_EN, - MSG_HOMEYZ_PROGRESS_CZ, - MSG_HOMEYZ_PROGRESS_IT, - MSG_HOMEYZ_PROGRESS_ES, - MSG_HOMEYZ_PROGRESS_PL, - MSG_HOMEYZ_PROGRESS_DE -}; - -const char MSG_HOTEND_OFFSET_EN[] PROGMEM = "Hotend offsets:"; -const char * const MSG_HOTEND_OFFSET_LANG_TABLE[1] PROGMEM = { - MSG_HOTEND_OFFSET_EN -}; - -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Improving bed calibration point"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Zlepsuji presnost kalibracniho bodu"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Perfezion. il letto punto di calibraz."; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Mejorando cama punto de calibracion"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Poprawiam precyzyjnosc punktu kalibracyjnego"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Genauigkeit verbessern bei Kalibrierpunkt"; -const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE -}; - -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 9"; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 9"; -const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL, - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE -}; - -const char MSG_INIT_SDCARD_EN[] PROGMEM = "Init. SD card"; -const char * const MSG_INIT_SDCARD_LANG_TABLE[1] PROGMEM = { - MSG_INIT_SDCARD_EN -}; - -const char MSG_INSERT_FILAMENT_EN[] PROGMEM = "Insert filament"; -const char MSG_INSERT_FILAMENT_CZ[] PROGMEM = "Vlozte filament"; -const char MSG_INSERT_FILAMENT_IT[] PROGMEM = "Inserire filamento"; -const char MSG_INSERT_FILAMENT_ES[] PROGMEM = "Introducir filamento"; -const char MSG_INSERT_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; -const char MSG_INSERT_FILAMENT_DE[] PROGMEM = "Filament einlegen"; -const char * const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_INSERT_FILAMENT_EN, - MSG_INSERT_FILAMENT_CZ, - MSG_INSERT_FILAMENT_IT, - MSG_INSERT_FILAMENT_ES, - MSG_INSERT_FILAMENT_PL, - MSG_INSERT_FILAMENT_DE -}; - -const char MSG_INVALID_EXTRUDER_EN[] PROGMEM = "Invalid extruder"; -const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_INVALID_EXTRUDER_EN -}; - -const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; -const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; -const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; -const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; -const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_KILLED_EN, - MSG_KILLED_EN, - MSG_KILLED_IT, - MSG_KILLED_ES, - MSG_KILLED_EN, - MSG_KILLED_DE -}; - -const char MSG_LANGUAGE_NAME_EN[] PROGMEM = "English"; -const char MSG_LANGUAGE_NAME_CZ[] PROGMEM = "Cestina"; -const char MSG_LANGUAGE_NAME_IT[] PROGMEM = "Italiano"; -const char MSG_LANGUAGE_NAME_ES[] PROGMEM = "Espanol"; -const char MSG_LANGUAGE_NAME_PL[] PROGMEM = "Polski"; -const char MSG_LANGUAGE_NAME_DE[] PROGMEM = "Deutsch"; -const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_NAME_EN, - MSG_LANGUAGE_NAME_CZ, - MSG_LANGUAGE_NAME_IT, - MSG_LANGUAGE_NAME_ES, - MSG_LANGUAGE_NAME_PL, - MSG_LANGUAGE_NAME_DE -}; - -const char MSG_LANGUAGE_SELECT_EN[] PROGMEM = "Select language"; -const char MSG_LANGUAGE_SELECT_CZ[] PROGMEM = "Vyber jazyka"; -const char MSG_LANGUAGE_SELECT_IT[] PROGMEM = "Seleziona lingua"; -const char MSG_LANGUAGE_SELECT_ES[] PROGMEM = "Cambiae el idioma"; -const char MSG_LANGUAGE_SELECT_PL[] PROGMEM = "Wybor jezyka"; -const char MSG_LANGUAGE_SELECT_DE[] PROGMEM = "Waehle Sprache"; -const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_SELECT_EN, - MSG_LANGUAGE_SELECT_CZ, - MSG_LANGUAGE_SELECT_IT, - MSG_LANGUAGE_SELECT_ES, - MSG_LANGUAGE_SELECT_PL, - MSG_LANGUAGE_SELECT_DE -}; - -const char MSG_LEFT_EN[] PROGMEM = "Left:"; -const char MSG_LEFT_CZ[] PROGMEM = "Levy:"; -const char MSG_LEFT_IT[] PROGMEM = "Sinistra:"; -const char MSG_LEFT_ES[] PROGMEM = "Izquierda:"; -const char MSG_LEFT_PL[] PROGMEM = "Lewy:"; -const char MSG_LEFT_DE[] PROGMEM = "Links:"; -const char * const MSG_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LEFT_EN, - MSG_LEFT_CZ, - MSG_LEFT_IT, - MSG_LEFT_ES, - MSG_LEFT_PL, - MSG_LEFT_DE -}; - -const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; -const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; -const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore"; -const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cambiando color"; -const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; -const char MSG_LOADING_COLOR_DE[] PROGMEM = "Lade Farbe"; -const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_COLOR_EN, - MSG_LOADING_COLOR_CZ, - MSG_LOADING_COLOR_IT, - MSG_LOADING_COLOR_ES, - MSG_LOADING_COLOR_PL, - MSG_LOADING_COLOR_DE -}; - -const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; -const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; -const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; -const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; -const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; -const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament laedt"; -const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_FILAMENT_EN, - MSG_LOADING_FILAMENT_CZ, - MSG_LOADING_FILAMENT_IT, - MSG_LOADING_FILAMENT_ES, - MSG_LOADING_FILAMENT_PL, - MSG_LOADING_FILAMENT_DE -}; - -const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; -const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; -const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; -const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; -const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; -const char MSG_LOAD_ALL_DE[] PROGMEM = "Alle laden"; -const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_ALL_EN, - MSG_LOAD_ALL_CZ, - MSG_LOAD_ALL_IT, - MSG_LOAD_ALL_ES, - MSG_LOAD_ALL_PL, - MSG_LOAD_ALL_DE -}; - -const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; -const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { - MSG_LOAD_EPROM_EN -}; - -const char MSG_LOAD_FILAMENT_EN[] PROGMEM = "Load filament"; -const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; -const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; -const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; -const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; -const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; -const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_EN, - MSG_LOAD_FILAMENT_CZ, - MSG_LOAD_FILAMENT_IT, - MSG_LOAD_FILAMENT_ES, - MSG_LOAD_FILAMENT_PL, - MSG_LOAD_FILAMENT_DE -}; - -const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; -const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; -const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; -const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; -const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; -const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Filament 1 laden"; -const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_1_EN, - MSG_LOAD_FILAMENT_1_CZ, - MSG_LOAD_FILAMENT_1_IT, - MSG_LOAD_FILAMENT_1_ES, - MSG_LOAD_FILAMENT_1_PL, - MSG_LOAD_FILAMENT_1_DE -}; - -const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; -const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; -const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; -const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; -const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; -const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Filament 2 laden"; -const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_2_EN, - MSG_LOAD_FILAMENT_2_CZ, - MSG_LOAD_FILAMENT_2_IT, - MSG_LOAD_FILAMENT_2_ES, - MSG_LOAD_FILAMENT_2_PL, - MSG_LOAD_FILAMENT_2_DE -}; - -const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; -const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; -const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; -const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; -const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; -const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Filament 3 laden"; -const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_3_EN, - MSG_LOAD_FILAMENT_3_CZ, - MSG_LOAD_FILAMENT_3_IT, - MSG_LOAD_FILAMENT_3_ES, - MSG_LOAD_FILAMENT_3_PL, - MSG_LOAD_FILAMENT_3_DE -}; - -const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; -const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; -const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; -const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; -const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; -const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Filament 4 laden"; -const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_4_EN, - MSG_LOAD_FILAMENT_4_CZ, - MSG_LOAD_FILAMENT_4_IT, - MSG_LOAD_FILAMENT_4_ES, - MSG_LOAD_FILAMENT_4_PL, - MSG_LOAD_FILAMENT_4_DE -}; - -const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; -const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka"; -const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta"; -const char MSG_LOOSE_PULLEY_ES[] PROGMEM = "Polea suelta"; -const char MSG_LOOSE_PULLEY_PL[] PROGMEM = "Kolo pasowe"; -const char MSG_LOOSE_PULLEY_DE[] PROGMEM = "Loser pulley"; -const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOOSE_PULLEY_EN, - MSG_LOOSE_PULLEY_CZ, - MSG_LOOSE_PULLEY_IT, - MSG_LOOSE_PULLEY_ES, - MSG_LOOSE_PULLEY_PL, - MSG_LOOSE_PULLEY_DE -}; - -const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder "; -const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M104_INVALID_EXTRUDER_EN -}; - -const char MSG_M105_INVALID_EXTRUDER_EN[] PROGMEM = "M105 Invalid extruder "; -const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M105_INVALID_EXTRUDER_EN -}; - -const char MSG_M109_INVALID_EXTRUDER_EN[] PROGMEM = "M109 Invalid extruder "; -const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M109_INVALID_EXTRUDER_EN -}; - -const char MSG_M115_REPORT_EN[] PROGMEM = "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/prusa3d/Prusa-i3-Plus/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000\n"; -const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { - MSG_M115_REPORT_EN -}; - -const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; -const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { - MSG_M119_REPORT_EN -}; - -const char MSG_M200_INVALID_EXTRUDER_EN[] PROGMEM = "M200 Invalid extruder "; -const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M200_INVALID_EXTRUDER_EN -}; - -const char MSG_M218_INVALID_EXTRUDER_EN[] PROGMEM = "M218 Invalid extruder "; -const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M218_INVALID_EXTRUDER_EN -}; - -const char MSG_M221_INVALID_EXTRUDER_EN[] PROGMEM = "M221 Invalid extruder "; -const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { - MSG_M221_INVALID_EXTRUDER_EN -}; - -const char MSG_MAIN_EN[] PROGMEM = "Main"; -const char MSG_MAIN_CZ[] PROGMEM = "Hlavni nabidka"; -const char MSG_MAIN_IT[] PROGMEM = "Menu principale"; -const char MSG_MAIN_ES[] PROGMEM = "Menu principal"; -const char MSG_MAIN_PL[] PROGMEM = "Menu glowne"; -const char MSG_MAIN_DE[] PROGMEM = "Hauptmenue"; -const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MAIN_EN, - MSG_MAIN_CZ, - MSG_MAIN_IT, - MSG_MAIN_ES, - MSG_MAIN_PL, - MSG_MAIN_DE -}; - -const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; -const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."; -const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; -const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; -const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; -const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MARK_FIL_EN, - MSG_MARK_FIL_CZ, - MSG_MARK_FIL_IT, - MSG_MARK_FIL_ES, - MSG_MARK_FIL_PL, - MSG_MARK_FIL_DE -}; - -const char MSG_MAX_EN[] PROGMEM = " \002 Max"; -const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { - MSG_MAX_EN -}; - -const char MSG_MEASURED_SKEW_EN[] PROGMEM = "Measured skew:"; -const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:"; -const char MSG_MEASURED_SKEW_IT[] PROGMEM = "Incl. misurata:"; -const char MSG_MEASURED_SKEW_ES[] PROGMEM = "Inclin. medida:"; -const char MSG_MEASURED_SKEW_PL[] PROGMEM = "Zmier. sciecie:"; -const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Symmetrie:"; -const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURED_SKEW_EN, - MSG_MEASURED_SKEW_CZ, - MSG_MEASURED_SKEW_IT, - MSG_MEASURED_SKEW_ES, - MSG_MEASURED_SKEW_PL, - MSG_MEASURED_SKEW_DE -}; - -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN[] PROGMEM = "Measuring reference height of calibration point"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ[] PROGMEM = "Merim referencni vysku kalibracniho bodu"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT[] PROGMEM = "Misurare l'altezza di riferimento del punto di calibrazione"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES[] PROGMEM = "Medir la altura del punto de la calibracion"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL[] PROGMEM = "Okreslam wysokosc odniesienia punktu kalibracyjnego"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE[] PROGMEM = "Messen der Referenzhoehe des Kalibrierpunktes"; -const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE -}; - -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN[] PROGMEM = " of 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ[] PROGMEM = " z 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT[] PROGMEM = " su 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES[] PROGMEM = " de 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL[] PROGMEM = " z 9"; -const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE[] PROGMEM = " von 9"; -const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL, - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE -}; - -const char MSG_MENU_CALIBRATION_EN[] PROGMEM = "Calibration"; -const char MSG_MENU_CALIBRATION_CZ[] PROGMEM = "Kalibrace"; -const char MSG_MENU_CALIBRATION_IT[] PROGMEM = "Calibrazione"; -const char MSG_MENU_CALIBRATION_ES[] PROGMEM = "Calibracion"; -const char MSG_MENU_CALIBRATION_PL[] PROGMEM = "Kalibracja"; -const char MSG_MENU_CALIBRATION_DE[] PROGMEM = "Kalibrierung"; -const char * const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MENU_CALIBRATION_EN, - MSG_MENU_CALIBRATION_CZ, - MSG_MENU_CALIBRATION_IT, - MSG_MENU_CALIBRATION_ES, - MSG_MENU_CALIBRATION_PL, - MSG_MENU_CALIBRATION_DE -}; - -const char MSG_MESH_BED_LEVELING_EN[] PROGMEM = "Mesh Bed Leveling"; -const char MSG_MESH_BED_LEVELING_IT[] PROGMEM = "Mesh livel. letto"; -const char * const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_IT, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN, - MSG_MESH_BED_LEVELING_EN -}; - -const char MSG_MIN_EN[] PROGMEM = " \002 Min"; -const char * const MSG_MIN_LANG_TABLE[1] PROGMEM = { - MSG_MIN_EN -}; - -const char MSG_MOTION_EN[] PROGMEM = "Motion"; -const char * const MSG_MOTION_LANG_TABLE[1] PROGMEM = { - MSG_MOTION_EN -}; - -const char MSG_MOVE_01MM_EN[] PROGMEM = "Move 0.1mm"; -const char * const MSG_MOVE_01MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_01MM_EN -}; - -const char MSG_MOVE_10MM_EN[] PROGMEM = "Move 10mm"; -const char * const MSG_MOVE_10MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_10MM_EN -}; - -const char MSG_MOVE_1MM_EN[] PROGMEM = "Move 1mm"; -const char * const MSG_MOVE_1MM_LANG_TABLE[1] PROGMEM = { - MSG_MOVE_1MM_EN -}; - -const char MSG_MOVE_AXIS_EN[] PROGMEM = "Move axis"; -const char MSG_MOVE_AXIS_CZ[] PROGMEM = "Posunout osu"; -const char MSG_MOVE_AXIS_IT[] PROGMEM = "Muovi asse"; -const char MSG_MOVE_AXIS_ES[] PROGMEM = "Mover ejes"; -const char MSG_MOVE_AXIS_PL[] PROGMEM = "Ruch osi"; -const char MSG_MOVE_AXIS_DE[] PROGMEM = "Bewege Achse"; -const char * const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_AXIS_EN, - MSG_MOVE_AXIS_CZ, - MSG_MOVE_AXIS_IT, - MSG_MOVE_AXIS_ES, - MSG_MOVE_AXIS_PL, - MSG_MOVE_AXIS_DE -}; - -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_EN[] PROGMEM = "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; -const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, - MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ, - MSG_MOVE_CARRIAGE_TO_THE_TOP_IT, - MSG_MOVE_CARRIAGE_TO_THE_TOP_ES, - MSG_MOVE_CARRIAGE_TO_THE_TOP_PL, - MSG_MOVE_CARRIAGE_TO_THE_TOP_DE -}; - -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN[] PROGMEM = "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; -const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL, - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE -}; - -const char MSG_MOVE_E_EN[] PROGMEM = "Extruder"; -const char MSG_MOVE_E_IT[] PROGMEM = "Muovi Estrusore"; -const char MSG_MOVE_E_ES[] PROGMEM = "Extruir"; -const char * const MSG_MOVE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_E_EN, - MSG_MOVE_E_EN, - MSG_MOVE_E_IT, - MSG_MOVE_E_ES, - MSG_MOVE_E_EN, - MSG_MOVE_E_EN -}; - -const char MSG_MOVE_X_EN[] PROGMEM = "Move X"; -const char MSG_MOVE_X_CZ[] PROGMEM = "Posunout X"; -const char MSG_MOVE_X_IT[] PROGMEM = "Muovi X"; -const char MSG_MOVE_X_ES[] PROGMEM = "Mover X"; -const char MSG_MOVE_X_PL[] PROGMEM = "Przesunac X"; -const char MSG_MOVE_X_DE[] PROGMEM = "Bewege X"; -const char * const MSG_MOVE_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_X_EN, - MSG_MOVE_X_CZ, - MSG_MOVE_X_IT, - MSG_MOVE_X_ES, - MSG_MOVE_X_PL, - MSG_MOVE_X_DE -}; - -const char MSG_MOVE_Y_EN[] PROGMEM = "Move Y"; -const char MSG_MOVE_Y_CZ[] PROGMEM = "Posunout Y"; -const char MSG_MOVE_Y_IT[] PROGMEM = "Muovi Y"; -const char MSG_MOVE_Y_ES[] PROGMEM = "Mover Y"; -const char MSG_MOVE_Y_PL[] PROGMEM = "Przesunac Y"; -const char MSG_MOVE_Y_DE[] PROGMEM = "Bewege Y"; -const char * const MSG_MOVE_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Y_EN, - MSG_MOVE_Y_CZ, - MSG_MOVE_Y_IT, - MSG_MOVE_Y_ES, - MSG_MOVE_Y_PL, - MSG_MOVE_Y_DE -}; - -const char MSG_MOVE_Z_EN[] PROGMEM = "Move Z"; -const char MSG_MOVE_Z_CZ[] PROGMEM = "Posunout Z"; -const char MSG_MOVE_Z_IT[] PROGMEM = "Muovi Z"; -const char MSG_MOVE_Z_ES[] PROGMEM = "Mover Z"; -const char MSG_MOVE_Z_PL[] PROGMEM = "Przesunac Z"; -const char MSG_MOVE_Z_DE[] PROGMEM = "Bewege Z"; -const char * const MSG_MOVE_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Z_EN, - MSG_MOVE_Z_CZ, - MSG_MOVE_Z_IT, - MSG_MOVE_Z_ES, - MSG_MOVE_Z_PL, - MSG_MOVE_Z_DE -}; - -const char MSG_NEW_FIRMWARE_AVAILABLE_EN[] PROGMEM = "New firmware version available:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_CZ[] PROGMEM = "Vysla nova verze firmware:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_IT[] PROGMEM = "Nuova versione del firmware disponibile"; -const char MSG_NEW_FIRMWARE_AVAILABLE_ES[] PROGMEM = "Nuevo firmware disponible:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_PL[] PROGMEM = "Wyszla nowa wersja firmware:"; -const char MSG_NEW_FIRMWARE_AVAILABLE_DE[] PROGMEM = "Neue Firmware Version verfuegbar:"; -const char * const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_AVAILABLE_EN, - MSG_NEW_FIRMWARE_AVAILABLE_CZ, - MSG_NEW_FIRMWARE_AVAILABLE_IT, - MSG_NEW_FIRMWARE_AVAILABLE_ES, - MSG_NEW_FIRMWARE_AVAILABLE_PL, - MSG_NEW_FIRMWARE_AVAILABLE_DE -}; - -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN[] PROGMEM = "Please upgrade."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ[] PROGMEM = "Prosim aktualizujte."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT[] PROGMEM = "Prega aggiorna."; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES[] PROGMEM = "Actualizar por favor"; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL[] PROGMEM = "Prosze zaktualizowac"; -const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE[] PROGMEM = "Bitte aktualisieren."; -const char * const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL, - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE -}; - -const char MSG_NO_EN[] PROGMEM = "No"; -const char MSG_NO_CZ[] PROGMEM = "Ne"; -const char MSG_NO_PL[] PROGMEM = "Nie"; -const char MSG_NO_DE[] PROGMEM = "Nein"; -const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_EN, - MSG_NO_CZ, - MSG_NO_EN, - MSG_NO_EN, - MSG_NO_PL, - MSG_NO_DE -}; - -const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; -const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; -const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro"; -const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no homogeneo"; -const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; -const char MSG_NOT_COLOR_DE[] PROGMEM = "Farbe nicht klar."; -const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_COLOR_EN, - MSG_NOT_COLOR_CZ, - MSG_NOT_COLOR_IT, - MSG_NOT_COLOR_ES, - MSG_NOT_COLOR_PL, - MSG_NOT_COLOR_DE -}; - -const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; -const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; -const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato"; -const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no introducido"; -const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; -const char MSG_NOT_LOADED_DE[] PROGMEM = "Fil. nicht geladen"; -const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_LOADED_EN, - MSG_NOT_LOADED_CZ, - MSG_NOT_LOADED_IT, - MSG_NOT_LOADED_ES, - MSG_NOT_LOADED_PL, - MSG_NOT_LOADED_DE -}; - -const char MSG_NOZZLE_EN[] PROGMEM = "Nozzle"; -const char MSG_NOZZLE_CZ[] PROGMEM = "Tryska"; -const char MSG_NOZZLE_IT[] PROGMEM = "Ugello"; -const char MSG_NOZZLE_ES[] PROGMEM = "Boquilla"; -const char MSG_NOZZLE_PL[] PROGMEM = "Dysza"; -const char MSG_NOZZLE_DE[] PROGMEM = "Duese"; -const char * const MSG_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOZZLE_EN, - MSG_NOZZLE_CZ, - MSG_NOZZLE_IT, - MSG_NOZZLE_ES, - MSG_NOZZLE_PL, - MSG_NOZZLE_DE -}; - -const char MSG_NOZZLE1_EN[] PROGMEM = "Nozzle2"; -const char * const MSG_NOZZLE1_LANG_TABLE[1] PROGMEM = { - MSG_NOZZLE1_EN -}; - -const char MSG_NOZZLE2_EN[] PROGMEM = "Nozzle3"; -const char * const MSG_NOZZLE2_LANG_TABLE[1] PROGMEM = { - MSG_NOZZLE2_EN -}; - -const char MSG_NO_CARD_EN[] PROGMEM = "No SD card"; -const char MSG_NO_CARD_CZ[] PROGMEM = "Zadna SD karta"; -const char MSG_NO_CARD_IT[] PROGMEM = "Nessuna SD"; -const char MSG_NO_CARD_ES[] PROGMEM = "No hay tarjeta SD"; -const char MSG_NO_CARD_PL[] PROGMEM = "Brak karty SD"; -const char MSG_NO_CARD_DE[] PROGMEM = "Keine SD Karte"; -const char * const MSG_NO_CARD_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_CARD_EN, - MSG_NO_CARD_CZ, - MSG_NO_CARD_IT, - MSG_NO_CARD_ES, - MSG_NO_CARD_PL, - MSG_NO_CARD_DE -}; - -const char MSG_NO_MOVE_EN[] PROGMEM = "No move."; -const char MSG_NO_MOVE_IT[] PROGMEM = "Nessun movimento."; -const char MSG_NO_MOVE_ES[] PROGMEM = "Sin movimiento"; -const char MSG_NO_MOVE_DE[] PROGMEM = "Keine Bewegung."; -const char * const MSG_NO_MOVE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_MOVE_EN, - MSG_NO_MOVE_EN, - MSG_NO_MOVE_IT, - MSG_NO_MOVE_ES, - MSG_NO_MOVE_EN, - MSG_NO_MOVE_DE -}; - -const char MSG_OFF_EN[] PROGMEM = "Off"; -const char * const MSG_OFF_LANG_TABLE[1] PROGMEM = { - MSG_OFF_EN -}; - -const char MSG_OK_EN[] PROGMEM = "ok"; -const char * const MSG_OK_LANG_TABLE[1] PROGMEM = { - MSG_OK_EN -}; - -const char MSG_ON_EN[] PROGMEM = "On "; -const char * const MSG_ON_LANG_TABLE[1] PROGMEM = { - MSG_ON_EN -}; - -const char MSG_PAPER_EN[] PROGMEM = "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."; -const char MSG_PAPER_CZ[] PROGMEM = "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."; -const char MSG_PAPER_IT[] PROGMEM = "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."; -const char MSG_PAPER_ES[] PROGMEM = "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."; -const char MSG_PAPER_PL[] PROGMEM = "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."; -const char MSG_PAPER_DE[] PROGMEM = "Lege waehrend der Kalibrierung der ersten 4 Punkte ein Blatt Papier unter die Duese. Wenn die Duese das Papier bewegt, Drucker sofort ausschalten!"; -const char * const MSG_PAPER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAPER_EN, - MSG_PAPER_CZ, - MSG_PAPER_IT, - MSG_PAPER_ES, - MSG_PAPER_PL, - MSG_PAPER_DE -}; - -const char MSG_PAUSE_PRINT_EN[] PROGMEM = "Pause print"; -const char MSG_PAUSE_PRINT_CZ[] PROGMEM = "Pozastavit tisk"; -const char MSG_PAUSE_PRINT_IT[] PROGMEM = "Metti in pausa"; -const char MSG_PAUSE_PRINT_ES[] PROGMEM = "Pausar impresion"; -const char MSG_PAUSE_PRINT_PL[] PROGMEM = "Przerwac druk"; -const char MSG_PAUSE_PRINT_DE[] PROGMEM = "Pause"; -const char * const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAUSE_PRINT_EN, - MSG_PAUSE_PRINT_CZ, - MSG_PAUSE_PRINT_IT, - MSG_PAUSE_PRINT_ES, - MSG_PAUSE_PRINT_PL, - MSG_PAUSE_PRINT_DE -}; - -const char MSG_PICK_Z_EN[] PROGMEM = "Pick print"; -const char MSG_PICK_Z_CZ[] PROGMEM = "Vyberte vytisk"; -const char MSG_PICK_Z_ES[] PROGMEM = "Esc. Modelo Adecuado"; -const char MSG_PICK_Z_PL[] PROGMEM = "Vyberte vytisk"; -const char MSG_PICK_Z_DE[] PROGMEM = "Waehle Druck"; -const char * const MSG_PICK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PICK_Z_EN, - MSG_PICK_Z_CZ, - MSG_PICK_Z_EN, - MSG_PICK_Z_ES, - MSG_PICK_Z_PL, - MSG_PICK_Z_DE -}; - -const char MSG_PID_EXTRUDER_EN[] PROGMEM = "PID calibration"; -const char MSG_PID_EXTRUDER_CZ[] PROGMEM = "PID kalibrace"; -const char MSG_PID_EXTRUDER_IT[] PROGMEM = "Calibrazione PID"; -const char MSG_PID_EXTRUDER_ES[] PROGMEM = "Calibracion PID"; -const char MSG_PID_EXTRUDER_PL[] PROGMEM = "Kalibracja PID"; -const char MSG_PID_EXTRUDER_DE[] PROGMEM = "PID Kalibrierung"; -const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_EXTRUDER_EN, - MSG_PID_EXTRUDER_CZ, - MSG_PID_EXTRUDER_IT, - MSG_PID_EXTRUDER_ES, - MSG_PID_EXTRUDER_PL, - MSG_PID_EXTRUDER_DE -}; - -const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished "; -const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; -const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; -const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; -const char MSG_PID_FINISHED_PL[] PROGMEM = "Kal. PID zakonczona"; -const char MSG_PID_FINISHED_DE[] PROGMEM = "PID Kal. fertig "; -const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_FINISHED_EN, - MSG_PID_FINISHED_CZ, - MSG_PID_FINISHED_IT, - MSG_PID_FINISHED_ES, - MSG_PID_FINISHED_PL, - MSG_PID_FINISHED_DE -}; - -const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; -const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; -const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; -const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; -const char MSG_PID_RUNNING_PL[] PROGMEM = "Kal. PID"; -const char MSG_PID_RUNNING_DE[] PROGMEM = "PID Kal. "; -const char * const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_RUNNING_EN, - MSG_PID_RUNNING_CZ, - MSG_PID_RUNNING_IT, - MSG_PID_RUNNING_ES, - MSG_PID_RUNNING_PL, - MSG_PID_RUNNING_DE -}; - -const char MSG_PINDA_NOT_CALIBRATED_EN[] PROGMEM = "Temperature calibration has not been run yet"; -const char MSG_PINDA_NOT_CALIBRATED_CZ[] PROGMEM = "Tiskarna nebyla teplotne zkalibrovana"; -const char MSG_PINDA_NOT_CALIBRATED_IT[] PROGMEM = "Taratura della temperatura non ancora eseguita"; -const char MSG_PINDA_NOT_CALIBRATED_ES[] PROGMEM = "La temperatura de calibracion no ha sido ajustada"; -const char MSG_PINDA_NOT_CALIBRATED_PL[] PROGMEM = "Cieplna kalibracja nie byla przeprowadzona"; -const char MSG_PINDA_NOT_CALIBRATED_DE[] PROGMEM = "PINDA Temperatur Kalibrierung wurde noch nicht ausgefuehrt"; -const char * const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_NOT_CALIBRATED_EN, - MSG_PINDA_NOT_CALIBRATED_CZ, - MSG_PINDA_NOT_CALIBRATED_IT, - MSG_PINDA_NOT_CALIBRATED_ES, - MSG_PINDA_NOT_CALIBRATED_PL, - MSG_PINDA_NOT_CALIBRATED_DE -}; - -const char MSG_PINDA_PREHEAT_EN[] PROGMEM = "PINDA Heating"; -const char MSG_PINDA_PREHEAT_CZ[] PROGMEM = "Nahrivani PINDA"; -const char MSG_PINDA_PREHEAT_IT[] PROGMEM = "Riscald. PINDA"; -const char MSG_PINDA_PREHEAT_ES[] PROGMEM = "Calentando PINDA"; -const char MSG_PINDA_PREHEAT_PL[] PROGMEM = "Grzanie PINDA"; -const char MSG_PINDA_PREHEAT_DE[] PROGMEM = "PINDA erwaermen"; -const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_PREHEAT_EN, - MSG_PINDA_PREHEAT_CZ, - MSG_PINDA_PREHEAT_IT, - MSG_PINDA_PREHEAT_ES, - MSG_PINDA_PREHEAT_PL, - MSG_PINDA_PREHEAT_DE -}; - -const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; -const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { - MSG_PLANNER_BUFFER_BYTES_EN -}; - -const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; -const char MSG_PLEASE_WAIT_CZ[] PROGMEM = "Prosim cekejte"; -const char MSG_PLEASE_WAIT_IT[] PROGMEM = "Aspetta"; -const char MSG_PLEASE_WAIT_ES[] PROGMEM = "Por Favor Esperar"; -const char MSG_PLEASE_WAIT_PL[] PROGMEM = "Prosze czekac"; -const char MSG_PLEASE_WAIT_DE[] PROGMEM = "Bitte warten"; -const char * const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PLEASE_WAIT_EN, - MSG_PLEASE_WAIT_CZ, - MSG_PLEASE_WAIT_IT, - MSG_PLEASE_WAIT_ES, - MSG_PLEASE_WAIT_PL, - MSG_PLEASE_WAIT_DE -}; - -const char MSG_POSITION_UNKNOWN_EN[] PROGMEM = "Home X/Y before Z"; -const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[1] PROGMEM = { - MSG_POSITION_UNKNOWN_EN -}; - -const char MSG_POWERUP_EN[] PROGMEM = "PowerUp"; -const char * const MSG_POWERUP_LANG_TABLE[1] PROGMEM = { - MSG_POWERUP_EN -}; - -const char MSG_PREHEAT_EN[] PROGMEM = "Preheat"; -const char MSG_PREHEAT_CZ[] PROGMEM = "Predehrev"; -const char MSG_PREHEAT_IT[] PROGMEM = "Preriscalda"; -const char MSG_PREHEAT_ES[] PROGMEM = "Precalentar"; -const char MSG_PREHEAT_PL[] PROGMEM = "Grzanie"; -const char MSG_PREHEAT_DE[] PROGMEM = "Vorwaermen"; -const char * const MSG_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_EN, - MSG_PREHEAT_CZ, - MSG_PREHEAT_IT, - MSG_PREHEAT_ES, - MSG_PREHEAT_PL, - MSG_PREHEAT_DE -}; - -const char MSG_PREHEAT_NOZZLE_EN[] PROGMEM = "Preheat the nozzle!"; -const char MSG_PREHEAT_NOZZLE_CZ[] PROGMEM = "Predehrejte trysku!"; -const char MSG_PREHEAT_NOZZLE_IT[] PROGMEM = "Preris. ugello!"; -const char MSG_PREHEAT_NOZZLE_ES[] PROGMEM = "Precalentar extrusor"; -const char MSG_PREHEAT_NOZZLE_PL[] PROGMEM = "Nagrzej dysze!"; -const char MSG_PREHEAT_NOZZLE_DE[] PROGMEM = "Duese vorwaermen!"; -const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_NOZZLE_EN, - MSG_PREHEAT_NOZZLE_CZ, - MSG_PREHEAT_NOZZLE_IT, - MSG_PREHEAT_NOZZLE_ES, - MSG_PREHEAT_NOZZLE_PL, - MSG_PREHEAT_NOZZLE_DE -}; - -const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; -const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; -const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; -const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; -const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; -const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filam. bereithalten"; -const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREPARE_FILAMENT_EN, - MSG_PREPARE_FILAMENT_CZ, - MSG_PREPARE_FILAMENT_IT, - MSG_PREPARE_FILAMENT_ES, - MSG_PREPARE_FILAMENT_PL, - MSG_PREPARE_FILAMENT_DE -}; - -const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; -const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; -const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; -const char MSG_PRESS_ES[] PROGMEM = "Pulsar el mando"; -const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; -const char MSG_PRESS_DE[] PROGMEM = "und Knopf druecken"; -const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRESS_EN, - MSG_PRESS_CZ, - MSG_PRESS_IT, - MSG_PRESS_ES, - MSG_PRESS_PL, - MSG_PRESS_DE -}; - -const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; -const char MSG_PRINTER_DISCONNECTED_DE[] PROGMEM = "Drucker getrent"; -const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINTER_DISCONNECTED_EN, - MSG_PRINTER_DISCONNECTED_EN, - MSG_PRINTER_DISCONNECTED_EN, - MSG_PRINTER_DISCONNECTED_EN, - MSG_PRINTER_DISCONNECTED_EN, - MSG_PRINTER_DISCONNECTED_DE -}; - -const char MSG_PRINT_ABORTED_EN[] PROGMEM = "Print aborted"; -const char MSG_PRINT_ABORTED_CZ[] PROGMEM = "Tisk prerusen"; -const char MSG_PRINT_ABORTED_IT[] PROGMEM = "Stampa abortita"; -const char MSG_PRINT_ABORTED_ES[] PROGMEM = "Impresion cancelada"; -const char MSG_PRINT_ABORTED_PL[] PROGMEM = "Druk przerwany"; -const char MSG_PRINT_ABORTED_DE[] PROGMEM = "Druck abgebrochen"; -const char * const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_ABORTED_EN, - MSG_PRINT_ABORTED_CZ, - MSG_PRINT_ABORTED_IT, - MSG_PRINT_ABORTED_ES, - MSG_PRINT_ABORTED_PL, - MSG_PRINT_ABORTED_DE -}; - -const char MSG_PRINT_PAUSED_EN[] PROGMEM = "Print paused"; -const char MSG_PRINT_PAUSED_CZ[] PROGMEM = "Tisk pozastaven"; -const char MSG_PRINT_PAUSED_IT[] PROGMEM = "Stampa in pausa"; -const char MSG_PRINT_PAUSED_ES[] PROGMEM = "Impresion en pausa"; -const char MSG_PRINT_PAUSED_PL[] PROGMEM = "Druk zatrzymany"; -const char MSG_PRINT_PAUSED_DE[] PROGMEM = "Druck pausiert"; -const char * const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_PAUSED_EN, - MSG_PRINT_PAUSED_CZ, - MSG_PRINT_PAUSED_IT, - MSG_PRINT_PAUSED_ES, - MSG_PRINT_PAUSED_PL, - MSG_PRINT_PAUSED_DE -}; - -const char MSG_PRUSA3D_EN[] PROGMEM = "prusa3d.com"; -const char MSG_PRUSA3D_CZ[] PROGMEM = "prusa3d.cz"; -const char MSG_PRUSA3D_PL[] PROGMEM = "prusa3d.cz"; -const char * const MSG_PRUSA3D_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_EN, - MSG_PRUSA3D_CZ, - MSG_PRUSA3D_EN, - MSG_PRUSA3D_EN, - MSG_PRUSA3D_PL, - MSG_PRUSA3D_EN -}; - -const char MSG_PRUSA3D_FORUM_EN[] PROGMEM = "forum.prusa3d.com"; -const char MSG_PRUSA3D_FORUM_CZ[] PROGMEM = "forum.prusa3d.cz"; -const char MSG_PRUSA3D_FORUM_PL[] PROGMEM = "forum.prusa3d.cz"; -const char * const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_CZ, - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_EN, - MSG_PRUSA3D_FORUM_PL, - MSG_PRUSA3D_FORUM_EN -}; - -const char MSG_PRUSA3D_HOWTO_EN[] PROGMEM = "howto.prusa3d.com"; -const char MSG_PRUSA3D_HOWTO_CZ[] PROGMEM = "howto.prusa3d.cz"; -const char MSG_PRUSA3D_HOWTO_PL[] PROGMEM = "howto.prusa3d.cz"; -const char * const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_CZ, - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_EN, - MSG_PRUSA3D_HOWTO_PL, - MSG_PRUSA3D_HOWTO_EN -}; - -const char MSG_REBOOT_EN[] PROGMEM = "Reboot the printer"; -const char MSG_REBOOT_CZ[] PROGMEM = "Restartujte tiskarnu"; -const char MSG_REBOOT_IT[] PROGMEM = "Riavvia stampante"; -const char MSG_REBOOT_ES[] PROGMEM = "Reiniciar impresora"; -const char MSG_REBOOT_PL[] PROGMEM = "Restart drukarki"; -const char MSG_REBOOT_DE[] PROGMEM = "Reboot den Drucker"; -const char * const MSG_REBOOT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_REBOOT_EN, - MSG_REBOOT_CZ, - MSG_REBOOT_IT, - MSG_REBOOT_ES, - MSG_REBOOT_PL, - MSG_REBOOT_DE -}; - -const char MSG_RECTRACT_EN[] PROGMEM = "Rectract"; -const char * const MSG_RECTRACT_LANG_TABLE[1] PROGMEM = { - MSG_RECTRACT_EN -}; - -const char MSG_REFRESH_EN[] PROGMEM = "\xF8" "Refresh"; -const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { - MSG_REFRESH_EN -}; - -const char MSG_RESEND_EN[] PROGMEM = "Resend: "; -const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { - MSG_RESEND_EN -}; - -const char MSG_RESET_CALIBRATE_E_EN[] PROGMEM = "Reset E Cal."; -const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[1] PROGMEM = { - MSG_RESET_CALIBRATE_E_EN -}; - -const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; -const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { - MSG_RESTORE_FAILSAFE_EN -}; - -const char MSG_RESUME_PRINT_EN[] PROGMEM = "Resume print"; -const char MSG_RESUME_PRINT_CZ[] PROGMEM = "Pokracovat"; -const char MSG_RESUME_PRINT_IT[] PROGMEM = "Riprendi stampa"; -const char MSG_RESUME_PRINT_ES[] PROGMEM = "Reanudar impres."; -const char MSG_RESUME_PRINT_PL[] PROGMEM = "Kontynuowac"; -const char MSG_RESUME_PRINT_DE[] PROGMEM = "Fortsetzen"; -const char * const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUME_PRINT_EN, - MSG_RESUME_PRINT_CZ, - MSG_RESUME_PRINT_IT, - MSG_RESUME_PRINT_ES, - MSG_RESUME_PRINT_PL, - MSG_RESUME_PRINT_DE -}; - -const char MSG_RESUMING_EN[] PROGMEM = "Resuming print"; -const char MSG_RESUMING_CZ[] PROGMEM = "Obnoveni tisku"; -const char MSG_RESUMING_IT[] PROGMEM = "Riprendi stampa"; -const char MSG_RESUMING_ES[] PROGMEM = "Resumiendo impresion"; -const char MSG_RESUMING_PL[] PROGMEM = "Wznowienie druku"; -const char MSG_RESUMING_DE[] PROGMEM = "Druck fortgesetzt"; -const char * const MSG_RESUMING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_EN, - MSG_RESUMING_CZ, - MSG_RESUMING_IT, - MSG_RESUMING_ES, - MSG_RESUMING_PL, - MSG_RESUMING_DE -}; - -const char MSG_RESUMING_PRINT_EN[] PROGMEM = "Resuming print"; -const char MSG_RESUMING_PRINT_CZ[] PROGMEM = "Obnovovani tisku"; -const char MSG_RESUMING_PRINT_IT[] PROGMEM = "Stampa in ripresa"; -const char MSG_RESUMING_PRINT_ES[] PROGMEM = "Reanudar impresion"; -const char MSG_RESUMING_PRINT_PL[] PROGMEM = "Wznawianie druku"; -const char MSG_RESUMING_PRINT_DE[] PROGMEM = "Druck fortsetzen"; -const char * const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_PRINT_EN, - MSG_RESUMING_PRINT_CZ, - MSG_RESUMING_PRINT_IT, - MSG_RESUMING_PRINT_ES, - MSG_RESUMING_PRINT_PL, - MSG_RESUMING_PRINT_DE -}; - -const char MSG_RIGHT_EN[] PROGMEM = "Right:"; -const char MSG_RIGHT_CZ[] PROGMEM = "Pravy:"; -const char MSG_RIGHT_IT[] PROGMEM = "Destra:"; -const char MSG_RIGHT_ES[] PROGMEM = "Derecha:"; -const char MSG_RIGHT_PL[] PROGMEM = "Prawy:"; -const char MSG_RIGHT_DE[] PROGMEM = "Rechts:"; -const char * const MSG_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RIGHT_EN, - MSG_RIGHT_CZ, - MSG_RIGHT_IT, - MSG_RIGHT_ES, - MSG_RIGHT_PL, - MSG_RIGHT_DE -}; - -const char MSG_SD_CANT_ENTER_SUBDIR_EN[] PROGMEM = "Cannot enter subdir: "; -const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1] PROGMEM = { - MSG_SD_CANT_ENTER_SUBDIR_EN -}; - -const char MSG_SD_CANT_OPEN_SUBDIR_EN[] PROGMEM = "Cannot open subdir"; -const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1] PROGMEM = { - MSG_SD_CANT_OPEN_SUBDIR_EN -}; - -const char MSG_SD_CARD_OK_EN[] PROGMEM = "SD card ok"; -const char * const MSG_SD_CARD_OK_LANG_TABLE[1] PROGMEM = { - MSG_SD_CARD_OK_EN -}; - -const char MSG_SD_ERR_WRITE_TO_FILE_EN[] PROGMEM = "error writing to file"; -const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { - MSG_SD_ERR_WRITE_TO_FILE_EN -}; - -const char MSG_SD_FILE_OPENED_EN[] PROGMEM = "File opened: "; -const char * const MSG_SD_FILE_OPENED_LANG_TABLE[1] PROGMEM = { - MSG_SD_FILE_OPENED_EN -}; - -const char MSG_SD_FILE_SELECTED_EN[] PROGMEM = "File selected"; -const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[1] PROGMEM = { - MSG_SD_FILE_SELECTED_EN -}; - -const char MSG_SD_INIT_FAIL_EN[] PROGMEM = "SD init fail"; -const char * const MSG_SD_INIT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_INIT_FAIL_EN -}; - -const char MSG_SD_INSERTED_EN[] PROGMEM = "Card inserted"; -const char MSG_SD_INSERTED_CZ[] PROGMEM = "Karta vlozena"; -const char MSG_SD_INSERTED_IT[] PROGMEM = "SD inserita"; -const char MSG_SD_INSERTED_ES[] PROGMEM = "Tarjeta insertada"; -const char MSG_SD_INSERTED_PL[] PROGMEM = "Karta wlozona"; -const char MSG_SD_INSERTED_DE[] PROGMEM = "SD eingesetzt"; -const char * const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_INSERTED_EN, - MSG_SD_INSERTED_CZ, - MSG_SD_INSERTED_IT, - MSG_SD_INSERTED_ES, - MSG_SD_INSERTED_PL, - MSG_SD_INSERTED_DE -}; - -const char MSG_SD_NOT_PRINTING_EN[] PROGMEM = "Not SD printing"; -const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[1] PROGMEM = { - MSG_SD_NOT_PRINTING_EN -}; - -const char MSG_SD_OPENROOT_FAIL_EN[] PROGMEM = "openRoot failed"; -const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_OPENROOT_FAIL_EN -}; - -const char MSG_SD_OPEN_FILE_FAIL_EN[] PROGMEM = "open failed, File: "; -const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_OPEN_FILE_FAIL_EN -}; - -const char MSG_SD_PRINTING_BYTE_EN[] PROGMEM = "SD printing byte "; -const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[1] PROGMEM = { - MSG_SD_PRINTING_BYTE_EN -}; - -const char MSG_SD_REMOVED_EN[] PROGMEM = "Card removed"; -const char MSG_SD_REMOVED_CZ[] PROGMEM = "Karta vyjmuta"; -const char MSG_SD_REMOVED_IT[] PROGMEM = "SD rimossa"; -const char MSG_SD_REMOVED_ES[] PROGMEM = "Tarjeta retirada"; -const char MSG_SD_REMOVED_PL[] PROGMEM = "Karta wyjeta"; -const char MSG_SD_REMOVED_DE[] PROGMEM = "SD entfernt "; -const char * const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_REMOVED_EN, - MSG_SD_REMOVED_CZ, - MSG_SD_REMOVED_IT, - MSG_SD_REMOVED_ES, - MSG_SD_REMOVED_PL, - MSG_SD_REMOVED_DE -}; - -const char MSG_SD_SIZE_EN[] PROGMEM = " Size: "; -const char * const MSG_SD_SIZE_LANG_TABLE[1] PROGMEM = { - MSG_SD_SIZE_EN -}; - -const char MSG_SD_VOL_INIT_FAIL_EN[] PROGMEM = "volume.init failed"; -const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_VOL_INIT_FAIL_EN -}; - -const char MSG_SD_WORKDIR_FAIL_EN[] PROGMEM = "workDir open failed"; -const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1] PROGMEM = { - MSG_SD_WORKDIR_FAIL_EN -}; - -const char MSG_SD_WRITE_TO_FILE_EN[] PROGMEM = "Writing to file: "; -const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { - MSG_SD_WRITE_TO_FILE_EN -}; - -const char MSG_SELFTEST_EN[] PROGMEM = "Selftest "; -const char MSG_SELFTEST_IT[] PROGMEM = "Autotest"; -const char MSG_SELFTEST_ES[] PROGMEM = "Autotest"; -const char MSG_SELFTEST_DE[] PROGMEM = "Selbsttest "; -const char * const MSG_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EN, - MSG_SELFTEST_EN, - MSG_SELFTEST_IT, - MSG_SELFTEST_ES, - MSG_SELFTEST_EN, - MSG_SELFTEST_DE -}; - -const char MSG_SELFTEST_BEDHEATER_EN[] PROGMEM = "Bed / Heater"; -const char MSG_SELFTEST_BEDHEATER_IT[] PROGMEM = "Letto/Riscald."; -const char MSG_SELFTEST_BEDHEATER_ES[] PROGMEM = "Cama/Calentador"; -const char * const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_IT, - MSG_SELFTEST_BEDHEATER_ES, - MSG_SELFTEST_BEDHEATER_EN, - MSG_SELFTEST_BEDHEATER_EN -}; - -const char MSG_SELFTEST_CHECK_ALLCORRECT_EN[] PROGMEM = "All correct "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_CZ[] PROGMEM = "Vse OK "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_IT[] PROGMEM = "Nessun errore"; -const char MSG_SELFTEST_CHECK_ALLCORRECT_ES[] PROGMEM = "Todo bie "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_PL[] PROGMEM = "Wszystko OK "; -const char MSG_SELFTEST_CHECK_ALLCORRECT_DE[] PROGMEM = "Alles richtig "; -const char * const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ALLCORRECT_EN, - MSG_SELFTEST_CHECK_ALLCORRECT_CZ, - MSG_SELFTEST_CHECK_ALLCORRECT_IT, - MSG_SELFTEST_CHECK_ALLCORRECT_ES, - MSG_SELFTEST_CHECK_ALLCORRECT_PL, - MSG_SELFTEST_CHECK_ALLCORRECT_DE -}; - -const char MSG_SELFTEST_CHECK_BED_EN[] PROGMEM = "Checking bed "; -const char MSG_SELFTEST_CHECK_BED_CZ[] PROGMEM = "Kontrola bed "; -const char MSG_SELFTEST_CHECK_BED_IT[] PROGMEM = "Verifica letto"; -const char MSG_SELFTEST_CHECK_BED_ES[] PROGMEM = "Control de cama"; -const char MSG_SELFTEST_CHECK_BED_PL[] PROGMEM = "Kontrola bed "; -const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pruefe Bett "; -const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_BED_EN, - MSG_SELFTEST_CHECK_BED_CZ, - MSG_SELFTEST_CHECK_BED_IT, - MSG_SELFTEST_CHECK_BED_ES, - MSG_SELFTEST_CHECK_BED_PL, - MSG_SELFTEST_CHECK_BED_DE -}; - -const char MSG_SELFTEST_CHECK_ENDSTOPS_EN[] PROGMEM = "Checking endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; -const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ENDSTOPS_EN, - MSG_SELFTEST_CHECK_ENDSTOPS_CZ, - MSG_SELFTEST_CHECK_ENDSTOPS_IT, - MSG_SELFTEST_CHECK_ENDSTOPS_ES, - MSG_SELFTEST_CHECK_ENDSTOPS_PL, - MSG_SELFTEST_CHECK_ENDSTOPS_DE -}; - -const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_IT[] PROGMEM = "Verifica ugello"; -const char MSG_SELFTEST_CHECK_HOTEND_ES[] PROGMEM = "Control hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_PL[] PROGMEM = "Kontrola hotend "; -const char MSG_SELFTEST_CHECK_HOTEND_DE[] PROGMEM = "Pruefe Hotend"; -const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_HOTEND_EN, - MSG_SELFTEST_CHECK_HOTEND_CZ, - MSG_SELFTEST_CHECK_HOTEND_IT, - MSG_SELFTEST_CHECK_HOTEND_ES, - MSG_SELFTEST_CHECK_HOTEND_PL, - MSG_SELFTEST_CHECK_HOTEND_DE -}; - -const char MSG_SELFTEST_CHECK_X_EN[] PROGMEM = "Checking X axis "; -const char MSG_SELFTEST_CHECK_X_CZ[] PROGMEM = "Kontrola X axis "; -const char MSG_SELFTEST_CHECK_X_IT[] PROGMEM = "Verifica asse X"; -const char MSG_SELFTEST_CHECK_X_ES[] PROGMEM = "Control del eje X"; -const char MSG_SELFTEST_CHECK_X_PL[] PROGMEM = "Kontrola X axis "; -const char MSG_SELFTEST_CHECK_X_DE[] PROGMEM = "Pruefe X Achse "; -const char * const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_X_EN, - MSG_SELFTEST_CHECK_X_CZ, - MSG_SELFTEST_CHECK_X_IT, - MSG_SELFTEST_CHECK_X_ES, - MSG_SELFTEST_CHECK_X_PL, - MSG_SELFTEST_CHECK_X_DE -}; - -const char MSG_SELFTEST_CHECK_Y_EN[] PROGMEM = "Checking Y axis "; -const char MSG_SELFTEST_CHECK_Y_CZ[] PROGMEM = "Kontrola Y axis "; -const char MSG_SELFTEST_CHECK_Y_IT[] PROGMEM = "Verifica asse Y"; -const char MSG_SELFTEST_CHECK_Y_ES[] PROGMEM = "Control del eje Y"; -const char MSG_SELFTEST_CHECK_Y_PL[] PROGMEM = "Kontrola Y axis "; -const char MSG_SELFTEST_CHECK_Y_DE[] PROGMEM = "Pruefe Y Achse "; -const char * const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Y_EN, - MSG_SELFTEST_CHECK_Y_CZ, - MSG_SELFTEST_CHECK_Y_IT, - MSG_SELFTEST_CHECK_Y_ES, - MSG_SELFTEST_CHECK_Y_PL, - MSG_SELFTEST_CHECK_Y_DE -}; - -const char MSG_SELFTEST_CHECK_Z_EN[] PROGMEM = "Checking Z axis "; -const char MSG_SELFTEST_CHECK_Z_CZ[] PROGMEM = "Kontrola Z axis "; -const char MSG_SELFTEST_CHECK_Z_IT[] PROGMEM = "Verifica asse Z"; -const char MSG_SELFTEST_CHECK_Z_ES[] PROGMEM = "Control del eje Z"; -const char MSG_SELFTEST_CHECK_Z_PL[] PROGMEM = "Kontrola Z axis "; -const char MSG_SELFTEST_CHECK_Z_DE[] PROGMEM = "Pruefe Z Achse "; -const char * const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Z_EN, - MSG_SELFTEST_CHECK_Z_CZ, - MSG_SELFTEST_CHECK_Z_IT, - MSG_SELFTEST_CHECK_Z_ES, - MSG_SELFTEST_CHECK_Z_PL, - MSG_SELFTEST_CHECK_Z_DE -}; - -const char MSG_SELFTEST_COOLING_FAN_EN[] PROGMEM = "Front print fan?";; -const char MSG_SELFTEST_COOLING_FAN_CZ[] PROGMEM = "Predni tiskovy vent?";; -const char MSG_SELFTEST_COOLING_FAN_IT[] PROGMEM = "Vent di stampa ant.?";; -const char MSG_SELFTEST_COOLING_FAN_ES[] PROGMEM = "Vent. al frente?";; -const char MSG_SELFTEST_COOLING_FAN_PL[] PROGMEM = "Przodni went. druku?";; -const char MSG_SELFTEST_COOLING_FAN_DE[] PROGMEM = "Vorderer Luefter?";; -const char * const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_COOLING_FAN_EN, - MSG_SELFTEST_COOLING_FAN_CZ, - MSG_SELFTEST_COOLING_FAN_IT, - MSG_SELFTEST_COOLING_FAN_ES, - MSG_SELFTEST_COOLING_FAN_PL, - MSG_SELFTEST_COOLING_FAN_DE -}; - -const char MSG_SELFTEST_ENDSTOP_EN[] PROGMEM = "Endstop"; -const char MSG_SELFTEST_ENDSTOP_IT[] PROGMEM = "Finecorsa"; -const char MSG_SELFTEST_ENDSTOP_ES[] PROGMEM = "Tope final"; -const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_IT, - MSG_SELFTEST_ENDSTOP_ES, - MSG_SELFTEST_ENDSTOP_EN, - MSG_SELFTEST_ENDSTOP_EN -}; - -const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; -const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; -const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; -const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; -const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_IT, - MSG_SELFTEST_ENDSTOPS_ES, - MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_DE -}; - -const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Endsch. n. erreicht"; -const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_IT, - MSG_SELFTEST_ENDSTOP_NOTHIT_ES, - MSG_SELFTEST_ENDSTOP_NOTHIT_EN, - MSG_SELFTEST_ENDSTOP_NOTHIT_DE -}; - -const char MSG_SELFTEST_ERROR_EN[] PROGMEM = "Selftest error !"; -const char MSG_SELFTEST_ERROR_IT[] PROGMEM = "Autotest negativo"; -const char MSG_SELFTEST_ERROR_ES[] PROGMEM = "Autotest error!"; -const char MSG_SELFTEST_ERROR_DE[] PROGMEM = "Selbsttest Fehler !"; -const char * const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_IT, - MSG_SELFTEST_ERROR_ES, - MSG_SELFTEST_ERROR_EN, - MSG_SELFTEST_ERROR_DE -}; - -const char MSG_SELFTEST_EXTRUDER_FAN_EN[] PROGMEM = "Left hotend fan?";; -const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; -const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; -const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; -const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; -const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?";; -const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EXTRUDER_FAN_EN, - MSG_SELFTEST_EXTRUDER_FAN_CZ, - MSG_SELFTEST_EXTRUDER_FAN_IT, - MSG_SELFTEST_EXTRUDER_FAN_ES, - MSG_SELFTEST_EXTRUDER_FAN_PL, - MSG_SELFTEST_EXTRUDER_FAN_DE -}; - -const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed "; -const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal "; -const char MSG_SELFTEST_FAILED_IT[] PROGMEM = "Autotest fallito"; -const char MSG_SELFTEST_FAILED_ES[] PROGMEM = "Autotest fallado"; -const char MSG_SELFTEST_FAILED_PL[] PROGMEM = "Selftest nieudany"; -const char MSG_SELFTEST_FAILED_DE[] PROGMEM = "Selbsttest misluekt"; -const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAILED_EN, - MSG_SELFTEST_FAILED_CZ, - MSG_SELFTEST_FAILED_IT, - MSG_SELFTEST_FAILED_ES, - MSG_SELFTEST_FAILED_PL, - MSG_SELFTEST_FAILED_DE -}; - -const char MSG_SELFTEST_FAN_EN[] PROGMEM = "Fan test";; -const char MSG_SELFTEST_FAN_CZ[] PROGMEM = "Test ventilatoru";; -const char MSG_SELFTEST_FAN_IT[] PROGMEM = "Prova del ventilator";; -const char MSG_SELFTEST_FAN_ES[] PROGMEM = "Test del ventilador";; -const char MSG_SELFTEST_FAN_PL[] PROGMEM = "Test wentylatora";; -const char MSG_SELFTEST_FAN_DE[] PROGMEM = "Lueftertest";; -const char * const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_EN, - MSG_SELFTEST_FAN_CZ, - MSG_SELFTEST_FAN_IT, - MSG_SELFTEST_FAN_ES, - MSG_SELFTEST_FAN_PL, - MSG_SELFTEST_FAN_DE -}; - -const char MSG_SELFTEST_FAN_NO_EN[] PROGMEM = "Not spinning";; -const char MSG_SELFTEST_FAN_NO_CZ[] PROGMEM = "Netoci se";; -const char MSG_SELFTEST_FAN_NO_IT[] PROGMEM = "Non si gira";; -const char MSG_SELFTEST_FAN_NO_ES[] PROGMEM = "Ventilador no gira";; -const char MSG_SELFTEST_FAN_NO_PL[] PROGMEM = "Nekreci sie";; -const char MSG_SELFTEST_FAN_NO_DE[] PROGMEM = "Dreht nicht";; -const char * const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_NO_EN, - MSG_SELFTEST_FAN_NO_CZ, - MSG_SELFTEST_FAN_NO_IT, - MSG_SELFTEST_FAN_NO_ES, - MSG_SELFTEST_FAN_NO_PL, - MSG_SELFTEST_FAN_NO_DE -}; - -const char MSG_SELFTEST_FAN_YES_EN[] PROGMEM = "Spinning";; -const char MSG_SELFTEST_FAN_YES_CZ[] PROGMEM = "Toci se";; -const char MSG_SELFTEST_FAN_YES_IT[] PROGMEM = "Gira";; -const char MSG_SELFTEST_FAN_YES_ES[] PROGMEM = "Ventilador gira";; -const char MSG_SELFTEST_FAN_YES_PL[] PROGMEM = "Kreci sie";; -const char MSG_SELFTEST_FAN_YES_DE[] PROGMEM = "Dreht";; -const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_YES_EN, - MSG_SELFTEST_FAN_YES_CZ, - MSG_SELFTEST_FAN_YES_IT, - MSG_SELFTEST_FAN_YES_ES, - MSG_SELFTEST_FAN_YES_PL, - MSG_SELFTEST_FAN_YES_DE -}; - -const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor"; -const char MSG_SELFTEST_HEATERTHERMISTOR_IT[] PROGMEM = "Riscald./Termist."; -const char MSG_SELFTEST_HEATERTHERMISTOR_ES[] PROGMEM = "Calent./Termistor"; -const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_IT, - MSG_SELFTEST_HEATERTHERMISTOR_ES, - MSG_SELFTEST_HEATERTHERMISTOR_EN, - MSG_SELFTEST_HEATERTHERMISTOR_EN -}; - -const char MSG_SELFTEST_MOTOR_EN[] PROGMEM = "Motor"; -const char MSG_SELFTEST_MOTOR_IT[] PROGMEM = "Motore"; -const char MSG_SELFTEST_MOTOR_PL[] PROGMEM = "Silnik"; -const char * const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_IT, - MSG_SELFTEST_MOTOR_EN, - MSG_SELFTEST_MOTOR_PL, - MSG_SELFTEST_MOTOR_EN -}; - -const char MSG_SELFTEST_NOTCONNECTED_EN[] PROGMEM = "Not connected"; -const char MSG_SELFTEST_NOTCONNECTED_CZ[] PROGMEM = "Nezapojeno "; -const char MSG_SELFTEST_NOTCONNECTED_IT[] PROGMEM = "Non connesso"; -const char MSG_SELFTEST_NOTCONNECTED_ES[] PROGMEM = "No hay conexion "; -const char MSG_SELFTEST_NOTCONNECTED_PL[] PROGMEM = "Nie podlaczono "; -const char MSG_SELFTEST_NOTCONNECTED_DE[] PROGMEM = "Nicht angeschlossen"; -const char * const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_NOTCONNECTED_EN, - MSG_SELFTEST_NOTCONNECTED_CZ, - MSG_SELFTEST_NOTCONNECTED_IT, - MSG_SELFTEST_NOTCONNECTED_ES, - MSG_SELFTEST_NOTCONNECTED_PL, - MSG_SELFTEST_NOTCONNECTED_DE -}; - -const char MSG_SELFTEST_OK_EN[] PROGMEM = "Self test OK"; -const char MSG_SELFTEST_OK_IT[] PROGMEM = "Autotest OK"; -const char MSG_SELFTEST_OK_DE[] PROGMEM = "Selbsttest OK"; -const char * const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_IT, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_EN, - MSG_SELFTEST_OK_DE -}; - -const char MSG_SELFTEST_PLEASECHECK_EN[] PROGMEM = "Please check :"; -const char MSG_SELFTEST_PLEASECHECK_CZ[] PROGMEM = "Zkontrolujte :"; -const char MSG_SELFTEST_PLEASECHECK_IT[] PROGMEM = "Verificare:"; -const char MSG_SELFTEST_PLEASECHECK_ES[] PROGMEM = "Controla :"; -const char MSG_SELFTEST_PLEASECHECK_PL[] PROGMEM = "Skontroluj :"; -const char MSG_SELFTEST_PLEASECHECK_DE[] PROGMEM = "Bitte pruefe:"; -const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_PLEASECHECK_EN, - MSG_SELFTEST_PLEASECHECK_CZ, - MSG_SELFTEST_PLEASECHECK_IT, - MSG_SELFTEST_PLEASECHECK_ES, - MSG_SELFTEST_PLEASECHECK_PL, - MSG_SELFTEST_PLEASECHECK_DE -}; - -const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start "; -const char MSG_SELFTEST_START_IT[] PROGMEM = "Avvia autotest"; -const char MSG_SELFTEST_START_ES[] PROGMEM = "Autotest salida"; -const char MSG_SELFTEST_START_DE[] PROGMEM = "Selbsttest start "; -const char * const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_IT, - MSG_SELFTEST_START_ES, - MSG_SELFTEST_START_EN, - MSG_SELFTEST_START_DE -}; - -const char MSG_SELFTEST_WIRINGERROR_EN[] PROGMEM = "Wiring error"; -const char MSG_SELFTEST_WIRINGERROR_CZ[] PROGMEM = "Chyba zapojeni"; -const char MSG_SELFTEST_WIRINGERROR_IT[] PROGMEM = "Errore cablaggio"; -const char MSG_SELFTEST_WIRINGERROR_ES[] PROGMEM = "Error de conexion"; -const char MSG_SELFTEST_WIRINGERROR_PL[] PROGMEM = "Blad polaczenia"; -const char MSG_SELFTEST_WIRINGERROR_DE[] PROGMEM = "Verdrahtungsfehler"; -const char * const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_WIRINGERROR_EN, - MSG_SELFTEST_WIRINGERROR_CZ, - MSG_SELFTEST_WIRINGERROR_IT, - MSG_SELFTEST_WIRINGERROR_ES, - MSG_SELFTEST_WIRINGERROR_PL, - MSG_SELFTEST_WIRINGERROR_DE -}; - -const char MSG_SERIAL_ERROR_MENU_STRUCTURE_EN[] PROGMEM = "Error in menu structure"; -const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1] PROGMEM = { - MSG_SERIAL_ERROR_MENU_STRUCTURE_EN -}; - -const char MSG_SETTINGS_EN[] PROGMEM = "Settings"; -const char MSG_SETTINGS_CZ[] PROGMEM = "Nastaveni"; -const char MSG_SETTINGS_IT[] PROGMEM = "Impostazioni"; -const char MSG_SETTINGS_ES[] PROGMEM = "Configuracion"; -const char MSG_SETTINGS_PL[] PROGMEM = "Ustawienia"; -const char MSG_SETTINGS_DE[] PROGMEM = "Einstellungen"; -const char * const MSG_SETTINGS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SETTINGS_EN, - MSG_SETTINGS_CZ, - MSG_SETTINGS_IT, - MSG_SETTINGS_ES, - MSG_SETTINGS_PL, - MSG_SETTINGS_DE -}; - -const char MSG_SET_HOME_OFFSETS_EN[] PROGMEM = "Set home offsets"; -const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[1] PROGMEM = { - MSG_SET_HOME_OFFSETS_EN -}; - -const char MSG_SET_ORIGIN_EN[] PROGMEM = "Set origin"; -const char * const MSG_SET_ORIGIN_LANG_TABLE[1] PROGMEM = { - MSG_SET_ORIGIN_EN -}; - -const char MSG_SET_TEMPERATURE_EN[] PROGMEM = "Set temperature:"; -const char MSG_SET_TEMPERATURE_CZ[] PROGMEM = "Nastavte teplotu:"; -const char MSG_SET_TEMPERATURE_IT[] PROGMEM = "Imposta temperatura"; -const char MSG_SET_TEMPERATURE_ES[] PROGMEM = "Establecer temp.:"; -const char MSG_SET_TEMPERATURE_PL[] PROGMEM = "Ustawic temperature"; -const char MSG_SET_TEMPERATURE_DE[] PROGMEM = "Temp.einstellen"; -const char * const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SET_TEMPERATURE_EN, - MSG_SET_TEMPERATURE_CZ, - MSG_SET_TEMPERATURE_IT, - MSG_SET_TEMPERATURE_ES, - MSG_SET_TEMPERATURE_PL, - MSG_SET_TEMPERATURE_DE -}; - -const char MSG_SEVERE_SKEW_EN[] PROGMEM = "Severe skew:"; -const char MSG_SEVERE_SKEW_CZ[] PROGMEM = "Tezke zkoseni:"; -const char MSG_SEVERE_SKEW_IT[] PROGMEM = "Inc. rilevante:"; -const char MSG_SEVERE_SKEW_ES[] PROGMEM = "Inclin. severa:"; -const char MSG_SEVERE_SKEW_PL[] PROGMEM = "Ostre sciecie:"; -const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwere Asym.:"; -const char * const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SEVERE_SKEW_EN, - MSG_SEVERE_SKEW_CZ, - MSG_SEVERE_SKEW_IT, - MSG_SEVERE_SKEW_ES, - MSG_SEVERE_SKEW_PL, - MSG_SEVERE_SKEW_DE -}; - -const char MSG_SHOW_END_STOPS_EN[] PROGMEM = "Show end stops"; -const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; -const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; -const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; -const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; -const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Anzeigen Enschalter"; -const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SHOW_END_STOPS_EN, - MSG_SHOW_END_STOPS_CZ, - MSG_SHOW_END_STOPS_IT, - MSG_SHOW_END_STOPS_ES, - MSG_SHOW_END_STOPS_PL, - MSG_SHOW_END_STOPS_DE -}; - -const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; -const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; -const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]"; -const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [rend.pleno]"; -const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; -const char MSG_SILENT_MODE_OFF_DE[] PROGMEM = "Mode [Hohe Leist]"; -const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_OFF_EN, - MSG_SILENT_MODE_OFF_CZ, - MSG_SILENT_MODE_OFF_IT, - MSG_SILENT_MODE_OFF_ES, - MSG_SILENT_MODE_OFF_PL, - MSG_SILENT_MODE_OFF_DE -}; - -const char MSG_SILENT_MODE_ON_EN[] PROGMEM = "Mode [silent]"; -const char MSG_SILENT_MODE_ON_CZ[] PROGMEM = "Mod [tichy]"; -const char MSG_SILENT_MODE_ON_IT[] PROGMEM = "Modo [silenzioso]"; -const char MSG_SILENT_MODE_ON_ES[] PROGMEM = "Modo [silencio]"; -const char MSG_SILENT_MODE_ON_PL[] PROGMEM = "Mod [cichy]"; -const char MSG_SILENT_MODE_ON_DE[] PROGMEM = "Mode [leise]"; -const char * const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_ON_EN, - MSG_SILENT_MODE_ON_CZ, - MSG_SILENT_MODE_ON_IT, - MSG_SILENT_MODE_ON_ES, - MSG_SILENT_MODE_ON_PL, - MSG_SILENT_MODE_ON_DE -}; - -const char MSG_SLIGHT_SKEW_EN[] PROGMEM = "Slight skew:"; -const char MSG_SLIGHT_SKEW_CZ[] PROGMEM = "Lehke zkoseni:"; -const char MSG_SLIGHT_SKEW_IT[] PROGMEM = "Incl. leggera:"; -const char MSG_SLIGHT_SKEW_ES[] PROGMEM = "Inclin. ligera:"; -const char MSG_SLIGHT_SKEW_PL[] PROGMEM = "Lekkie sciecie:"; -const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Geringe Asym.:"; -const char * const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SLIGHT_SKEW_EN, - MSG_SLIGHT_SKEW_CZ, - MSG_SLIGHT_SKEW_IT, - MSG_SLIGHT_SKEW_ES, - MSG_SLIGHT_SKEW_PL, - MSG_SLIGHT_SKEW_DE -}; - -const char MSG_SOFTWARE_RESET_EN[] PROGMEM = " Software Reset"; -const char * const MSG_SOFTWARE_RESET_LANG_TABLE[1] PROGMEM = { - MSG_SOFTWARE_RESET_EN -}; - -const char MSG_SORTING_EN[] PROGMEM = "Sorting files"; -const char MSG_SORTING_DE[] PROGMEM = "Sortiere Dateien"; -const char * const MSG_SORTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SORTING_EN, - MSG_SORTING_EN, - MSG_SORTING_EN, - MSG_SORTING_EN, - MSG_SORTING_EN, - MSG_SORTING_DE -}; - -const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort: [Alphabet]"; -const char * const MSG_SORT_ALPHA_LANG_TABLE[1] PROGMEM = { - MSG_SORT_ALPHA_EN -}; - -const char MSG_SORT_NONE_EN[] PROGMEM = "Sort: [None]"; -const char MSG_SORT_NONE_DE[] PROGMEM = "Sort: [Keine]"; -const char * const MSG_SORT_NONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SORT_NONE_EN, - MSG_SORT_NONE_EN, - MSG_SORT_NONE_EN, - MSG_SORT_NONE_EN, - MSG_SORT_NONE_EN, - MSG_SORT_NONE_DE -}; - -const char MSG_SORT_TIME_EN[] PROGMEM = "Sort: [Time]"; -const char MSG_SORT_TIME_DE[] PROGMEM = "Sort: [Zeit]"; -const char * const MSG_SORT_TIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SORT_TIME_EN, - MSG_SORT_TIME_EN, - MSG_SORT_TIME_EN, - MSG_SORT_TIME_EN, - MSG_SORT_TIME_EN, - MSG_SORT_TIME_DE -}; - -const char MSG_SPEED_EN[] PROGMEM = "Speed"; -const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; -const char MSG_SPEED_IT[] PROGMEM = "Velocita"; -const char MSG_SPEED_ES[] PROGMEM = "Velocidad"; -const char MSG_SPEED_PL[] PROGMEM = "Predkosc"; -const char MSG_SPEED_DE[] PROGMEM = "Geschwindigkeit"; -const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SPEED_EN, - MSG_SPEED_CZ, - MSG_SPEED_IT, - MSG_SPEED_ES, - MSG_SPEED_PL, - MSG_SPEED_DE -}; - -const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; -const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { - MSG_STACK_ERROR_EN -}; - -const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; -const char MSG_STATISTICS_CZ[] PROGMEM = "Statistika "; -const char MSG_STATISTICS_IT[] PROGMEM = "Statistiche"; -const char MSG_STATISTICS_ES[] PROGMEM = "Estadistica "; -const char MSG_STATISTICS_PL[] PROGMEM = "Statystyka "; -const char MSG_STATISTICS_DE[] PROGMEM = "Statistiken "; -const char * const MSG_STATISTICS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATISTICS_EN, - MSG_STATISTICS_CZ, - MSG_STATISTICS_IT, - MSG_STATISTICS_ES, - MSG_STATISTICS_PL, - MSG_STATISTICS_DE -}; - -const char MSG_STATS_FILAMENTUSED_EN[] PROGMEM = "Filament used: "; -const char MSG_STATS_FILAMENTUSED_CZ[] PROGMEM = "Filament : "; -const char MSG_STATS_FILAMENTUSED_IT[] PROGMEM = "Filamento usato:"; -const char MSG_STATS_FILAMENTUSED_ES[] PROGMEM = "Filamento : "; -const char MSG_STATS_FILAMENTUSED_PL[] PROGMEM = "Filament : "; -const char MSG_STATS_FILAMENTUSED_DE[] PROGMEM = "Filamentverbrauch:"; -const char * const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_FILAMENTUSED_EN, - MSG_STATS_FILAMENTUSED_CZ, - MSG_STATS_FILAMENTUSED_IT, - MSG_STATS_FILAMENTUSED_ES, - MSG_STATS_FILAMENTUSED_PL, - MSG_STATS_FILAMENTUSED_DE -}; - -const char MSG_STATS_PRINTTIME_EN[] PROGMEM = "Print time: "; -const char MSG_STATS_PRINTTIME_CZ[] PROGMEM = "Cas tisku : "; -const char MSG_STATS_PRINTTIME_IT[] PROGMEM = "Tempo di stampa:"; -const char MSG_STATS_PRINTTIME_ES[] PROGMEM = "Tiempo de imp.:"; -const char MSG_STATS_PRINTTIME_PL[] PROGMEM = "Czas druku : "; -const char MSG_STATS_PRINTTIME_DE[] PROGMEM = "Druckzeit: "; -const char * const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_PRINTTIME_EN, - MSG_STATS_PRINTTIME_CZ, - MSG_STATS_PRINTTIME_IT, - MSG_STATS_PRINTTIME_ES, - MSG_STATS_PRINTTIME_PL, - MSG_STATS_PRINTTIME_DE -}; - -const char MSG_STATS_TOTALFILAMENT_EN[] PROGMEM = "Total filament :"; -const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; -const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; -const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; -const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; -const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Filament Gesamt:"; -const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALFILAMENT_EN, - MSG_STATS_TOTALFILAMENT_CZ, - MSG_STATS_TOTALFILAMENT_IT, - MSG_STATS_TOTALFILAMENT_ES, - MSG_STATS_TOTALFILAMENT_PL, - MSG_STATS_TOTALFILAMENT_DE -}; - -const char MSG_STATS_TOTALPRINTTIME_EN[] PROGMEM = "Total print time :"; -const char MSG_STATS_TOTALPRINTTIME_CZ[] PROGMEM = "Celkovy cas :"; -const char MSG_STATS_TOTALPRINTTIME_IT[] PROGMEM = "Tempo stampa tot:"; -const char MSG_STATS_TOTALPRINTTIME_ES[] PROGMEM = "Tiempo total :"; -const char MSG_STATS_TOTALPRINTTIME_PL[] PROGMEM = "Czas calkowity :"; -const char MSG_STATS_TOTALPRINTTIME_DE[] PROGMEM = "Totale Druckzeit:"; -const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALPRINTTIME_EN, - MSG_STATS_TOTALPRINTTIME_CZ, - MSG_STATS_TOTALPRINTTIME_IT, - MSG_STATS_TOTALPRINTTIME_ES, - MSG_STATS_TOTALPRINTTIME_PL, - MSG_STATS_TOTALPRINTTIME_DE -}; - -const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; -const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { - MSG_STEPPER_TOO_HIGH_EN -}; - -const char MSG_STOPPED_EN[] PROGMEM = "STOPPED. "; -const char MSG_STOPPED_IT[] PROGMEM = "ARRESTATO."; -const char MSG_STOPPED_ES[] PROGMEM = "PARADA"; -const char MSG_STOPPED_DE[] PROGMEM = "GESTOPPT. "; -const char * const MSG_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOPPED_EN, - MSG_STOPPED_EN, - MSG_STOPPED_IT, - MSG_STOPPED_ES, - MSG_STOPPED_EN, - MSG_STOPPED_DE -}; - -const char MSG_STOP_PRINT_EN[] PROGMEM = "Stop print"; -const char MSG_STOP_PRINT_CZ[] PROGMEM = "Zastavit tisk"; -const char MSG_STOP_PRINT_IT[] PROGMEM = "Arresta stampa"; -const char MSG_STOP_PRINT_ES[] PROGMEM = "Detener impresion"; -const char MSG_STOP_PRINT_PL[] PROGMEM = "Zatrzymac druk"; -const char MSG_STOP_PRINT_DE[] PROGMEM = "Druck abbrechen"; -const char * const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOP_PRINT_EN, - MSG_STOP_PRINT_CZ, - MSG_STOP_PRINT_IT, - MSG_STOP_PRINT_ES, - MSG_STOP_PRINT_PL, - MSG_STOP_PRINT_DE -}; - -const char MSG_STORE_EPROM_EN[] PROGMEM = "Store memory"; -const char * const MSG_STORE_EPROM_LANG_TABLE[1] PROGMEM = { - MSG_STORE_EPROM_EN -}; - -const char MSG_SUPPORT_EN[] PROGMEM = "Support"; -const char MSG_SUPPORT_CZ[] PROGMEM = "Podpora"; -const char MSG_SUPPORT_ES[] PROGMEM = "Soporte"; -const char MSG_SUPPORT_PL[] PROGMEM = "Pomoc"; -const char * const MSG_SUPPORT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SUPPORT_EN, - MSG_SUPPORT_CZ, - MSG_SUPPORT_EN, - MSG_SUPPORT_ES, - MSG_SUPPORT_PL, - MSG_SUPPORT_EN -}; - -const char MSG_SWITCH_PS_OFF_EN[] PROGMEM = "Switch power off"; -const char MSG_SWITCH_PS_OFF_CZ[] PROGMEM = "Zapnout zdroj"; -const char MSG_SWITCH_PS_OFF_PL[] PROGMEM = "Zapnout zdroj"; -const char MSG_SWITCH_PS_OFF_DE[] PROGMEM = "Netzteil AUS"; -const char * const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_CZ, - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_EN, - MSG_SWITCH_PS_OFF_PL, - MSG_SWITCH_PS_OFF_DE -}; - -const char MSG_SWITCH_PS_ON_EN[] PROGMEM = "Switch power on"; -const char MSG_SWITCH_PS_ON_CZ[] PROGMEM = "Vypnout zdroj"; -const char MSG_SWITCH_PS_ON_PL[] PROGMEM = "Vypnout zdroj"; -const char MSG_SWITCH_PS_ON_DE[] PROGMEM = "Netzteil EIN"; -const char * const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_CZ, - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_EN, - MSG_SWITCH_PS_ON_PL, - MSG_SWITCH_PS_ON_DE -}; - -const char MSG_TAKE_EFFECT_EN[] PROGMEM = " for take effect"; -const char MSG_TAKE_EFFECT_CZ[] PROGMEM = " pro projeveni zmen"; -const char MSG_TAKE_EFFECT_IT[] PROGMEM = " per attualizzare"; -const char MSG_TAKE_EFFECT_ES[] PROGMEM = " para aplicar cambios"; -const char MSG_TAKE_EFFECT_PL[] PROGMEM = " wprow. zmian"; -const char MSG_TAKE_EFFECT_DE[] PROGMEM = " um wirksam zu werden"; -const char * const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TAKE_EFFECT_EN, - MSG_TAKE_EFFECT_CZ, - MSG_TAKE_EFFECT_IT, - MSG_TAKE_EFFECT_ES, - MSG_TAKE_EFFECT_PL, - MSG_TAKE_EFFECT_DE -}; - -const char MSG_TEMPERATURE_EN[] PROGMEM = "Temperature"; -const char MSG_TEMPERATURE_CZ[] PROGMEM = "Teplota"; -const char MSG_TEMPERATURE_IT[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_ES[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_PL[] PROGMEM = "Temperatura"; -const char MSG_TEMPERATURE_DE[] PROGMEM = "Temperatur"; -const char * const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMPERATURE_EN, - MSG_TEMPERATURE_CZ, - MSG_TEMPERATURE_IT, - MSG_TEMPERATURE_ES, - MSG_TEMPERATURE_PL, - MSG_TEMPERATURE_DE -}; - -const char MSG_TEMP_CALIBRATION_EN[] PROGMEM = "Temp. cal. "; -const char MSG_TEMP_CALIBRATION_CZ[] PROGMEM = "Tepl. kal. "; -const char MSG_TEMP_CALIBRATION_IT[] PROGMEM = "Cal. temp. "; -const char MSG_TEMP_CALIBRATION_ES[] PROGMEM = "Cal. temp. "; -const char MSG_TEMP_CALIBRATION_PL[] PROGMEM = "Ciepl. kal. "; -const char MSG_TEMP_CALIBRATION_DE[] PROGMEM = "PINDA Temp.Kal. "; -const char * const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_EN, - MSG_TEMP_CALIBRATION_CZ, - MSG_TEMP_CALIBRATION_IT, - MSG_TEMP_CALIBRATION_ES, - MSG_TEMP_CALIBRATION_PL, - MSG_TEMP_CALIBRATION_DE -}; - -const char MSG_TEMP_CALIBRATION_DONE_EN[] PROGMEM = "Temperature calibration is finished. Click to continue."; -const char MSG_TEMP_CALIBRATION_DONE_CZ[] PROGMEM = "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka."; -const char MSG_TEMP_CALIBRATION_DONE_IT[] PROGMEM = "Taratura temperatura terminata. Fare click per continuare."; -const char MSG_TEMP_CALIBRATION_DONE_ES[] PROGMEM = "Calibracon temperatura terminada. Presionar para continuar."; -const char MSG_TEMP_CALIBRATION_DONE_PL[] PROGMEM = "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"; -const char MSG_TEMP_CALIBRATION_DONE_DE[] PROGMEM = "Die PINDA Temperaturkalibrierung ist beendet. Klicke um fortzufahren."; -const char * const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_DONE_EN, - MSG_TEMP_CALIBRATION_DONE_CZ, - MSG_TEMP_CALIBRATION_DONE_IT, - MSG_TEMP_CALIBRATION_DONE_ES, - MSG_TEMP_CALIBRATION_DONE_PL, - MSG_TEMP_CALIBRATION_DONE_DE -}; - -const char MSG_TEMP_CALIBRATION_OFF_EN[] PROGMEM = "Temp. cal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_CZ[] PROGMEM = "Tepl. kal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_IT[] PROGMEM = "Cal. temp. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_ES[] PROGMEM = "Cal. temp. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_PL[] PROGMEM = "Ciepl. kal. [OFF]"; -const char MSG_TEMP_CALIBRATION_OFF_DE[] PROGMEM = "PINDA T.Kal.[OFF]"; -const char * const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_OFF_EN, - MSG_TEMP_CALIBRATION_OFF_CZ, - MSG_TEMP_CALIBRATION_OFF_IT, - MSG_TEMP_CALIBRATION_OFF_ES, - MSG_TEMP_CALIBRATION_OFF_PL, - MSG_TEMP_CALIBRATION_OFF_DE -}; - -const char MSG_TEMP_CALIBRATION_ON_EN[] PROGMEM = "Temp. cal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_CZ[] PROGMEM = "Tepl. kal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_IT[] PROGMEM = "Cal. temp. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_ES[] PROGMEM = "Cal. temp. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_PL[] PROGMEM = "Ciepl. kal. [ON]"; -const char MSG_TEMP_CALIBRATION_ON_DE[] PROGMEM = "PINDA T.Kal. [ON]"; -const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_ON_EN, - MSG_TEMP_CALIBRATION_ON_CZ, - MSG_TEMP_CALIBRATION_ON_IT, - MSG_TEMP_CALIBRATION_ON_ES, - MSG_TEMP_CALIBRATION_ON_PL, - MSG_TEMP_CALIBRATION_ON_DE -}; - -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; -const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE -}; - -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; -const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlashAir]"; -const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE -}; - -const char MSG_TUNE_EN[] PROGMEM = "Tune"; -const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; -const char MSG_TUNE_IT[] PROGMEM = "Regola"; -const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; -const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; -const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; -const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TUNE_EN, - MSG_TUNE_CZ, - MSG_TUNE_IT, - MSG_TUNE_ES, - MSG_TUNE_PL, - MSG_TUNE_DE -}; - -const char MSG_UNKNOWN_COMMAND_EN[] PROGMEM = "Unknown command: \""; -const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = { - MSG_UNKNOWN_COMMAND_EN -}; - -const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament"; -const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament"; -const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento"; -const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento"; -const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament"; -const char MSG_UNLOADING_FILAMENT_DE[] PROGMEM = "Filament auswerfen"; -const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOADING_FILAMENT_EN, - MSG_UNLOADING_FILAMENT_CZ, - MSG_UNLOADING_FILAMENT_IT, - MSG_UNLOADING_FILAMENT_ES, - MSG_UNLOADING_FILAMENT_PL, - MSG_UNLOADING_FILAMENT_DE -}; - -const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; -const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; -const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; -const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; -const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; -const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Alles entladen"; -const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_ALL_EN, - MSG_UNLOAD_ALL_CZ, - MSG_UNLOAD_ALL_IT, - MSG_UNLOAD_ALL_ES, - MSG_UNLOAD_ALL_PL, - MSG_UNLOAD_ALL_DE -}; - -const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; -const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; -const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; -const char MSG_UNLOAD_FILAMENT_ES[] PROGMEM = "Soltar filamento"; -const char MSG_UNLOAD_FILAMENT_PL[] PROGMEM = "Wyjac filament"; -const char MSG_UNLOAD_FILAMENT_DE[] PROGMEM = "Filament entnehmen"; -const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_EN, - MSG_UNLOAD_FILAMENT_CZ, - MSG_UNLOAD_FILAMENT_IT, - MSG_UNLOAD_FILAMENT_ES, - MSG_UNLOAD_FILAMENT_PL, - MSG_UNLOAD_FILAMENT_DE -}; - -const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; -const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; -const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; -const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; -const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Filam. 1 entladen"; -const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_1_EN, - MSG_UNLOAD_FILAMENT_1_CZ, - MSG_UNLOAD_FILAMENT_1_IT, - MSG_UNLOAD_FILAMENT_1_ES, - MSG_UNLOAD_FILAMENT_1_PL, - MSG_UNLOAD_FILAMENT_1_DE -}; - -const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; -const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; -const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; -const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; -const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Filam. 2 entladen"; -const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_2_EN, - MSG_UNLOAD_FILAMENT_2_CZ, - MSG_UNLOAD_FILAMENT_2_IT, - MSG_UNLOAD_FILAMENT_2_ES, - MSG_UNLOAD_FILAMENT_2_PL, - MSG_UNLOAD_FILAMENT_2_DE -}; - -const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; -const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; -const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; -const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; -const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Filam. 3 entladen"; -const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_3_EN, - MSG_UNLOAD_FILAMENT_3_CZ, - MSG_UNLOAD_FILAMENT_3_IT, - MSG_UNLOAD_FILAMENT_3_ES, - MSG_UNLOAD_FILAMENT_3_PL, - MSG_UNLOAD_FILAMENT_3_DE -}; - -const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; -const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; -const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; -const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; -const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; -const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Filam. 4 entladen"; -const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_4_EN, - MSG_UNLOAD_FILAMENT_4_CZ, - MSG_UNLOAD_FILAMENT_4_IT, - MSG_UNLOAD_FILAMENT_4_ES, - MSG_UNLOAD_FILAMENT_4_PL, - MSG_UNLOAD_FILAMENT_4_DE -}; - -const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; -const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; -const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; -const char MSG_USB_PRINTING_ES[] PROGMEM = "Impresion de USB "; -const char MSG_USB_PRINTING_PL[] PROGMEM = "Druk z USB "; -const char MSG_USB_PRINTING_DE[] PROGMEM = "Drucken ueber USB"; -const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USB_PRINTING_EN, - MSG_USB_PRINTING_CZ, - MSG_USB_PRINTING_IT, - MSG_USB_PRINTING_ES, - MSG_USB_PRINTING_PL, - MSG_USB_PRINTING_DE -}; - -const char MSG_USED_EN[] PROGMEM = "Used during print"; -const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku"; -const char MSG_USED_IT[] PROGMEM = "Usati nella stampa"; -const char MSG_USED_ES[] PROGMEM = "Usado en impresion"; -const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku"; -const char MSG_USED_DE[] PROGMEM = "Benutzt beim Druck"; -const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USED_EN, - MSG_USED_CZ, - MSG_USED_IT, - MSG_USED_ES, - MSG_USED_PL, - MSG_USED_DE -}; - -const char MSG_USERWAIT_EN[] PROGMEM = "Wait for user..."; -const char MSG_USERWAIT_IT[] PROGMEM = "Attendendo utente"; -const char MSG_USERWAIT_ES[] PROGMEM = "Esperando ordenes"; -const char MSG_USERWAIT_DE[] PROGMEM = "Warte auf Nutzer..."; -const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USERWAIT_EN, - MSG_USERWAIT_EN, - MSG_USERWAIT_IT, - MSG_USERWAIT_ES, - MSG_USERWAIT_EN, - MSG_USERWAIT_DE -}; - -const char MSG_VMIN_EN[] PROGMEM = "Vmin"; -const char * const MSG_VMIN_LANG_TABLE[1] PROGMEM = { - MSG_VMIN_EN -}; - -const char MSG_VOLUMETRIC_EN[] PROGMEM = "Filament"; -const char * const MSG_VOLUMETRIC_LANG_TABLE[1] PROGMEM = { - MSG_VOLUMETRIC_EN -}; - -const char MSG_VOLUMETRIC_ENABLED_EN[] PROGMEM = "E in mm3"; -const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1] PROGMEM = { - MSG_VOLUMETRIC_ENABLED_EN -}; - -const char MSG_VTRAV_MIN_EN[] PROGMEM = "VTrav min"; -const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = { - MSG_VTRAV_MIN_EN -}; - -const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for nozzle and bed cooling"; -const char MSG_WAITING_TEMP_CZ[] PROGMEM = "Cekani na zchladnuti trysky a podlozky."; -const char MSG_WAITING_TEMP_IT[] PROGMEM = "In attesa del raffreddamento della testina e del piatto"; -const char MSG_WAITING_TEMP_ES[] PROGMEM = "Esperando enfriamiento de la cama y del extrusor."; -const char MSG_WAITING_TEMP_PL[] PROGMEM = "Oczekiwanie na wychlodzenie dyszy i podkladki."; -const char MSG_WAITING_TEMP_DE[] PROGMEM = "Warten auf Abkuehlung von Duese und Bett."; -const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WAITING_TEMP_EN, - MSG_WAITING_TEMP_CZ, - MSG_WAITING_TEMP_IT, - MSG_WAITING_TEMP_ES, - MSG_WAITING_TEMP_PL, - MSG_WAITING_TEMP_DE -}; - -const char MSG_WATCH_EN[] PROGMEM = "Info screen"; -const char MSG_WATCH_CZ[] PROGMEM = "Informace"; -const char MSG_WATCH_IT[] PROGMEM = "Schermata info"; -const char MSG_WATCH_ES[] PROGMEM = "Monitorizar"; -const char MSG_WATCH_PL[] PROGMEM = "Informacje"; -const char MSG_WATCH_DE[] PROGMEM = "Information"; -const char * const MSG_WATCH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WATCH_EN, - MSG_WATCH_CZ, - MSG_WATCH_IT, - MSG_WATCH_ES, - MSG_WATCH_PL, - MSG_WATCH_DE -}; - -const char MSG_WATCHDOG_RESET_EN[] PROGMEM = " Watchdog Reset"; -const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { - MSG_WATCHDOG_RESET_EN -}; - -const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; -const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; -const char MSG_XYZ_DETAILS_IT[] PROGMEM = "XYZ Cal. dettagli"; -const char MSG_XYZ_DETAILS_ES[] PROGMEM = "Inform. XYZ cal."; -const char MSG_XYZ_DETAILS_PL[] PROGMEM = "Szczegoly kal.XYZ"; -const char MSG_XYZ_DETAILS_DE[] PROGMEM = "XYZ Kal. Details"; -const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_XYZ_DETAILS_EN, - MSG_XYZ_DETAILS_CZ, - MSG_XYZ_DETAILS_IT, - MSG_XYZ_DETAILS_ES, - MSG_XYZ_DETAILS_PL, - MSG_XYZ_DETAILS_DE -}; - -const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; -const char * const MSG_X_MAX_LANG_TABLE[1] PROGMEM = { - MSG_X_MAX_EN -}; - -const char MSG_X_MIN_EN[] PROGMEM = "x_min: "; -const char * const MSG_X_MIN_LANG_TABLE[1] PROGMEM = { - MSG_X_MIN_EN -}; - -const char MSG_YES_EN[] PROGMEM = "Yes"; -const char MSG_YES_CZ[] PROGMEM = "Ano"; -const char MSG_YES_IT[] PROGMEM = "Si"; -const char MSG_YES_ES[] PROGMEM = "Si"; -const char MSG_YES_PL[] PROGMEM = "Tak"; -const char MSG_YES_DE[] PROGMEM = "Ja"; -const char * const MSG_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_YES_EN, - MSG_YES_CZ, - MSG_YES_IT, - MSG_YES_ES, - MSG_YES_PL, - MSG_YES_DE -}; - -const char MSG_Y_DISTANCE_FROM_MIN_EN[] PROGMEM = "Y distance from min:"; -const char MSG_Y_DISTANCE_FROM_MIN_CZ[] PROGMEM = "Y vzdalenost od min:"; -const char MSG_Y_DISTANCE_FROM_MIN_IT[] PROGMEM = "Distanza Y da min:"; -const char MSG_Y_DISTANCE_FROM_MIN_ES[] PROGMEM = "Dist. Y desde min:"; -const char MSG_Y_DISTANCE_FROM_MIN_PL[] PROGMEM = "Odleglosc Y od min.:"; -const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung von min"; -const char * const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_Y_DISTANCE_FROM_MIN_EN, - MSG_Y_DISTANCE_FROM_MIN_CZ, - MSG_Y_DISTANCE_FROM_MIN_IT, - MSG_Y_DISTANCE_FROM_MIN_ES, - MSG_Y_DISTANCE_FROM_MIN_PL, - MSG_Y_DISTANCE_FROM_MIN_DE -}; - -const char MSG_Y_MAX_EN[] PROGMEM = "y_max: "; -const char * const MSG_Y_MAX_LANG_TABLE[1] PROGMEM = { - MSG_Y_MAX_EN -}; - -const char MSG_Y_MIN_EN[] PROGMEM = "y_min: "; -const char * const MSG_Y_MIN_LANG_TABLE[1] PROGMEM = { - MSG_Y_MIN_EN -}; - -const char MSG_ZPROBE_OUT_EN[] PROGMEM = "Z probe out. bed"; -const char * const MSG_ZPROBE_OUT_LANG_TABLE[1] PROGMEM = { - MSG_ZPROBE_OUT_EN -}; - -const char MSG_ZPROBE_ZOFFSET_EN[] PROGMEM = "Z Offset"; -const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1] PROGMEM = { - MSG_ZPROBE_ZOFFSET_EN -}; - -const char MSG_Z_MAX_EN[] PROGMEM = "z_max: "; -const char * const MSG_Z_MAX_LANG_TABLE[1] PROGMEM = { - MSG_Z_MAX_EN -}; - -const char MSG_Z_MIN_EN[] PROGMEM = "z_min: "; -const char * const MSG_Z_MIN_LANG_TABLE[1] PROGMEM = { - MSG_Z_MIN_EN -}; - -const char WELCOME_MSG_EN[] PROGMEM = CUSTOM_MENDEL_NAME " ready."; -const char WELCOME_MSG_CZ[] PROGMEM = CUSTOM_MENDEL_NAME " ok"; -const char WELCOME_MSG_IT[] PROGMEM = CUSTOM_MENDEL_NAME " pronta."; -const char WELCOME_MSG_ES[] PROGMEM = CUSTOM_MENDEL_NAME " prep."; -const char WELCOME_MSG_PL[] PROGMEM = CUSTOM_MENDEL_NAME " gotowa"; -const char WELCOME_MSG_DE[] PROGMEM = CUSTOM_MENDEL_NAME " bereit."; -const char * const WELCOME_MSG_LANG_TABLE[LANG_NUM] PROGMEM = { - WELCOME_MSG_EN, - WELCOME_MSG_CZ, - WELCOME_MSG_IT, - WELCOME_MSG_ES, - WELCOME_MSG_PL, - WELCOME_MSG_DE -}; - - -char langbuffer[LCD_WIDTH+1]; -char* CAT2(const char *s1,const char *s2) { - unsigned char len=0; - strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); - len+=strlen_P(s1); - strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); - return langbuffer; -} -char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4) { - unsigned char len=0; - strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); - len+=strlen_P(s1); - strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); - len+=strlen_P(s2); - strncpy_P(langbuffer+len,s3,LCD_WIDTH-len); - len+=strlen_P(s3); - strncpy_P(langbuffer+len,s4,LCD_WIDTH-len); - return langbuffer; -} + +#include "Configuration_prusa.h" +#include "language_all.h" + +#define LCD_WIDTH 20 +extern unsigned char lang_selected; + +const char MSG_ACTIVE_EXTRUDER_EN[] PROGMEM = "Active Extruder: "; +const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_ACTIVE_EXTRUDER_EN +}; + +const char MSG_ADJUSTZ_EN[] PROGMEM = "Auto adjust Z?"; +const char MSG_ADJUSTZ_CZ[] PROGMEM = "Auto doladit Z ?"; +const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; +const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; +const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; +const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; +const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ADJUSTZ_EN, + MSG_ADJUSTZ_CZ, + MSG_ADJUSTZ_IT, + MSG_ADJUSTZ_ES, + MSG_ADJUSTZ_PL, + MSG_ADJUSTZ_DE +}; + +const char MSG_ALL_EN[] PROGMEM = "All"; +const char MSG_ALL_CZ[] PROGMEM = "Vse"; +const char MSG_ALL_IT[] PROGMEM = "Tutti"; +const char MSG_ALL_ES[] PROGMEM = "Todos"; +const char MSG_ALL_PL[] PROGMEM = "Wszystko"; +const char MSG_ALL_DE[] PROGMEM = "Alle"; +const char * const MSG_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ALL_EN, + MSG_ALL_CZ, + MSG_ALL_IT, + MSG_ALL_ES, + MSG_ALL_PL, + MSG_ALL_DE +}; + +const char MSG_AMAX_EN[] PROGMEM = "Amax "; +const char * const MSG_AMAX_LANG_TABLE[1] PROGMEM = { + MSG_AMAX_EN +}; + +const char MSG_AUTHOR_EN[] PROGMEM = " | Author: "; +const char * const MSG_AUTHOR_LANG_TABLE[1] PROGMEM = { + MSG_AUTHOR_EN +}; + +const char MSG_AUTO_HOME_EN[] PROGMEM = "Auto home"; +const char MSG_AUTO_HOME_IT[] PROGMEM = "Trova origine"; +const char MSG_AUTO_HOME_ES[] PROGMEM = "Llevar al origen"; +const char MSG_AUTO_HOME_DE[] PROGMEM = "Startposition"; +const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_IT, + MSG_AUTO_HOME_ES, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_DE +}; + +const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; +const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { + MSG_A_RETRACT_EN +}; + +const char MSG_BABYSTEPPING_X_EN[] PROGMEM = "Babystepping X"; +const char * const MSG_BABYSTEPPING_X_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_X_EN +}; + +const char MSG_BABYSTEPPING_Y_EN[] PROGMEM = "Babystepping Y"; +const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_Y_EN +}; + +const char MSG_BABYSTEPPING_Z_EN[] PROGMEM = "Adjusting Z"; +const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEPPING_Z_EN +}; + +const char MSG_BABYSTEP_X_EN[] PROGMEM = "Babystep X"; +const char * const MSG_BABYSTEP_X_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEP_X_EN +}; + +const char MSG_BABYSTEP_Y_EN[] PROGMEM = "Babystep Y"; +const char * const MSG_BABYSTEP_Y_LANG_TABLE[1] PROGMEM = { + MSG_BABYSTEP_Y_EN +}; + +const char MSG_BABYSTEP_Z_EN[] PROGMEM = "Live adjust Z"; +const char MSG_BABYSTEP_Z_CZ[] PROGMEM = "Doladeni osy Z"; +const char MSG_BABYSTEP_Z_IT[] PROGMEM = "Compensazione Z"; +const char MSG_BABYSTEP_Z_ES[] PROGMEM = "Micropaso Eje Z"; +const char MSG_BABYSTEP_Z_PL[] PROGMEM = "Dostrojenie osy Z"; +const char MSG_BABYSTEP_Z_DE[] PROGMEM = "Live Z einstellen"; +const char * const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BABYSTEP_Z_EN, + MSG_BABYSTEP_Z_CZ, + MSG_BABYSTEP_Z_IT, + MSG_BABYSTEP_Z_ES, + MSG_BABYSTEP_Z_PL, + MSG_BABYSTEP_Z_DE +}; + +const char MSG_BABYSTEP_Z_NOT_SET_EN[] PROGMEM = "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_CZ[] PROGMEM = "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."; +const char MSG_BABYSTEP_Z_NOT_SET_IT[] PROGMEM = "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_ES[] PROGMEM = "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_PL[] PROGMEM = "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."; +const char MSG_BABYSTEP_Z_NOT_SET_DE[] PROGMEM = "Der Abstand zwischen der Spitze der Duese und der Druckoberflaeche / Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, Abschnitt First layer calibration."; +const char * const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BABYSTEP_Z_NOT_SET_EN, + MSG_BABYSTEP_Z_NOT_SET_CZ, + MSG_BABYSTEP_Z_NOT_SET_IT, + MSG_BABYSTEP_Z_NOT_SET_ES, + MSG_BABYSTEP_Z_NOT_SET_PL, + MSG_BABYSTEP_Z_NOT_SET_DE +}; + +const char MSG_BED_EN[] PROGMEM = "Bed"; +const char MSG_BED_IT[] PROGMEM = "Letto"; +const char MSG_BED_ES[] PROGMEM = "Base"; +const char MSG_BED_PL[] PROGMEM = "Stolik"; +const char MSG_BED_DE[] PROGMEM = "Bett"; +const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_EN, + MSG_BED_EN, + MSG_BED_IT, + MSG_BED_ES, + MSG_BED_PL, + MSG_BED_DE +}; + +const char MSG_BED_CORRECTION_FRONT_EN[] PROGMEM = "Front side[um]"; +const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; +const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Fronte [um]"; +const char MSG_BED_CORRECTION_FRONT_ES[] PROGMEM = "Adelante [um]"; +const char MSG_BED_CORRECTION_FRONT_PL[] PROGMEM = "Do przodu [um]"; +const char MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; +const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_FRONT_EN, + MSG_BED_CORRECTION_FRONT_CZ, + MSG_BED_CORRECTION_FRONT_IT, + MSG_BED_CORRECTION_FRONT_ES, + MSG_BED_CORRECTION_FRONT_PL, + MSG_BED_CORRECTION_FRONT_DE +}; + +const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]"; +const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]"; +const char MSG_BED_CORRECTION_LEFT_IT[] PROGMEM = "Sinistra [um]"; +const char MSG_BED_CORRECTION_LEFT_ES[] PROGMEM = "Izquierda [um]"; +const char MSG_BED_CORRECTION_LEFT_PL[] PROGMEM = "W lewo [um]"; +const char MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; +const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_LEFT_EN, + MSG_BED_CORRECTION_LEFT_CZ, + MSG_BED_CORRECTION_LEFT_IT, + MSG_BED_CORRECTION_LEFT_ES, + MSG_BED_CORRECTION_LEFT_PL, + MSG_BED_CORRECTION_LEFT_DE +}; + +const char MSG_BED_CORRECTION_MENU_EN[] PROGMEM = "Bed level correct"; +const char MSG_BED_CORRECTION_MENU_CZ[] PROGMEM = "Korekce podlozky"; +const char MSG_BED_CORRECTION_MENU_IT[] PROGMEM = "Correz. liv.letto"; +const char MSG_BED_CORRECTION_MENU_ES[] PROGMEM = "Corr. de la cama"; +const char MSG_BED_CORRECTION_MENU_PL[] PROGMEM = "Korekta podkladki"; +const char MSG_BED_CORRECTION_MENU_DE[] PROGMEM = "Bett level korrekt"; +const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_MENU_EN, + MSG_BED_CORRECTION_MENU_CZ, + MSG_BED_CORRECTION_MENU_IT, + MSG_BED_CORRECTION_MENU_ES, + MSG_BED_CORRECTION_MENU_PL, + MSG_BED_CORRECTION_MENU_DE +}; + +const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]"; +const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]"; +const char MSG_BED_CORRECTION_REAR_IT[] PROGMEM = "Retro [um]"; +const char MSG_BED_CORRECTION_REAR_ES[] PROGMEM = "Atras [um]"; +const char MSG_BED_CORRECTION_REAR_PL[] PROGMEM = "Do tylu [um]"; +const char MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; +const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_REAR_EN, + MSG_BED_CORRECTION_REAR_CZ, + MSG_BED_CORRECTION_REAR_IT, + MSG_BED_CORRECTION_REAR_ES, + MSG_BED_CORRECTION_REAR_PL, + MSG_BED_CORRECTION_REAR_DE +}; + +const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; +const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Zuruecksetzen"; +const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_DE +}; + +const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side[um]"; +const char MSG_BED_CORRECTION_RIGHT_CZ[] PROGMEM = "Vpravo [um]"; +const char MSG_BED_CORRECTION_RIGHT_IT[] PROGMEM = "Destra [um]"; +const char MSG_BED_CORRECTION_RIGHT_ES[] PROGMEM = "Derecha [um]"; +const char MSG_BED_CORRECTION_RIGHT_PL[] PROGMEM = "W prawo [um]"; +const char MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; +const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_RIGHT_EN, + MSG_BED_CORRECTION_RIGHT_CZ, + MSG_BED_CORRECTION_RIGHT_IT, + MSG_BED_CORRECTION_RIGHT_ES, + MSG_BED_CORRECTION_RIGHT_PL, + MSG_BED_CORRECTION_RIGHT_DE +}; + +const char MSG_BED_DONE_EN[] PROGMEM = "Bed done"; +const char MSG_BED_DONE_CZ[] PROGMEM = "Bed OK."; +const char MSG_BED_DONE_IT[] PROGMEM = "Piatto fatto."; +const char MSG_BED_DONE_ES[] PROGMEM = "Base preparada"; +const char MSG_BED_DONE_PL[] PROGMEM = "Stolik OK."; +const char MSG_BED_DONE_DE[] PROGMEM = "Bett OK"; +const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_DONE_EN, + MSG_BED_DONE_CZ, + MSG_BED_DONE_IT, + MSG_BED_DONE_ES, + MSG_BED_DONE_PL, + MSG_BED_DONE_DE +}; + +const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; +const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; +const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto"; +const char MSG_BED_HEATING_ES[] PROGMEM = "Calentando Base"; +const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; +const char MSG_BED_HEATING_DE[] PROGMEM = "Bett aufwaermen"; +const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_HEATING_EN, + MSG_BED_HEATING_CZ, + MSG_BED_HEATING_IT, + MSG_BED_HEATING_ES, + MSG_BED_HEATING_PL, + MSG_BED_HEATING_DE +}; + +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_EN[] PROGMEM = "Bed leveling failed. Sensor triggered too high. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_IT[] PROGMEM = "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_ES[] PROGMEM = "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_PL[] PROGMEM = "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde zu hoch ausgeloest. Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_POINT_HIGH_EN, + MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ, + MSG_BED_LEVELING_FAILED_POINT_HIGH_IT, + MSG_BED_LEVELING_FAILED_POINT_HIGH_ES, + MSG_BED_LEVELING_FAILED_POINT_HIGH_PL, + MSG_BED_LEVELING_FAILED_POINT_HIGH_DE +}; + +const char MSG_BED_LEVELING_FAILED_POINT_LOW_EN[] PROGMEM = "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_IT[] PROGMEM = "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_ES[] PROGMEM = "Nivelacion fallada. Sensor no funciona. Escombros en Boqui.? Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_PL[] PROGMEM = "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor wurde nicht ausgeloest. Schmutzige Duese? Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_POINT_LOW_EN, + MSG_BED_LEVELING_FAILED_POINT_LOW_CZ, + MSG_BED_LEVELING_FAILED_POINT_LOW_IT, + MSG_BED_LEVELING_FAILED_POINT_LOW_ES, + MSG_BED_LEVELING_FAILED_POINT_LOW_PL, + MSG_BED_LEVELING_FAILED_POINT_LOW_DE +}; + +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN[] PROGMEM = "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT[] PROGMEM = "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES[] PROGMEM = "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL[] PROGMEM = "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE[] PROGMEM = "Bett-Nivellierung fehlgeschlagen. Sensor nicht angeschlossen oder Kabel defekt. Warte auf Reset."; +const char * const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration failed. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration failed. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Linker voderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration failed. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN[] PROGMEM = "XYZ calibration failed. Please consult the manual."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ[] PROGMEM = "Kalibrace XYZ selhala. Nahlednete do manualu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT[] PROGMEM = "Calibrazione XYZ fallita. Si prega di consultare il manuale."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES[] PROGMEM = "Calibracion XYZ fallada. Consultar el manual por favor."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL[] PROGMEM = "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN[] PROGMEM = "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN[] PROGMEM = "XYZ calibration failed. Bed calibration point was not found."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ[] PROGMEM = "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT[] PROGMEM = "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES[] PROGMEM = "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL[] PROGMEM = "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "XYZ calibration all right. Skew will be corrected automatically."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind sehr schief. Schiefheit wird automatisch korrigiert."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind etwas schief. Schiefheit wird automatisch korrigiert. Gut gemacht!"; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration compromised. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE +}; + +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar."; +const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE +}; + +const char MSG_BEGIN_FILE_LIST_EN[] PROGMEM = "Begin file list"; +const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[1] PROGMEM = { + MSG_BEGIN_FILE_LIST_EN +}; + +const char MSG_BROWNOUT_RESET_EN[] PROGMEM = " Brown out Reset"; +const char * const MSG_BROWNOUT_RESET_LANG_TABLE[1] PROGMEM = { + MSG_BROWNOUT_RESET_EN +}; + +const char MSG_CALIBRATE_BED_EN[] PROGMEM = "Calibrate XYZ"; +const char MSG_CALIBRATE_BED_CZ[] PROGMEM = "Kalibrace XYZ"; +const char MSG_CALIBRATE_BED_IT[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_ES[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_PL[] PROGMEM = "Kalibracja XYZ"; +const char MSG_CALIBRATE_BED_DE[] PROGMEM = "Kalibrierung XYZ"; +const char * const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_BED_EN, + MSG_CALIBRATE_BED_CZ, + MSG_CALIBRATE_BED_IT, + MSG_CALIBRATE_BED_ES, + MSG_CALIBRATE_BED_PL, + MSG_CALIBRATE_BED_DE +}; + +const char MSG_CALIBRATE_BED_RESET_EN[] PROGMEM = "Reset XYZ calibr."; +const char MSG_CALIBRATE_BED_RESET_CZ[] PROGMEM = "Reset XYZ kalibr."; +const char MSG_CALIBRATE_BED_RESET_PL[] PROGMEM = "Reset kalibr. XYZ"; +const char MSG_CALIBRATE_BED_RESET_DE[] PROGMEM = "Reset XYZ Kalibr."; +const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_CZ, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_PL, + MSG_CALIBRATE_BED_RESET_DE +}; + +const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E"; +const char MSG_CALIBRATE_E_CZ[] PROGMEM = "Kalibrovat E"; +const char MSG_CALIBRATE_E_IT[] PROGMEM = "Calibra E"; +const char MSG_CALIBRATE_E_ES[] PROGMEM = "Calibrar E"; +const char MSG_CALIBRATE_E_PL[] PROGMEM = "Kalibruj E"; +const char MSG_CALIBRATE_E_DE[] PROGMEM = "Kalibriere E"; +const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_E_EN, + MSG_CALIBRATE_E_CZ, + MSG_CALIBRATE_E_IT, + MSG_CALIBRATE_E_ES, + MSG_CALIBRATE_E_PL, + MSG_CALIBRATE_E_DE +}; + +const char MSG_CALIBRATE_PINDA_EN[] PROGMEM = "Calibrate"; +const char MSG_CALIBRATE_PINDA_CZ[] PROGMEM = "Zkalibrovat"; +const char MSG_CALIBRATE_PINDA_IT[] PROGMEM = "Calibrare"; +const char MSG_CALIBRATE_PINDA_ES[] PROGMEM = "Calibrar"; +const char MSG_CALIBRATE_PINDA_PL[] PROGMEM = "Skalibrowac"; +const char MSG_CALIBRATE_PINDA_DE[] PROGMEM = "PINDA Temp. Kal."; +const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATE_PINDA_EN, + MSG_CALIBRATE_PINDA_CZ, + MSG_CALIBRATE_PINDA_IT, + MSG_CALIBRATE_PINDA_ES, + MSG_CALIBRATE_PINDA_PL, + MSG_CALIBRATE_PINDA_DE +}; + +const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; +const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; +const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; +const char MSG_CALIBRATION_PINDA_MENU_ES[] PROGMEM = "Calibracion temp."; +const char MSG_CALIBRATION_PINDA_MENU_PL[] PROGMEM = "Cieplna kalibr."; +const char MSG_CALIBRATION_PINDA_MENU_DE[] PROGMEM = "PINDA Temp. Kal."; +const char * const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CALIBRATION_PINDA_MENU_EN, + MSG_CALIBRATION_PINDA_MENU_CZ, + MSG_CALIBRATION_PINDA_MENU_IT, + MSG_CALIBRATION_PINDA_MENU_ES, + MSG_CALIBRATION_PINDA_MENU_PL, + MSG_CALIBRATION_PINDA_MENU_DE +}; + +const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD"; +const char MSG_CARD_MENU_CZ[] PROGMEM = "Tisk z SD"; +const char MSG_CARD_MENU_IT[] PROGMEM = "Stampa da SD"; +const char MSG_CARD_MENU_ES[] PROGMEM = "Menu tarjeta SD"; +const char MSG_CARD_MENU_PL[] PROGMEM = "Druk z SD"; +const char MSG_CARD_MENU_DE[] PROGMEM = "Drucken von SD"; +const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CARD_MENU_EN, + MSG_CARD_MENU_CZ, + MSG_CARD_MENU_IT, + MSG_CARD_MENU_ES, + MSG_CARD_MENU_PL, + MSG_CARD_MENU_DE +}; + +const char MSG_CENTER_EN[] PROGMEM = "Center:"; +const char MSG_CENTER_CZ[] PROGMEM = "Stred:"; +const char MSG_CENTER_IT[] PROGMEM = "Centro:"; +const char MSG_CENTER_ES[] PROGMEM = "Centro:"; +const char MSG_CENTER_PL[] PROGMEM = "Srodek:"; +const char MSG_CENTER_DE[] PROGMEM = "Mitte:"; +const char * const MSG_CENTER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CENTER_EN, + MSG_CENTER_CZ, + MSG_CENTER_IT, + MSG_CENTER_ES, + MSG_CENTER_PL, + MSG_CENTER_DE +}; + +const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder"; +const char MSG_CHANGE_EXTR_CZ[] PROGMEM = "Zmenit extruder"; +const char MSG_CHANGE_EXTR_IT[] PROGMEM = "Cambio estrusore."; +const char MSG_CHANGE_EXTR_ES[] PROGMEM = "Cambiar extrusor."; +const char MSG_CHANGE_EXTR_PL[] PROGMEM = "Zmienic ekstruder"; +const char MSG_CHANGE_EXTR_DE[] PROGMEM = "Wechsel extruder"; +const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGE_EXTR_EN, + MSG_CHANGE_EXTR_CZ, + MSG_CHANGE_EXTR_IT, + MSG_CHANGE_EXTR_ES, + MSG_CHANGE_EXTR_PL, + MSG_CHANGE_EXTR_DE +}; + +const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; +const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; +const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!"; +const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambio correcto"; +const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; +const char MSG_CHANGE_SUCCESS_DE[] PROGMEM = "Wechsel erfolgreich!"; +const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGE_SUCCESS_EN, + MSG_CHANGE_SUCCESS_CZ, + MSG_CHANGE_SUCCESS_IT, + MSG_CHANGE_SUCCESS_ES, + MSG_CHANGE_SUCCESS_PL, + MSG_CHANGE_SUCCESS_DE +}; + +const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; +const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; +const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; +const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; +const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; +const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; +const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHANGING_FILAMENT_EN, + MSG_CHANGING_FILAMENT_CZ, + MSG_CHANGING_FILAMENT_IT, + MSG_CHANGING_FILAMENT_ES, + MSG_CHANGING_FILAMENT_PL, + MSG_CHANGING_FILAMENT_DE +}; + +const char MSG_CHOOSE_EXTRUDER_EN[] PROGMEM = "Choose extruder:"; +const char MSG_CHOOSE_EXTRUDER_CZ[] PROGMEM = "Vyberte extruder:"; +const char MSG_CHOOSE_EXTRUDER_IT[] PROGMEM = "Seleziona estrusore:"; +const char MSG_CHOOSE_EXTRUDER_ES[] PROGMEM = "Elegir extrusor:"; +const char MSG_CHOOSE_EXTRUDER_PL[] PROGMEM = "Wybierz ekstruder"; +const char MSG_CHOOSE_EXTRUDER_DE[] PROGMEM = "Waehlen Sie Extruder"; +const char * const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CHOOSE_EXTRUDER_EN, + MSG_CHOOSE_EXTRUDER_CZ, + MSG_CHOOSE_EXTRUDER_IT, + MSG_CHOOSE_EXTRUDER_ES, + MSG_CHOOSE_EXTRUDER_PL, + MSG_CHOOSE_EXTRUDER_DE +}; + +const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done."; +const char MSG_CLEAN_NOZZLE_E_CZ[] PROGMEM = "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem."; +const char MSG_CLEAN_NOZZLE_E_IT[] PROGMEM = "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."; +const char MSG_CLEAN_NOZZLE_E_ES[] PROGMEM = "E calibrado. Limpiar la boquilla. Haga clic una vez terminado."; +const char MSG_CLEAN_NOZZLE_E_PL[] PROGMEM = "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "; +const char MSG_CLEAN_NOZZLE_E_DE[] PROGMEM = "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."; +const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CLEAN_NOZZLE_E_EN, + MSG_CLEAN_NOZZLE_E_CZ, + MSG_CLEAN_NOZZLE_E_IT, + MSG_CLEAN_NOZZLE_E_ES, + MSG_CLEAN_NOZZLE_E_PL, + MSG_CLEAN_NOZZLE_E_DE +}; + +const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card"; +const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = { + MSG_CNG_SDCARD_EN +}; + +const char MSG_CONFIGURATION_VER_EN[] PROGMEM = " Last Updated: "; +const char * const MSG_CONFIGURATION_VER_LANG_TABLE[1] PROGMEM = { + MSG_CONFIGURATION_VER_EN +}; + +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN[] PROGMEM = "Are left and right Z~carriages all up?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ[] PROGMEM = "Dojely oba Z voziky k~hornimu dorazu?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT[] PROGMEM = "I carrelli Z sin/des sono altezza max?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES[] PROGMEM = "Carros Z izq./der. estan arriba maximo?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL[] PROGMEM = "Oba wozki dojechaly do gornej ramy?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE[] PROGMEM = "Sind beide Z Schlitten ganz oben?"; +const char * const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE +}; + +const char MSG_CONFIRM_NOZZLE_CLEAN_EN[] PROGMEM = "Please clean the nozzle for calibration. Click when done."; +const char MSG_CONFIRM_NOZZLE_CLEAN_CZ[] PROGMEM = "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_IT[] PROGMEM = "Pulire l'ugello per la calibrazione, poi fare click."; +const char MSG_CONFIRM_NOZZLE_CLEAN_ES[] PROGMEM = "Limpiar boquilla para calibracion. Click cuando acabes."; +const char MSG_CONFIRM_NOZZLE_CLEAN_PL[] PROGMEM = "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_DE[] PROGMEM = "Bitte reinigen Sie die Duese vor Kalibrierung. Klicken wenn sauber."; +const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_NOZZLE_CLEAN_EN, + MSG_CONFIRM_NOZZLE_CLEAN_CZ, + MSG_CONFIRM_NOZZLE_CLEAN_IT, + MSG_CONFIRM_NOZZLE_CLEAN_ES, + MSG_CONFIRM_NOZZLE_CLEAN_PL, + MSG_CONFIRM_NOZZLE_CLEAN_DE +}; + +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN[] PROGMEM = "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber."; +const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE +}; + +const char MSG_CONTROL_EN[] PROGMEM = "Control"; +const char * const MSG_CONTROL_LANG_TABLE[1] PROGMEM = { + MSG_CONTROL_EN +}; + +const char MSG_COOLDOWN_EN[] PROGMEM = "Cooldown"; +const char MSG_COOLDOWN_CZ[] PROGMEM = "Zchladit"; +const char MSG_COOLDOWN_IT[] PROGMEM = "Raffredda"; +const char MSG_COOLDOWN_ES[] PROGMEM = "Enfriar"; +const char MSG_COOLDOWN_PL[] PROGMEM = "Wychlodzic"; +const char MSG_COOLDOWN_DE[] PROGMEM = "Abkuehlen"; +const char * const MSG_COOLDOWN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_COOLDOWN_EN, + MSG_COOLDOWN_CZ, + MSG_COOLDOWN_IT, + MSG_COOLDOWN_ES, + MSG_COOLDOWN_PL, + MSG_COOLDOWN_DE +}; + +const char MSG_CORRECTLY_EN[] PROGMEM = "Changed correctly?"; +const char MSG_CORRECTLY_CZ[] PROGMEM = "Vymena ok?"; +const char MSG_CORRECTLY_IT[] PROGMEM = "Cambiato corr.?"; +const char MSG_CORRECTLY_ES[] PROGMEM = "Cambiado correct.?"; +const char MSG_CORRECTLY_PL[] PROGMEM = "Wymiana ok?"; +const char MSG_CORRECTLY_DE[] PROGMEM = "Wechsel ok?"; +const char * const MSG_CORRECTLY_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CORRECTLY_EN, + MSG_CORRECTLY_CZ, + MSG_CORRECTLY_IT, + MSG_CORRECTLY_ES, + MSG_CORRECTLY_PL, + MSG_CORRECTLY_DE +}; + +const char MSG_COUNT_X_EN[] PROGMEM = " Count X: "; +const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { + MSG_COUNT_X_EN +}; + +const char MSG_CURRENT_EN[] PROGMEM = "Current"; +const char MSG_CURRENT_CZ[] PROGMEM = "Pouze aktualni"; +const char MSG_CURRENT_IT[] PROGMEM = "Attuale"; +const char MSG_CURRENT_ES[] PROGMEM = "Actual"; +const char MSG_CURRENT_PL[] PROGMEM = "Tylko aktualne"; +const char MSG_CURRENT_DE[] PROGMEM = "Aktuelles"; +const char * const MSG_CURRENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CURRENT_EN, + MSG_CURRENT_CZ, + MSG_CURRENT_IT, + MSG_CURRENT_ES, + MSG_CURRENT_PL, + MSG_CURRENT_DE +}; + +const char MSG_DATE_EN[] PROGMEM = "Date:"; +const char MSG_DATE_CZ[] PROGMEM = "Datum:"; +const char MSG_DATE_IT[] PROGMEM = "Data"; +const char MSG_DATE_ES[] PROGMEM = "Fecha:"; +const char MSG_DATE_PL[] PROGMEM = "Data:"; +const char MSG_DATE_DE[] PROGMEM = "Datum:"; +const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DATE_EN, + MSG_DATE_CZ, + MSG_DATE_IT, + MSG_DATE_ES, + MSG_DATE_PL, + MSG_DATE_DE +}; + +const char MSG_DEFAULT_SETTINGS_LOADED_EN[] PROGMEM = "Default settings loaded"; +const char MSG_DEFAULT_SETTINGS_LOADED_DE[] PROGMEM = "Standardeinstellungen geladen"; +const char * const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_EN, + MSG_DEFAULT_SETTINGS_LOADED_DE +}; + +const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers"; +const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory"; +const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori"; +const char MSG_DISABLE_STEPPERS_ES[] PROGMEM = "Apagar motores"; +const char MSG_DISABLE_STEPPERS_PL[] PROGMEM = "Wylaczyc silniki"; +const char MSG_DISABLE_STEPPERS_DE[] PROGMEM = "Motoren aus"; +const char * const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DISABLE_STEPPERS_EN, + MSG_DISABLE_STEPPERS_CZ, + MSG_DISABLE_STEPPERS_IT, + MSG_DISABLE_STEPPERS_ES, + MSG_DISABLE_STEPPERS_PL, + MSG_DISABLE_STEPPERS_DE +}; + +const char MSG_DWELL_EN[] PROGMEM = "Sleep..."; +const char MSG_DWELL_IT[] PROGMEM = "Sospensione..."; +const char MSG_DWELL_ES[] PROGMEM = "En espera"; +const char MSG_DWELL_DE[] PROGMEM = "Warten..."; +const char * const MSG_DWELL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_DWELL_EN, + MSG_DWELL_EN, + MSG_DWELL_IT, + MSG_DWELL_ES, + MSG_DWELL_EN, + MSG_DWELL_DE +}; + +const char MSG_ENDSTOPS_HIT_EN[] PROGMEM = "endstops hit: "; +const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOPS_HIT_EN +}; + +const char MSG_ENDSTOP_HIT_EN[] PROGMEM = "TRIGGERED"; +const char * const MSG_ENDSTOP_HIT_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOP_HIT_EN +}; + +const char MSG_ENDSTOP_OPEN_EN[] PROGMEM = "open"; +const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[1] PROGMEM = { + MSG_ENDSTOP_OPEN_EN +}; + +const char MSG_END_FILE_LIST_EN[] PROGMEM = "End file list"; +const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { + MSG_END_FILE_LIST_EN +}; + +const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; +const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; +const char MSG_ERROR_IT[] PROGMEM = "ERRORE:"; +const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; +const char MSG_ERROR_DE[] PROGMEM = "FEHLER:"; +const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_ERROR_EN, + MSG_ERROR_CZ, + MSG_ERROR_IT, + MSG_ERROR_EN, + MSG_ERROR_PL, + MSG_ERROR_DE +}; + +const char MSG_ERR_CHECKSUM_MISMATCH_EN[] PROGMEM = "checksum mismatch, Last Line: "; +const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1] PROGMEM = { + MSG_ERR_CHECKSUM_MISMATCH_EN +}; + +const char MSG_ERR_COLD_EXTRUDE_STOP_EN[] PROGMEM = " cold extrusion prevented"; +const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { + MSG_ERR_COLD_EXTRUDE_STOP_EN +}; + +const char MSG_ERR_KILLED_EN[] PROGMEM = "Printer halted. kill() called!"; +const char * const MSG_ERR_KILLED_LANG_TABLE[1] PROGMEM = { + MSG_ERR_KILLED_EN +}; + +const char MSG_ERR_LINE_NO_EN[] PROGMEM = "Line Number is not Last Line Number+1, Last Line: "; +const char * const MSG_ERR_LINE_NO_LANG_TABLE[1] PROGMEM = { + MSG_ERR_LINE_NO_EN +}; + +const char MSG_ERR_LONG_EXTRUDE_STOP_EN[] PROGMEM = " too long extrusion prevented"; +const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { + MSG_ERR_LONG_EXTRUDE_STOP_EN +}; + +const char MSG_ERR_NO_CHECKSUM_EN[] PROGMEM = "No Checksum with line number, Last Line: "; +const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_CHECKSUM_EN +}; + +const char MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN[] PROGMEM = "No Line Number with checksum, Last Line: "; +const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN +}; + +const char MSG_ERR_NO_THERMISTORS_EN[] PROGMEM = "No thermistors - no temperature"; +const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1] PROGMEM = { + MSG_ERR_NO_THERMISTORS_EN +}; + +const char MSG_ERR_STOPPED_EN[] PROGMEM = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; +const char * const MSG_ERR_STOPPED_LANG_TABLE[1] PROGMEM = { + MSG_ERR_STOPPED_EN +}; + +const char MSG_EXTERNAL_RESET_EN[] PROGMEM = " External Reset"; +const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = { + MSG_EXTERNAL_RESET_EN +}; + +const char MSG_EXTRUDER_EN[] PROGMEM = "Extruder"; +const char MSG_EXTRUDER_IT[] PROGMEM = "Estrusore"; +const char MSG_EXTRUDER_ES[] PROGMEM = "Extrusor"; +const char MSG_EXTRUDER_PL[] PROGMEM = "Ekstruder"; +const char * const MSG_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_EN, + MSG_EXTRUDER_EN, + MSG_EXTRUDER_IT, + MSG_EXTRUDER_ES, + MSG_EXTRUDER_PL, + MSG_EXTRUDER_EN +}; + +const char MSG_EXTRUDER_1_EN[] PROGMEM = "Extruder 1"; +const char MSG_EXTRUDER_1_IT[] PROGMEM = "Estrusore 1"; +const char MSG_EXTRUDER_1_ES[] PROGMEM = "Extrusor 1"; +const char MSG_EXTRUDER_1_PL[] PROGMEM = "Ekstruder 1"; +const char * const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_IT, + MSG_EXTRUDER_1_ES, + MSG_EXTRUDER_1_PL, + MSG_EXTRUDER_1_EN +}; + +const char MSG_EXTRUDER_2_EN[] PROGMEM = "Extruder 2"; +const char MSG_EXTRUDER_2_IT[] PROGMEM = "Estrusore 2"; +const char MSG_EXTRUDER_2_ES[] PROGMEM = "Extrusor 2"; +const char MSG_EXTRUDER_2_PL[] PROGMEM = "Ekstruder 2"; +const char * const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_IT, + MSG_EXTRUDER_2_ES, + MSG_EXTRUDER_2_PL, + MSG_EXTRUDER_2_EN +}; + +const char MSG_EXTRUDER_3_EN[] PROGMEM = "Extruder 3"; +const char MSG_EXTRUDER_3_IT[] PROGMEM = "Estrusore 3"; +const char MSG_EXTRUDER_3_ES[] PROGMEM = "Extrusor 3"; +const char MSG_EXTRUDER_3_PL[] PROGMEM = "Ekstruder 3"; +const char * const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_IT, + MSG_EXTRUDER_3_ES, + MSG_EXTRUDER_3_PL, + MSG_EXTRUDER_3_EN +}; + +const char MSG_EXTRUDER_4_EN[] PROGMEM = "Extruder 4"; +const char MSG_EXTRUDER_4_IT[] PROGMEM = "Estrusore 4"; +const char MSG_EXTRUDER_4_ES[] PROGMEM = "Extrusor 4"; +const char MSG_EXTRUDER_4_PL[] PROGMEM = "Ekstruder 4"; +const char * const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_IT, + MSG_EXTRUDER_4_ES, + MSG_EXTRUDER_4_PL, + MSG_EXTRUDER_4_EN +}; + +const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done."; +const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."; +const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."; +const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."; +const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."; +const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; +const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_E_CAL_KNOB_EN, + MSG_E_CAL_KNOB_CZ, + MSG_E_CAL_KNOB_IT, + MSG_E_CAL_KNOB_ES, + MSG_E_CAL_KNOB_PL, + MSG_E_CAL_KNOB_DE +}; + +const char MSG_Enqueing_EN[] PROGMEM = "enqueing \""; +const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = { + MSG_Enqueing_EN +}; + +const char MSG_FACTOR_EN[] PROGMEM = " \002 Fact"; +const char * const MSG_FACTOR_LANG_TABLE[1] PROGMEM = { + MSG_FACTOR_EN +}; + +const char MSG_FAN_SPEED_EN[] PROGMEM = "Fan speed"; +const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; +const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; +const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; +const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; +const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; +const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FAN_SPEED_EN, + MSG_FAN_SPEED_CZ, + MSG_FAN_SPEED_IT, + MSG_FAN_SPEED_ES, + MSG_FAN_SPEED_PL, + MSG_FAN_SPEED_DE +}; + +const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; +const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = { + MSG_FARM_CARD_MENU_EN +}; + +const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament"; +const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; +const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; +const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; +const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; +const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; +const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENTCHANGE_EN, + MSG_FILAMENTCHANGE_CZ, + MSG_FILAMENTCHANGE_IT, + MSG_FILAMENTCHANGE_ES, + MSG_FILAMENTCHANGE_PL, + MSG_FILAMENTCHANGE_DE +}; + +const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?"; +const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?"; +const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?"; +const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?"; +const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?"; +const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; +const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_CLEAN_EN, + MSG_FILAMENT_CLEAN_CZ, + MSG_FILAMENT_CLEAN_IT, + MSG_FILAMENT_CLEAN_ES, + MSG_FILAMENT_CLEAN_PL, + MSG_FILAMENT_CLEAN_DE +}; + +const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; +const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte filament do extruderu 1. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare."; +const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T0_DE[] PROGMEM = "Filament in extruder 1 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T0_EN, + MSG_FILAMENT_LOADING_T0_CZ, + MSG_FILAMENT_LOADING_T0_IT, + MSG_FILAMENT_LOADING_T0_ES, + MSG_FILAMENT_LOADING_T0_PL, + MSG_FILAMENT_LOADING_T0_DE +}; + +const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; +const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte filament do extruderu 2. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare."; +const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T1_DE[] PROGMEM = "Filament in extruder 2 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T1_EN, + MSG_FILAMENT_LOADING_T1_CZ, + MSG_FILAMENT_LOADING_T1_IT, + MSG_FILAMENT_LOADING_T1_ES, + MSG_FILAMENT_LOADING_T1_PL, + MSG_FILAMENT_LOADING_T1_DE +}; + +const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; +const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte filament do extruderu 3. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare."; +const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T2_DE[] PROGMEM = "Filament in extruder 3 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T2_EN, + MSG_FILAMENT_LOADING_T2_CZ, + MSG_FILAMENT_LOADING_T2_IT, + MSG_FILAMENT_LOADING_T2_ES, + MSG_FILAMENT_LOADING_T2_PL, + MSG_FILAMENT_LOADING_T2_DE +}; + +const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; +const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte filament do extruderu 4. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare."; +const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado."; +const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."; +const char MSG_FILAMENT_LOADING_T3_DE[] PROGMEM = "Filament in extruder 4 einlegen. Klicken wenn fertig."; +const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILAMENT_LOADING_T3_EN, + MSG_FILAMENT_LOADING_T3_CZ, + MSG_FILAMENT_LOADING_T3_IT, + MSG_FILAMENT_LOADING_T3_ES, + MSG_FILAMENT_LOADING_T3_PL, + MSG_FILAMENT_LOADING_T3_DE +}; + +const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; +const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { + MSG_FILE_PRINTED_EN +}; + +const char MSG_FILE_SAVED_EN[] PROGMEM = "Done saving file."; +const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = { + MSG_FILE_SAVED_EN +}; + +const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait."; +const char MSG_FIL_ADJUSTING_CZ[] PROGMEM = "Probiha srovnani filamentu. Prosim cekejte."; +const char MSG_FIL_ADJUSTING_IT[] PROGMEM = "Filamento in fase di regolazione. Attendere prego."; +const char MSG_FIL_ADJUSTING_ES[] PROGMEM = "Ajustando filamentos. Esperar por favor."; +const char MSG_FIL_ADJUSTING_PL[] PROGMEM = "Przebiega wyrownanie filamentow. Prosze czekac."; +const char MSG_FIL_ADJUSTING_DE[] PROGMEM = "Einstellen Filament. Bitte warten."; +const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIL_ADJUSTING_EN, + MSG_FIL_ADJUSTING_CZ, + MSG_FIL_ADJUSTING_IT, + MSG_FIL_ADJUSTING_ES, + MSG_FIL_ADJUSTING_PL, + MSG_FIL_ADJUSTING_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE[] PROGMEM = "Wiederholung "; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Searching bed calibration point"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Hledam kalibracni bod podlozky"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Ricerca del letto punto di calibraz."; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Buscando cama punto de calibracion"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Szukam punktu kalibracyjnego podkladki"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Suche Bett Kalibrierpunkt"; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE +}; + +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; +const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE +}; + +const char MSG_FINISHING_MOVEMENTS_EN[] PROGMEM = "Finishing movements"; +const char MSG_FINISHING_MOVEMENTS_CZ[] PROGMEM = "Dokoncovani pohybu"; +const char MSG_FINISHING_MOVEMENTS_IT[] PROGMEM = "Arresto in corso"; +const char MSG_FINISHING_MOVEMENTS_ES[] PROGMEM = "Term. movimientos"; +const char MSG_FINISHING_MOVEMENTS_PL[] PROGMEM = "Konczenie druku"; +const char MSG_FINISHING_MOVEMENTS_DE[] PROGMEM = "Bewegungen beenden"; +const char * const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FINISHING_MOVEMENTS_EN, + MSG_FINISHING_MOVEMENTS_CZ, + MSG_FINISHING_MOVEMENTS_IT, + MSG_FINISHING_MOVEMENTS_ES, + MSG_FINISHING_MOVEMENTS_PL, + MSG_FINISHING_MOVEMENTS_DE +}; + +const char MSG_FLOW_EN[] PROGMEM = "Flow"; +const char MSG_FLOW_CZ[] PROGMEM = "Prutok"; +const char MSG_FLOW_IT[] PROGMEM = "Flusso"; +const char MSG_FLOW_ES[] PROGMEM = "Flujo"; +const char MSG_FLOW_PL[] PROGMEM = "Przeplyw"; +const char MSG_FLOW_DE[] PROGMEM = "Durchfluss"; +const char * const MSG_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FLOW_EN, + MSG_FLOW_CZ, + MSG_FLOW_IT, + MSG_FLOW_ES, + MSG_FLOW_PL, + MSG_FLOW_DE +}; + +const char MSG_FLOW0_EN[] PROGMEM = "Flow 0"; +const char * const MSG_FLOW0_LANG_TABLE[1] PROGMEM = { + MSG_FLOW0_EN +}; + +const char MSG_FLOW1_EN[] PROGMEM = "Flow 1"; +const char * const MSG_FLOW1_LANG_TABLE[1] PROGMEM = { + MSG_FLOW1_EN +}; + +const char MSG_FLOW2_EN[] PROGMEM = "Flow 2"; +const char * const MSG_FLOW2_LANG_TABLE[1] PROGMEM = { + MSG_FLOW2_EN +}; + +const char MSG_FOLLOW_CALIBRATION_FLOW_EN[] PROGMEM = "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_CZ[] PROGMEM = "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."; +const char MSG_FOLLOW_CALIBRATION_FLOW_IT[] PROGMEM = "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."; +const char MSG_FOLLOW_CALIBRATION_FLOW_ES[] PROGMEM = "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_PL[] PROGMEM = "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."; +const char MSG_FOLLOW_CALIBRATION_FLOW_DE[] PROGMEM = "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow."; +const char * const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FOLLOW_CALIBRATION_FLOW_EN, + MSG_FOLLOW_CALIBRATION_FLOW_CZ, + MSG_FOLLOW_CALIBRATION_FLOW_IT, + MSG_FOLLOW_CALIBRATION_FLOW_ES, + MSG_FOLLOW_CALIBRATION_FLOW_PL, + MSG_FOLLOW_CALIBRATION_FLOW_DE +}; + +const char MSG_FREE_MEMORY_EN[] PROGMEM = " Free Memory: "; +const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { + MSG_FREE_MEMORY_EN +}; + +const char MSG_HEATING_EN[] PROGMEM = "Heating"; +const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; +const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; +const char MSG_HEATING_ES[] PROGMEM = "Calentando..."; +const char MSG_HEATING_PL[] PROGMEM = "Grzanie..."; +const char MSG_HEATING_DE[] PROGMEM = "Aufwaermen"; +const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HEATING_EN, + MSG_HEATING_CZ, + MSG_HEATING_IT, + MSG_HEATING_ES, + MSG_HEATING_PL, + MSG_HEATING_DE +}; + +const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; +const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; +const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo"; +const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentamiento final."; +const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; +const char MSG_HEATING_COMPLETE_DE[] PROGMEM = "Aufwaermen OK"; +const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HEATING_COMPLETE_EN, + MSG_HEATING_COMPLETE_CZ, + MSG_HEATING_COMPLETE_IT, + MSG_HEATING_COMPLETE_ES, + MSG_HEATING_COMPLETE_PL, + MSG_HEATING_COMPLETE_DE +}; + +const char MSG_HOMEYZ_EN[] PROGMEM = "Calibrate Z"; +const char MSG_HOMEYZ_CZ[] PROGMEM = "Kalibrovat Z"; +const char MSG_HOMEYZ_IT[] PROGMEM = "Calibra Z"; +const char MSG_HOMEYZ_ES[] PROGMEM = "Calibrar Z"; +const char MSG_HOMEYZ_PL[] PROGMEM = "Kalibruj Z"; +const char MSG_HOMEYZ_DE[] PROGMEM = "Kalibrieren Z"; +const char * const MSG_HOMEYZ_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_EN, + MSG_HOMEYZ_CZ, + MSG_HOMEYZ_IT, + MSG_HOMEYZ_ES, + MSG_HOMEYZ_PL, + MSG_HOMEYZ_DE +}; + +const char MSG_HOMEYZ_DONE_EN[] PROGMEM = "Calibration done"; +const char MSG_HOMEYZ_DONE_CZ[] PROGMEM = "Kalibrace OK"; +const char MSG_HOMEYZ_DONE_IT[] PROGMEM = "Calibrazione OK"; +const char MSG_HOMEYZ_DONE_ES[] PROGMEM = "Calibracion OK"; +const char MSG_HOMEYZ_DONE_PL[] PROGMEM = "Kalibracja OK"; +const char MSG_HOMEYZ_DONE_DE[] PROGMEM = "Kalibrierung OK"; +const char * const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_DONE_EN, + MSG_HOMEYZ_DONE_CZ, + MSG_HOMEYZ_DONE_IT, + MSG_HOMEYZ_DONE_ES, + MSG_HOMEYZ_DONE_PL, + MSG_HOMEYZ_DONE_DE +}; + +const char MSG_HOMEYZ_PROGRESS_EN[] PROGMEM = "Calibrating Z"; +const char MSG_HOMEYZ_PROGRESS_CZ[] PROGMEM = "Kalibruji Z"; +const char MSG_HOMEYZ_PROGRESS_IT[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_ES[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_PL[] PROGMEM = "Kalibruje Z"; +const char MSG_HOMEYZ_PROGRESS_DE[] PROGMEM = "Kalibriere Z"; +const char * const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_HOMEYZ_PROGRESS_EN, + MSG_HOMEYZ_PROGRESS_CZ, + MSG_HOMEYZ_PROGRESS_IT, + MSG_HOMEYZ_PROGRESS_ES, + MSG_HOMEYZ_PROGRESS_PL, + MSG_HOMEYZ_PROGRESS_DE +}; + +const char MSG_HOTEND_OFFSET_EN[] PROGMEM = "Hotend offsets:"; +const char * const MSG_HOTEND_OFFSET_LANG_TABLE[1] PROGMEM = { + MSG_HOTEND_OFFSET_EN +}; + +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Improving bed calibration point"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Zlepsuji presnost kalibracniho bodu"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Perfezion. il letto punto di calibraz."; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Mejorando cama punto de calibracion"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Poprawiam precyzyjnosc punktu kalibracyjnego"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Genauigkeit verbessern bei Kalibrierpunkt"; +const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE +}; + +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 9"; +const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE +}; + +const char MSG_INIT_SDCARD_EN[] PROGMEM = "Init. SD card"; +const char * const MSG_INIT_SDCARD_LANG_TABLE[1] PROGMEM = { + MSG_INIT_SDCARD_EN +}; + +const char MSG_INSERT_FILAMENT_EN[] PROGMEM = "Insert filament"; +const char MSG_INSERT_FILAMENT_CZ[] PROGMEM = "Vlozte filament"; +const char MSG_INSERT_FILAMENT_IT[] PROGMEM = "Inserire filamento"; +const char MSG_INSERT_FILAMENT_ES[] PROGMEM = "Introducir filamento"; +const char MSG_INSERT_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_INSERT_FILAMENT_DE[] PROGMEM = "Filament einlegen"; +const char * const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_INSERT_FILAMENT_EN, + MSG_INSERT_FILAMENT_CZ, + MSG_INSERT_FILAMENT_IT, + MSG_INSERT_FILAMENT_ES, + MSG_INSERT_FILAMENT_PL, + MSG_INSERT_FILAMENT_DE +}; + +const char MSG_INVALID_EXTRUDER_EN[] PROGMEM = "Invalid extruder"; +const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_INVALID_EXTRUDER_EN +}; + +const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; +const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; +const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; +const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; +const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_KILLED_EN, + MSG_KILLED_EN, + MSG_KILLED_IT, + MSG_KILLED_ES, + MSG_KILLED_EN, + MSG_KILLED_DE +}; + +const char MSG_LANGUAGE_NAME_EN[] PROGMEM = "English"; +const char MSG_LANGUAGE_NAME_CZ[] PROGMEM = "Cestina"; +const char MSG_LANGUAGE_NAME_IT[] PROGMEM = "Italiano"; +const char MSG_LANGUAGE_NAME_ES[] PROGMEM = "Espanol"; +const char MSG_LANGUAGE_NAME_PL[] PROGMEM = "Polski"; +const char MSG_LANGUAGE_NAME_DE[] PROGMEM = "Deutsch"; +const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LANGUAGE_NAME_EN, + MSG_LANGUAGE_NAME_CZ, + MSG_LANGUAGE_NAME_IT, + MSG_LANGUAGE_NAME_ES, + MSG_LANGUAGE_NAME_PL, + MSG_LANGUAGE_NAME_DE +}; + +const char MSG_LANGUAGE_SELECT_EN[] PROGMEM = "Select language"; +const char MSG_LANGUAGE_SELECT_CZ[] PROGMEM = "Vyber jazyka"; +const char MSG_LANGUAGE_SELECT_IT[] PROGMEM = "Seleziona lingua"; +const char MSG_LANGUAGE_SELECT_ES[] PROGMEM = "Cambiae el idioma"; +const char MSG_LANGUAGE_SELECT_PL[] PROGMEM = "Wybor jezyka"; +const char MSG_LANGUAGE_SELECT_DE[] PROGMEM = "Waehle Sprache"; +const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LANGUAGE_SELECT_EN, + MSG_LANGUAGE_SELECT_CZ, + MSG_LANGUAGE_SELECT_IT, + MSG_LANGUAGE_SELECT_ES, + MSG_LANGUAGE_SELECT_PL, + MSG_LANGUAGE_SELECT_DE +}; + +const char MSG_LEFT_EN[] PROGMEM = "Left:"; +const char MSG_LEFT_CZ[] PROGMEM = "Levy:"; +const char MSG_LEFT_IT[] PROGMEM = "Sinistra:"; +const char MSG_LEFT_ES[] PROGMEM = "Izquierda:"; +const char MSG_LEFT_PL[] PROGMEM = "Lewy:"; +const char MSG_LEFT_DE[] PROGMEM = "Links:"; +const char * const MSG_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LEFT_EN, + MSG_LEFT_CZ, + MSG_LEFT_IT, + MSG_LEFT_ES, + MSG_LEFT_PL, + MSG_LEFT_DE +}; + +const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; +const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; +const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore"; +const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cambiando color"; +const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; +const char MSG_LOADING_COLOR_DE[] PROGMEM = "Lade Farbe"; +const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOADING_COLOR_EN, + MSG_LOADING_COLOR_CZ, + MSG_LOADING_COLOR_IT, + MSG_LOADING_COLOR_ES, + MSG_LOADING_COLOR_PL, + MSG_LOADING_COLOR_DE +}; + +const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; +const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; +const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; +const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; +const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; +const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament laedt"; +const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOADING_FILAMENT_EN, + MSG_LOADING_FILAMENT_CZ, + MSG_LOADING_FILAMENT_IT, + MSG_LOADING_FILAMENT_ES, + MSG_LOADING_FILAMENT_PL, + MSG_LOADING_FILAMENT_DE +}; + +const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; +const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; +const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; +const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; +const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; +const char MSG_LOAD_ALL_DE[] PROGMEM = "Alle laden"; +const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_ALL_EN, + MSG_LOAD_ALL_CZ, + MSG_LOAD_ALL_IT, + MSG_LOAD_ALL_ES, + MSG_LOAD_ALL_PL, + MSG_LOAD_ALL_DE +}; + +const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; +const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { + MSG_LOAD_EPROM_EN +}; + +const char MSG_LOAD_FILAMENT_EN[] PROGMEM = "Load filament"; +const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; +const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; +const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; +const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; +const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_EN, + MSG_LOAD_FILAMENT_CZ, + MSG_LOAD_FILAMENT_IT, + MSG_LOAD_FILAMENT_ES, + MSG_LOAD_FILAMENT_PL, + MSG_LOAD_FILAMENT_DE +}; + +const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; +const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; +const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; +const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; +const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; +const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Filament 1 laden"; +const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_1_EN, + MSG_LOAD_FILAMENT_1_CZ, + MSG_LOAD_FILAMENT_1_IT, + MSG_LOAD_FILAMENT_1_ES, + MSG_LOAD_FILAMENT_1_PL, + MSG_LOAD_FILAMENT_1_DE +}; + +const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; +const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; +const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; +const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; +const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; +const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Filament 2 laden"; +const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_2_EN, + MSG_LOAD_FILAMENT_2_CZ, + MSG_LOAD_FILAMENT_2_IT, + MSG_LOAD_FILAMENT_2_ES, + MSG_LOAD_FILAMENT_2_PL, + MSG_LOAD_FILAMENT_2_DE +}; + +const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; +const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; +const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; +const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; +const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; +const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Filament 3 laden"; +const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_3_EN, + MSG_LOAD_FILAMENT_3_CZ, + MSG_LOAD_FILAMENT_3_IT, + MSG_LOAD_FILAMENT_3_ES, + MSG_LOAD_FILAMENT_3_PL, + MSG_LOAD_FILAMENT_3_DE +}; + +const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; +const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; +const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; +const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; +const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; +const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Filament 4 laden"; +const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_4_EN, + MSG_LOAD_FILAMENT_4_CZ, + MSG_LOAD_FILAMENT_4_IT, + MSG_LOAD_FILAMENT_4_ES, + MSG_LOAD_FILAMENT_4_PL, + MSG_LOAD_FILAMENT_4_DE +}; + +const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; +const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka"; +const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta"; +const char MSG_LOOSE_PULLEY_ES[] PROGMEM = "Polea suelta"; +const char MSG_LOOSE_PULLEY_PL[] PROGMEM = "Kolo pasowe"; +const char MSG_LOOSE_PULLEY_DE[] PROGMEM = "Loser pulley"; +const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOOSE_PULLEY_EN, + MSG_LOOSE_PULLEY_CZ, + MSG_LOOSE_PULLEY_IT, + MSG_LOOSE_PULLEY_ES, + MSG_LOOSE_PULLEY_PL, + MSG_LOOSE_PULLEY_DE +}; + +const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder "; +const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M104_INVALID_EXTRUDER_EN +}; + +const char MSG_M105_INVALID_EXTRUDER_EN[] PROGMEM = "M105 Invalid extruder "; +const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M105_INVALID_EXTRUDER_EN +}; + +const char MSG_M109_INVALID_EXTRUDER_EN[] PROGMEM = "M109 Invalid extruder "; +const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M109_INVALID_EXTRUDER_EN +}; + +const char MSG_M115_REPORT_EN[] PROGMEM = "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/prusa3d/Prusa-i3-Plus/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000\n"; +const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { + MSG_M115_REPORT_EN +}; + +const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; +const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { + MSG_M119_REPORT_EN +}; + +const char MSG_M200_INVALID_EXTRUDER_EN[] PROGMEM = "M200 Invalid extruder "; +const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M200_INVALID_EXTRUDER_EN +}; + +const char MSG_M218_INVALID_EXTRUDER_EN[] PROGMEM = "M218 Invalid extruder "; +const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M218_INVALID_EXTRUDER_EN +}; + +const char MSG_M221_INVALID_EXTRUDER_EN[] PROGMEM = "M221 Invalid extruder "; +const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { + MSG_M221_INVALID_EXTRUDER_EN +}; + +const char MSG_MAIN_EN[] PROGMEM = "Main"; +const char MSG_MAIN_CZ[] PROGMEM = "Hlavni nabidka"; +const char MSG_MAIN_IT[] PROGMEM = "Menu principale"; +const char MSG_MAIN_ES[] PROGMEM = "Menu principal"; +const char MSG_MAIN_PL[] PROGMEM = "Menu glowne"; +const char MSG_MAIN_DE[] PROGMEM = "Hauptmenue"; +const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MAIN_EN, + MSG_MAIN_CZ, + MSG_MAIN_IT, + MSG_MAIN_ES, + MSG_MAIN_PL, + MSG_MAIN_DE +}; + +const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; +const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."; +const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; +const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; +const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; +const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; +const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MARK_FIL_EN, + MSG_MARK_FIL_CZ, + MSG_MARK_FIL_IT, + MSG_MARK_FIL_ES, + MSG_MARK_FIL_PL, + MSG_MARK_FIL_DE +}; + +const char MSG_MAX_EN[] PROGMEM = " \002 Max"; +const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { + MSG_MAX_EN +}; + +const char MSG_MEASURED_SKEW_EN[] PROGMEM = "Measured skew:"; +const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:"; +const char MSG_MEASURED_SKEW_IT[] PROGMEM = "Incl. misurata:"; +const char MSG_MEASURED_SKEW_ES[] PROGMEM = "Inclin. medida:"; +const char MSG_MEASURED_SKEW_PL[] PROGMEM = "Zmier. sciecie:"; +const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Symmetrie:"; +const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURED_SKEW_EN, + MSG_MEASURED_SKEW_CZ, + MSG_MEASURED_SKEW_IT, + MSG_MEASURED_SKEW_ES, + MSG_MEASURED_SKEW_PL, + MSG_MEASURED_SKEW_DE +}; + +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN[] PROGMEM = "Measuring reference height of calibration point"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ[] PROGMEM = "Merim referencni vysku kalibracniho bodu"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT[] PROGMEM = "Misurare l'altezza di riferimento del punto di calibrazione"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES[] PROGMEM = "Medir la altura del punto de la calibracion"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL[] PROGMEM = "Okreslam wysokosc odniesienia punktu kalibracyjnego"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE[] PROGMEM = "Messen der Referenzhoehe des Kalibrierpunktes"; +const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE +}; + +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT[] PROGMEM = " su 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES[] PROGMEM = " de 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE[] PROGMEM = " von 9"; +const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE +}; + +const char MSG_MENU_CALIBRATION_EN[] PROGMEM = "Calibration"; +const char MSG_MENU_CALIBRATION_CZ[] PROGMEM = "Kalibrace"; +const char MSG_MENU_CALIBRATION_IT[] PROGMEM = "Calibrazione"; +const char MSG_MENU_CALIBRATION_ES[] PROGMEM = "Calibracion"; +const char MSG_MENU_CALIBRATION_PL[] PROGMEM = "Kalibracja"; +const char MSG_MENU_CALIBRATION_DE[] PROGMEM = "Kalibrierung"; +const char * const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MENU_CALIBRATION_EN, + MSG_MENU_CALIBRATION_CZ, + MSG_MENU_CALIBRATION_IT, + MSG_MENU_CALIBRATION_ES, + MSG_MENU_CALIBRATION_PL, + MSG_MENU_CALIBRATION_DE +}; + +const char MSG_MESH_BED_LEVELING_EN[] PROGMEM = "Mesh Bed Leveling"; +const char MSG_MESH_BED_LEVELING_IT[] PROGMEM = "Mesh livel. letto"; +const char * const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_IT, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN +}; + +const char MSG_MIN_EN[] PROGMEM = " \002 Min"; +const char * const MSG_MIN_LANG_TABLE[1] PROGMEM = { + MSG_MIN_EN +}; + +const char MSG_MOTION_EN[] PROGMEM = "Motion"; +const char * const MSG_MOTION_LANG_TABLE[1] PROGMEM = { + MSG_MOTION_EN +}; + +const char MSG_MOVE_01MM_EN[] PROGMEM = "Move 0.1mm"; +const char * const MSG_MOVE_01MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_01MM_EN +}; + +const char MSG_MOVE_10MM_EN[] PROGMEM = "Move 10mm"; +const char * const MSG_MOVE_10MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_10MM_EN +}; + +const char MSG_MOVE_1MM_EN[] PROGMEM = "Move 1mm"; +const char * const MSG_MOVE_1MM_LANG_TABLE[1] PROGMEM = { + MSG_MOVE_1MM_EN +}; + +const char MSG_MOVE_AXIS_EN[] PROGMEM = "Move axis"; +const char MSG_MOVE_AXIS_CZ[] PROGMEM = "Posunout osu"; +const char MSG_MOVE_AXIS_IT[] PROGMEM = "Muovi asse"; +const char MSG_MOVE_AXIS_ES[] PROGMEM = "Mover ejes"; +const char MSG_MOVE_AXIS_PL[] PROGMEM = "Ruch osi"; +const char MSG_MOVE_AXIS_DE[] PROGMEM = "Bewege Achse"; +const char * const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_AXIS_EN, + MSG_MOVE_AXIS_CZ, + MSG_MOVE_AXIS_IT, + MSG_MOVE_AXIS_ES, + MSG_MOVE_AXIS_PL, + MSG_MOVE_AXIS_DE +}; + +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_EN[] PROGMEM = "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; +const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_DE +}; + +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN[] PROGMEM = "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; +const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE +}; + +const char MSG_MOVE_E_EN[] PROGMEM = "Extruder"; +const char MSG_MOVE_E_IT[] PROGMEM = "Muovi Estrusore"; +const char MSG_MOVE_E_ES[] PROGMEM = "Extruir"; +const char * const MSG_MOVE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_E_EN, + MSG_MOVE_E_EN, + MSG_MOVE_E_IT, + MSG_MOVE_E_ES, + MSG_MOVE_E_EN, + MSG_MOVE_E_EN +}; + +const char MSG_MOVE_X_EN[] PROGMEM = "Move X"; +const char MSG_MOVE_X_CZ[] PROGMEM = "Posunout X"; +const char MSG_MOVE_X_IT[] PROGMEM = "Muovi X"; +const char MSG_MOVE_X_ES[] PROGMEM = "Mover X"; +const char MSG_MOVE_X_PL[] PROGMEM = "Przesunac X"; +const char MSG_MOVE_X_DE[] PROGMEM = "Bewege X"; +const char * const MSG_MOVE_X_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_X_EN, + MSG_MOVE_X_CZ, + MSG_MOVE_X_IT, + MSG_MOVE_X_ES, + MSG_MOVE_X_PL, + MSG_MOVE_X_DE +}; + +const char MSG_MOVE_Y_EN[] PROGMEM = "Move Y"; +const char MSG_MOVE_Y_CZ[] PROGMEM = "Posunout Y"; +const char MSG_MOVE_Y_IT[] PROGMEM = "Muovi Y"; +const char MSG_MOVE_Y_ES[] PROGMEM = "Mover Y"; +const char MSG_MOVE_Y_PL[] PROGMEM = "Przesunac Y"; +const char MSG_MOVE_Y_DE[] PROGMEM = "Bewege Y"; +const char * const MSG_MOVE_Y_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_Y_EN, + MSG_MOVE_Y_CZ, + MSG_MOVE_Y_IT, + MSG_MOVE_Y_ES, + MSG_MOVE_Y_PL, + MSG_MOVE_Y_DE +}; + +const char MSG_MOVE_Z_EN[] PROGMEM = "Move Z"; +const char MSG_MOVE_Z_CZ[] PROGMEM = "Posunout Z"; +const char MSG_MOVE_Z_IT[] PROGMEM = "Muovi Z"; +const char MSG_MOVE_Z_ES[] PROGMEM = "Mover Z"; +const char MSG_MOVE_Z_PL[] PROGMEM = "Przesunac Z"; +const char MSG_MOVE_Z_DE[] PROGMEM = "Bewege Z"; +const char * const MSG_MOVE_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_Z_EN, + MSG_MOVE_Z_CZ, + MSG_MOVE_Z_IT, + MSG_MOVE_Z_ES, + MSG_MOVE_Z_PL, + MSG_MOVE_Z_DE +}; + +const char MSG_NEW_FIRMWARE_AVAILABLE_EN[] PROGMEM = "New firmware version available:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_CZ[] PROGMEM = "Vysla nova verze firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_IT[] PROGMEM = "Nuova versione del firmware disponibile"; +const char MSG_NEW_FIRMWARE_AVAILABLE_ES[] PROGMEM = "Nuevo firmware disponible:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_PL[] PROGMEM = "Wyszla nowa wersja firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_DE[] PROGMEM = "Neue Firmware Version verfuegbar:"; +const char * const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NEW_FIRMWARE_AVAILABLE_EN, + MSG_NEW_FIRMWARE_AVAILABLE_CZ, + MSG_NEW_FIRMWARE_AVAILABLE_IT, + MSG_NEW_FIRMWARE_AVAILABLE_ES, + MSG_NEW_FIRMWARE_AVAILABLE_PL, + MSG_NEW_FIRMWARE_AVAILABLE_DE +}; + +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN[] PROGMEM = "Please upgrade."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ[] PROGMEM = "Prosim aktualizujte."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT[] PROGMEM = "Prega aggiorna."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES[] PROGMEM = "Actualizar por favor"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL[] PROGMEM = "Prosze zaktualizowac"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE[] PROGMEM = "Bitte aktualisieren."; +const char * const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE +}; + +const char MSG_NO_EN[] PROGMEM = "No"; +const char MSG_NO_CZ[] PROGMEM = "Ne"; +const char MSG_NO_PL[] PROGMEM = "Nie"; +const char MSG_NO_DE[] PROGMEM = "Nein"; +const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_EN, + MSG_NO_CZ, + MSG_NO_EN, + MSG_NO_EN, + MSG_NO_PL, + MSG_NO_DE +}; + +const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; +const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; +const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro"; +const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no homogeneo"; +const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; +const char MSG_NOT_COLOR_DE[] PROGMEM = "Farbe nicht klar."; +const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOT_COLOR_EN, + MSG_NOT_COLOR_CZ, + MSG_NOT_COLOR_IT, + MSG_NOT_COLOR_ES, + MSG_NOT_COLOR_PL, + MSG_NOT_COLOR_DE +}; + +const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; +const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; +const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato"; +const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no introducido"; +const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; +const char MSG_NOT_LOADED_DE[] PROGMEM = "Fil. nicht geladen"; +const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOT_LOADED_EN, + MSG_NOT_LOADED_CZ, + MSG_NOT_LOADED_IT, + MSG_NOT_LOADED_ES, + MSG_NOT_LOADED_PL, + MSG_NOT_LOADED_DE +}; + +const char MSG_NOZZLE_EN[] PROGMEM = "Nozzle"; +const char MSG_NOZZLE_CZ[] PROGMEM = "Tryska"; +const char MSG_NOZZLE_IT[] PROGMEM = "Ugello"; +const char MSG_NOZZLE_ES[] PROGMEM = "Boquilla"; +const char MSG_NOZZLE_PL[] PROGMEM = "Dysza"; +const char MSG_NOZZLE_DE[] PROGMEM = "Duese"; +const char * const MSG_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NOZZLE_EN, + MSG_NOZZLE_CZ, + MSG_NOZZLE_IT, + MSG_NOZZLE_ES, + MSG_NOZZLE_PL, + MSG_NOZZLE_DE +}; + +const char MSG_NOZZLE1_EN[] PROGMEM = "Nozzle2"; +const char * const MSG_NOZZLE1_LANG_TABLE[1] PROGMEM = { + MSG_NOZZLE1_EN +}; + +const char MSG_NOZZLE2_EN[] PROGMEM = "Nozzle3"; +const char * const MSG_NOZZLE2_LANG_TABLE[1] PROGMEM = { + MSG_NOZZLE2_EN +}; + +const char MSG_NO_CARD_EN[] PROGMEM = "No SD card"; +const char MSG_NO_CARD_CZ[] PROGMEM = "Zadna SD karta"; +const char MSG_NO_CARD_IT[] PROGMEM = "Nessuna SD"; +const char MSG_NO_CARD_ES[] PROGMEM = "No hay tarjeta SD"; +const char MSG_NO_CARD_PL[] PROGMEM = "Brak karty SD"; +const char MSG_NO_CARD_DE[] PROGMEM = "Keine SD Karte"; +const char * const MSG_NO_CARD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_CARD_EN, + MSG_NO_CARD_CZ, + MSG_NO_CARD_IT, + MSG_NO_CARD_ES, + MSG_NO_CARD_PL, + MSG_NO_CARD_DE +}; + +const char MSG_NO_MOVE_EN[] PROGMEM = "No move."; +const char MSG_NO_MOVE_IT[] PROGMEM = "Nessun movimento."; +const char MSG_NO_MOVE_ES[] PROGMEM = "Sin movimiento"; +const char MSG_NO_MOVE_DE[] PROGMEM = "Keine Bewegung."; +const char * const MSG_NO_MOVE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_NO_MOVE_EN, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_IT, + MSG_NO_MOVE_ES, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_DE +}; + +const char MSG_OFF_EN[] PROGMEM = "Off"; +const char * const MSG_OFF_LANG_TABLE[1] PROGMEM = { + MSG_OFF_EN +}; + +const char MSG_OK_EN[] PROGMEM = "ok"; +const char * const MSG_OK_LANG_TABLE[1] PROGMEM = { + MSG_OK_EN +}; + +const char MSG_ON_EN[] PROGMEM = "On "; +const char * const MSG_ON_LANG_TABLE[1] PROGMEM = { + MSG_ON_EN +}; + +const char MSG_PAPER_EN[] PROGMEM = "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."; +const char MSG_PAPER_CZ[] PROGMEM = "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."; +const char MSG_PAPER_IT[] PROGMEM = "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."; +const char MSG_PAPER_ES[] PROGMEM = "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."; +const char MSG_PAPER_PL[] PROGMEM = "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."; +const char MSG_PAPER_DE[] PROGMEM = "Lege waehrend der Kalibrierung der ersten 4 Punkte ein Blatt Papier unter die Duese. Wenn die Duese das Papier bewegt, Drucker sofort ausschalten!"; +const char * const MSG_PAPER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PAPER_EN, + MSG_PAPER_CZ, + MSG_PAPER_IT, + MSG_PAPER_ES, + MSG_PAPER_PL, + MSG_PAPER_DE +}; + +const char MSG_PAUSE_PRINT_EN[] PROGMEM = "Pause print"; +const char MSG_PAUSE_PRINT_CZ[] PROGMEM = "Pozastavit tisk"; +const char MSG_PAUSE_PRINT_IT[] PROGMEM = "Metti in pausa"; +const char MSG_PAUSE_PRINT_ES[] PROGMEM = "Pausar impresion"; +const char MSG_PAUSE_PRINT_PL[] PROGMEM = "Przerwac druk"; +const char MSG_PAUSE_PRINT_DE[] PROGMEM = "Pause"; +const char * const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PAUSE_PRINT_EN, + MSG_PAUSE_PRINT_CZ, + MSG_PAUSE_PRINT_IT, + MSG_PAUSE_PRINT_ES, + MSG_PAUSE_PRINT_PL, + MSG_PAUSE_PRINT_DE +}; + +const char MSG_PICK_Z_EN[] PROGMEM = "Pick print"; +const char MSG_PICK_Z_CZ[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_ES[] PROGMEM = "Esc. Modelo Adecuado"; +const char MSG_PICK_Z_PL[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_DE[] PROGMEM = "Waehle Druck"; +const char * const MSG_PICK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PICK_Z_EN, + MSG_PICK_Z_CZ, + MSG_PICK_Z_EN, + MSG_PICK_Z_ES, + MSG_PICK_Z_PL, + MSG_PICK_Z_DE +}; + +const char MSG_PID_EXTRUDER_EN[] PROGMEM = "PID calibration"; +const char MSG_PID_EXTRUDER_CZ[] PROGMEM = "PID kalibrace"; +const char MSG_PID_EXTRUDER_IT[] PROGMEM = "Calibrazione PID"; +const char MSG_PID_EXTRUDER_ES[] PROGMEM = "Calibracion PID"; +const char MSG_PID_EXTRUDER_PL[] PROGMEM = "Kalibracja PID"; +const char MSG_PID_EXTRUDER_DE[] PROGMEM = "PID Kalibrierung"; +const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_EXTRUDER_EN, + MSG_PID_EXTRUDER_CZ, + MSG_PID_EXTRUDER_IT, + MSG_PID_EXTRUDER_ES, + MSG_PID_EXTRUDER_PL, + MSG_PID_EXTRUDER_DE +}; + +const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished "; +const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; +const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; +const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; +const char MSG_PID_FINISHED_PL[] PROGMEM = "Kal. PID zakonczona"; +const char MSG_PID_FINISHED_DE[] PROGMEM = "PID Kal. fertig "; +const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_FINISHED_EN, + MSG_PID_FINISHED_CZ, + MSG_PID_FINISHED_IT, + MSG_PID_FINISHED_ES, + MSG_PID_FINISHED_PL, + MSG_PID_FINISHED_DE +}; + +const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; +const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; +const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; +const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; +const char MSG_PID_RUNNING_PL[] PROGMEM = "Kal. PID"; +const char MSG_PID_RUNNING_DE[] PROGMEM = "PID Kal. "; +const char * const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PID_RUNNING_EN, + MSG_PID_RUNNING_CZ, + MSG_PID_RUNNING_IT, + MSG_PID_RUNNING_ES, + MSG_PID_RUNNING_PL, + MSG_PID_RUNNING_DE +}; + +const char MSG_PINDA_NOT_CALIBRATED_EN[] PROGMEM = "Temperature calibration has not been run yet"; +const char MSG_PINDA_NOT_CALIBRATED_CZ[] PROGMEM = "Tiskarna nebyla teplotne zkalibrovana"; +const char MSG_PINDA_NOT_CALIBRATED_IT[] PROGMEM = "Taratura della temperatura non ancora eseguita"; +const char MSG_PINDA_NOT_CALIBRATED_ES[] PROGMEM = "La temperatura de calibracion no ha sido ajustada"; +const char MSG_PINDA_NOT_CALIBRATED_PL[] PROGMEM = "Cieplna kalibracja nie byla przeprowadzona"; +const char MSG_PINDA_NOT_CALIBRATED_DE[] PROGMEM = "PINDA Temperatur Kalibrierung wurde noch nicht ausgefuehrt"; +const char * const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PINDA_NOT_CALIBRATED_EN, + MSG_PINDA_NOT_CALIBRATED_CZ, + MSG_PINDA_NOT_CALIBRATED_IT, + MSG_PINDA_NOT_CALIBRATED_ES, + MSG_PINDA_NOT_CALIBRATED_PL, + MSG_PINDA_NOT_CALIBRATED_DE +}; + +const char MSG_PINDA_PREHEAT_EN[] PROGMEM = "PINDA Heating"; +const char MSG_PINDA_PREHEAT_CZ[] PROGMEM = "Nahrivani PINDA"; +const char MSG_PINDA_PREHEAT_IT[] PROGMEM = "Riscald. PINDA"; +const char MSG_PINDA_PREHEAT_ES[] PROGMEM = "Calentando PINDA"; +const char MSG_PINDA_PREHEAT_PL[] PROGMEM = "Grzanie PINDA"; +const char MSG_PINDA_PREHEAT_DE[] PROGMEM = "PINDA erwaermen"; +const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PINDA_PREHEAT_EN, + MSG_PINDA_PREHEAT_CZ, + MSG_PINDA_PREHEAT_IT, + MSG_PINDA_PREHEAT_ES, + MSG_PINDA_PREHEAT_PL, + MSG_PINDA_PREHEAT_DE +}; + +const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; +const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { + MSG_PLANNER_BUFFER_BYTES_EN +}; + +const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; +const char MSG_PLEASE_WAIT_CZ[] PROGMEM = "Prosim cekejte"; +const char MSG_PLEASE_WAIT_IT[] PROGMEM = "Aspetta"; +const char MSG_PLEASE_WAIT_ES[] PROGMEM = "Por Favor Esperar"; +const char MSG_PLEASE_WAIT_PL[] PROGMEM = "Prosze czekac"; +const char MSG_PLEASE_WAIT_DE[] PROGMEM = "Bitte warten"; +const char * const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLEASE_WAIT_EN, + MSG_PLEASE_WAIT_CZ, + MSG_PLEASE_WAIT_IT, + MSG_PLEASE_WAIT_ES, + MSG_PLEASE_WAIT_PL, + MSG_PLEASE_WAIT_DE +}; + +const char MSG_POSITION_UNKNOWN_EN[] PROGMEM = "Home X/Y before Z"; +const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[1] PROGMEM = { + MSG_POSITION_UNKNOWN_EN +}; + +const char MSG_POWERUP_EN[] PROGMEM = "PowerUp"; +const char * const MSG_POWERUP_LANG_TABLE[1] PROGMEM = { + MSG_POWERUP_EN +}; + +const char MSG_PREHEAT_EN[] PROGMEM = "Preheat"; +const char MSG_PREHEAT_CZ[] PROGMEM = "Predehrev"; +const char MSG_PREHEAT_IT[] PROGMEM = "Preriscalda"; +const char MSG_PREHEAT_ES[] PROGMEM = "Precalentar"; +const char MSG_PREHEAT_PL[] PROGMEM = "Grzanie"; +const char MSG_PREHEAT_DE[] PROGMEM = "Vorwaermen"; +const char * const MSG_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREHEAT_EN, + MSG_PREHEAT_CZ, + MSG_PREHEAT_IT, + MSG_PREHEAT_ES, + MSG_PREHEAT_PL, + MSG_PREHEAT_DE +}; + +const char MSG_PREHEAT_NOZZLE_EN[] PROGMEM = "Preheat the nozzle!"; +const char MSG_PREHEAT_NOZZLE_CZ[] PROGMEM = "Predehrejte trysku!"; +const char MSG_PREHEAT_NOZZLE_IT[] PROGMEM = "Preris. ugello!"; +const char MSG_PREHEAT_NOZZLE_ES[] PROGMEM = "Precalentar extrusor"; +const char MSG_PREHEAT_NOZZLE_PL[] PROGMEM = "Nagrzej dysze!"; +const char MSG_PREHEAT_NOZZLE_DE[] PROGMEM = "Duese vorwaermen!"; +const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREHEAT_NOZZLE_EN, + MSG_PREHEAT_NOZZLE_CZ, + MSG_PREHEAT_NOZZLE_IT, + MSG_PREHEAT_NOZZLE_ES, + MSG_PREHEAT_NOZZLE_PL, + MSG_PREHEAT_NOZZLE_DE +}; + +const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; +const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; +const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; +const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; +const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; +const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filam. bereithalten"; +const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREPARE_FILAMENT_EN, + MSG_PREPARE_FILAMENT_CZ, + MSG_PREPARE_FILAMENT_IT, + MSG_PREPARE_FILAMENT_ES, + MSG_PREPARE_FILAMENT_PL, + MSG_PREPARE_FILAMENT_DE +}; + +const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; +const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; +const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; +const char MSG_PRESS_ES[] PROGMEM = "Pulsar el mando"; +const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; +const char MSG_PRESS_DE[] PROGMEM = "und Knopf druecken"; +const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRESS_EN, + MSG_PRESS_CZ, + MSG_PRESS_IT, + MSG_PRESS_ES, + MSG_PRESS_PL, + MSG_PRESS_DE +}; + +const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; +const char MSG_PRINTER_DISCONNECTED_DE[] PROGMEM = "Drucker getrent"; +const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_EN, + MSG_PRINTER_DISCONNECTED_DE +}; + +const char MSG_PRINT_ABORTED_EN[] PROGMEM = "Print aborted"; +const char MSG_PRINT_ABORTED_CZ[] PROGMEM = "Tisk prerusen"; +const char MSG_PRINT_ABORTED_IT[] PROGMEM = "Stampa abortita"; +const char MSG_PRINT_ABORTED_ES[] PROGMEM = "Impresion cancelada"; +const char MSG_PRINT_ABORTED_PL[] PROGMEM = "Druk przerwany"; +const char MSG_PRINT_ABORTED_DE[] PROGMEM = "Druck abgebrochen"; +const char * const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINT_ABORTED_EN, + MSG_PRINT_ABORTED_CZ, + MSG_PRINT_ABORTED_IT, + MSG_PRINT_ABORTED_ES, + MSG_PRINT_ABORTED_PL, + MSG_PRINT_ABORTED_DE +}; + +const char MSG_PRINT_PAUSED_EN[] PROGMEM = "Print paused"; +const char MSG_PRINT_PAUSED_CZ[] PROGMEM = "Tisk pozastaven"; +const char MSG_PRINT_PAUSED_IT[] PROGMEM = "Stampa in pausa"; +const char MSG_PRINT_PAUSED_ES[] PROGMEM = "Impresion en pausa"; +const char MSG_PRINT_PAUSED_PL[] PROGMEM = "Druk zatrzymany"; +const char MSG_PRINT_PAUSED_DE[] PROGMEM = "Druck pausiert"; +const char * const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRINT_PAUSED_EN, + MSG_PRINT_PAUSED_CZ, + MSG_PRINT_PAUSED_IT, + MSG_PRINT_PAUSED_ES, + MSG_PRINT_PAUSED_PL, + MSG_PRINT_PAUSED_DE +}; + +const char MSG_PRUSA3D_EN[] PROGMEM = "prusa3d.com"; +const char MSG_PRUSA3D_CZ[] PROGMEM = "prusa3d.cz"; +const char MSG_PRUSA3D_PL[] PROGMEM = "prusa3d.cz"; +const char * const MSG_PRUSA3D_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_EN, + MSG_PRUSA3D_CZ, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_PL, + MSG_PRUSA3D_EN +}; + +const char MSG_PRUSA3D_FORUM_EN[] PROGMEM = "forum.prusa3d.com"; +const char MSG_PRUSA3D_FORUM_CZ[] PROGMEM = "forum.prusa3d.cz"; +const char MSG_PRUSA3D_FORUM_PL[] PROGMEM = "forum.prusa3d.cz"; +const char * const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_CZ, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_PL, + MSG_PRUSA3D_FORUM_EN +}; + +const char MSG_PRUSA3D_HOWTO_EN[] PROGMEM = "howto.prusa3d.com"; +const char MSG_PRUSA3D_HOWTO_CZ[] PROGMEM = "howto.prusa3d.cz"; +const char MSG_PRUSA3D_HOWTO_PL[] PROGMEM = "howto.prusa3d.cz"; +const char * const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_CZ, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_PL, + MSG_PRUSA3D_HOWTO_EN +}; + +const char MSG_REBOOT_EN[] PROGMEM = "Reboot the printer"; +const char MSG_REBOOT_CZ[] PROGMEM = "Restartujte tiskarnu"; +const char MSG_REBOOT_IT[] PROGMEM = "Riavvia stampante"; +const char MSG_REBOOT_ES[] PROGMEM = "Reiniciar impresora"; +const char MSG_REBOOT_PL[] PROGMEM = "Restart drukarki"; +const char MSG_REBOOT_DE[] PROGMEM = "Reboot den Drucker"; +const char * const MSG_REBOOT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_REBOOT_EN, + MSG_REBOOT_CZ, + MSG_REBOOT_IT, + MSG_REBOOT_ES, + MSG_REBOOT_PL, + MSG_REBOOT_DE +}; + +const char MSG_RECTRACT_EN[] PROGMEM = "Rectract"; +const char * const MSG_RECTRACT_LANG_TABLE[1] PROGMEM = { + MSG_RECTRACT_EN +}; + +const char MSG_REFRESH_EN[] PROGMEM = "\xF8" "Refresh"; +const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { + MSG_REFRESH_EN +}; + +const char MSG_RESEND_EN[] PROGMEM = "Resend: "; +const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { + MSG_RESEND_EN +}; + +const char MSG_RESET_CALIBRATE_E_EN[] PROGMEM = "Reset E Cal."; +const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[1] PROGMEM = { + MSG_RESET_CALIBRATE_E_EN +}; + +const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; +const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { + MSG_RESTORE_FAILSAFE_EN +}; + +const char MSG_RESUME_PRINT_EN[] PROGMEM = "Resume print"; +const char MSG_RESUME_PRINT_CZ[] PROGMEM = "Pokracovat"; +const char MSG_RESUME_PRINT_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUME_PRINT_ES[] PROGMEM = "Reanudar impres."; +const char MSG_RESUME_PRINT_PL[] PROGMEM = "Kontynuowac"; +const char MSG_RESUME_PRINT_DE[] PROGMEM = "Fortsetzen"; +const char * const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUME_PRINT_EN, + MSG_RESUME_PRINT_CZ, + MSG_RESUME_PRINT_IT, + MSG_RESUME_PRINT_ES, + MSG_RESUME_PRINT_PL, + MSG_RESUME_PRINT_DE +}; + +const char MSG_RESUMING_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_CZ[] PROGMEM = "Obnoveni tisku"; +const char MSG_RESUMING_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUMING_ES[] PROGMEM = "Resumiendo impresion"; +const char MSG_RESUMING_PL[] PROGMEM = "Wznowienie druku"; +const char MSG_RESUMING_DE[] PROGMEM = "Druck fortgesetzt"; +const char * const MSG_RESUMING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUMING_EN, + MSG_RESUMING_CZ, + MSG_RESUMING_IT, + MSG_RESUMING_ES, + MSG_RESUMING_PL, + MSG_RESUMING_DE +}; + +const char MSG_RESUMING_PRINT_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_PRINT_CZ[] PROGMEM = "Obnovovani tisku"; +const char MSG_RESUMING_PRINT_IT[] PROGMEM = "Stampa in ripresa"; +const char MSG_RESUMING_PRINT_ES[] PROGMEM = "Reanudar impresion"; +const char MSG_RESUMING_PRINT_PL[] PROGMEM = "Wznawianie druku"; +const char MSG_RESUMING_PRINT_DE[] PROGMEM = "Druck fortsetzen"; +const char * const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RESUMING_PRINT_EN, + MSG_RESUMING_PRINT_CZ, + MSG_RESUMING_PRINT_IT, + MSG_RESUMING_PRINT_ES, + MSG_RESUMING_PRINT_PL, + MSG_RESUMING_PRINT_DE +}; + +const char MSG_RIGHT_EN[] PROGMEM = "Right:"; +const char MSG_RIGHT_CZ[] PROGMEM = "Pravy:"; +const char MSG_RIGHT_IT[] PROGMEM = "Destra:"; +const char MSG_RIGHT_ES[] PROGMEM = "Derecha:"; +const char MSG_RIGHT_PL[] PROGMEM = "Prawy:"; +const char MSG_RIGHT_DE[] PROGMEM = "Rechts:"; +const char * const MSG_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_RIGHT_EN, + MSG_RIGHT_CZ, + MSG_RIGHT_IT, + MSG_RIGHT_ES, + MSG_RIGHT_PL, + MSG_RIGHT_DE +}; + +const char MSG_SD_CANT_ENTER_SUBDIR_EN[] PROGMEM = "Cannot enter subdir: "; +const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1] PROGMEM = { + MSG_SD_CANT_ENTER_SUBDIR_EN +}; + +const char MSG_SD_CANT_OPEN_SUBDIR_EN[] PROGMEM = "Cannot open subdir"; +const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1] PROGMEM = { + MSG_SD_CANT_OPEN_SUBDIR_EN +}; + +const char MSG_SD_CARD_OK_EN[] PROGMEM = "SD card ok"; +const char * const MSG_SD_CARD_OK_LANG_TABLE[1] PROGMEM = { + MSG_SD_CARD_OK_EN +}; + +const char MSG_SD_ERR_WRITE_TO_FILE_EN[] PROGMEM = "error writing to file"; +const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { + MSG_SD_ERR_WRITE_TO_FILE_EN +}; + +const char MSG_SD_FILE_OPENED_EN[] PROGMEM = "File opened: "; +const char * const MSG_SD_FILE_OPENED_LANG_TABLE[1] PROGMEM = { + MSG_SD_FILE_OPENED_EN +}; + +const char MSG_SD_FILE_SELECTED_EN[] PROGMEM = "File selected"; +const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[1] PROGMEM = { + MSG_SD_FILE_SELECTED_EN +}; + +const char MSG_SD_INIT_FAIL_EN[] PROGMEM = "SD init fail"; +const char * const MSG_SD_INIT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_INIT_FAIL_EN +}; + +const char MSG_SD_INSERTED_EN[] PROGMEM = "Card inserted"; +const char MSG_SD_INSERTED_CZ[] PROGMEM = "Karta vlozena"; +const char MSG_SD_INSERTED_IT[] PROGMEM = "SD inserita"; +const char MSG_SD_INSERTED_ES[] PROGMEM = "Tarjeta insertada"; +const char MSG_SD_INSERTED_PL[] PROGMEM = "Karta wlozona"; +const char MSG_SD_INSERTED_DE[] PROGMEM = "SD eingesetzt"; +const char * const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SD_INSERTED_EN, + MSG_SD_INSERTED_CZ, + MSG_SD_INSERTED_IT, + MSG_SD_INSERTED_ES, + MSG_SD_INSERTED_PL, + MSG_SD_INSERTED_DE +}; + +const char MSG_SD_NOT_PRINTING_EN[] PROGMEM = "Not SD printing"; +const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[1] PROGMEM = { + MSG_SD_NOT_PRINTING_EN +}; + +const char MSG_SD_OPENROOT_FAIL_EN[] PROGMEM = "openRoot failed"; +const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_OPENROOT_FAIL_EN +}; + +const char MSG_SD_OPEN_FILE_FAIL_EN[] PROGMEM = "open failed, File: "; +const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_OPEN_FILE_FAIL_EN +}; + +const char MSG_SD_PRINTING_BYTE_EN[] PROGMEM = "SD printing byte "; +const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[1] PROGMEM = { + MSG_SD_PRINTING_BYTE_EN +}; + +const char MSG_SD_REMOVED_EN[] PROGMEM = "Card removed"; +const char MSG_SD_REMOVED_CZ[] PROGMEM = "Karta vyjmuta"; +const char MSG_SD_REMOVED_IT[] PROGMEM = "SD rimossa"; +const char MSG_SD_REMOVED_ES[] PROGMEM = "Tarjeta retirada"; +const char MSG_SD_REMOVED_PL[] PROGMEM = "Karta wyjeta"; +const char MSG_SD_REMOVED_DE[] PROGMEM = "SD entfernt "; +const char * const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SD_REMOVED_EN, + MSG_SD_REMOVED_CZ, + MSG_SD_REMOVED_IT, + MSG_SD_REMOVED_ES, + MSG_SD_REMOVED_PL, + MSG_SD_REMOVED_DE +}; + +const char MSG_SD_SIZE_EN[] PROGMEM = " Size: "; +const char * const MSG_SD_SIZE_LANG_TABLE[1] PROGMEM = { + MSG_SD_SIZE_EN +}; + +const char MSG_SD_VOL_INIT_FAIL_EN[] PROGMEM = "volume.init failed"; +const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_VOL_INIT_FAIL_EN +}; + +const char MSG_SD_WORKDIR_FAIL_EN[] PROGMEM = "workDir open failed"; +const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1] PROGMEM = { + MSG_SD_WORKDIR_FAIL_EN +}; + +const char MSG_SD_WRITE_TO_FILE_EN[] PROGMEM = "Writing to file: "; +const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { + MSG_SD_WRITE_TO_FILE_EN +}; + +const char MSG_SELFTEST_EN[] PROGMEM = "Selftest "; +const char MSG_SELFTEST_IT[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_ES[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_DE[] PROGMEM = "Selbsttest "; +const char * const MSG_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_EN, + MSG_SELFTEST_EN, + MSG_SELFTEST_IT, + MSG_SELFTEST_ES, + MSG_SELFTEST_EN, + MSG_SELFTEST_DE +}; + +const char MSG_SELFTEST_BEDHEATER_EN[] PROGMEM = "Bed / Heater"; +const char MSG_SELFTEST_BEDHEATER_IT[] PROGMEM = "Letto/Riscald."; +const char MSG_SELFTEST_BEDHEATER_ES[] PROGMEM = "Cama/Calentador"; +const char * const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_IT, + MSG_SELFTEST_BEDHEATER_ES, + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_EN +}; + +const char MSG_SELFTEST_CHECK_ALLCORRECT_EN[] PROGMEM = "All correct "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_CZ[] PROGMEM = "Vse OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_IT[] PROGMEM = "Nessun errore"; +const char MSG_SELFTEST_CHECK_ALLCORRECT_ES[] PROGMEM = "Todo bie "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_PL[] PROGMEM = "Wszystko OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_DE[] PROGMEM = "Alles richtig "; +const char * const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_ALLCORRECT_EN, + MSG_SELFTEST_CHECK_ALLCORRECT_CZ, + MSG_SELFTEST_CHECK_ALLCORRECT_IT, + MSG_SELFTEST_CHECK_ALLCORRECT_ES, + MSG_SELFTEST_CHECK_ALLCORRECT_PL, + MSG_SELFTEST_CHECK_ALLCORRECT_DE +}; + +const char MSG_SELFTEST_CHECK_BED_EN[] PROGMEM = "Checking bed "; +const char MSG_SELFTEST_CHECK_BED_CZ[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_IT[] PROGMEM = "Verifica letto"; +const char MSG_SELFTEST_CHECK_BED_ES[] PROGMEM = "Control de cama"; +const char MSG_SELFTEST_CHECK_BED_PL[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pruefe Bett "; +const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_BED_EN, + MSG_SELFTEST_CHECK_BED_CZ, + MSG_SELFTEST_CHECK_BED_IT, + MSG_SELFTEST_CHECK_BED_ES, + MSG_SELFTEST_CHECK_BED_PL, + MSG_SELFTEST_CHECK_BED_DE +}; + +const char MSG_SELFTEST_CHECK_ENDSTOPS_EN[] PROGMEM = "Checking endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; +const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_ENDSTOPS_EN, + MSG_SELFTEST_CHECK_ENDSTOPS_CZ, + MSG_SELFTEST_CHECK_ENDSTOPS_IT, + MSG_SELFTEST_CHECK_ENDSTOPS_ES, + MSG_SELFTEST_CHECK_ENDSTOPS_PL, + MSG_SELFTEST_CHECK_ENDSTOPS_DE +}; + +const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_IT[] PROGMEM = "Verifica ugello"; +const char MSG_SELFTEST_CHECK_HOTEND_ES[] PROGMEM = "Control hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_PL[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_DE[] PROGMEM = "Pruefe Hotend"; +const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_HOTEND_EN, + MSG_SELFTEST_CHECK_HOTEND_CZ, + MSG_SELFTEST_CHECK_HOTEND_IT, + MSG_SELFTEST_CHECK_HOTEND_ES, + MSG_SELFTEST_CHECK_HOTEND_PL, + MSG_SELFTEST_CHECK_HOTEND_DE +}; + +const char MSG_SELFTEST_CHECK_X_EN[] PROGMEM = "Checking X axis "; +const char MSG_SELFTEST_CHECK_X_CZ[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_IT[] PROGMEM = "Verifica asse X"; +const char MSG_SELFTEST_CHECK_X_ES[] PROGMEM = "Control del eje X"; +const char MSG_SELFTEST_CHECK_X_PL[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_DE[] PROGMEM = "Pruefe X Achse "; +const char * const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_X_EN, + MSG_SELFTEST_CHECK_X_CZ, + MSG_SELFTEST_CHECK_X_IT, + MSG_SELFTEST_CHECK_X_ES, + MSG_SELFTEST_CHECK_X_PL, + MSG_SELFTEST_CHECK_X_DE +}; + +const char MSG_SELFTEST_CHECK_Y_EN[] PROGMEM = "Checking Y axis "; +const char MSG_SELFTEST_CHECK_Y_CZ[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_IT[] PROGMEM = "Verifica asse Y"; +const char MSG_SELFTEST_CHECK_Y_ES[] PROGMEM = "Control del eje Y"; +const char MSG_SELFTEST_CHECK_Y_PL[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_DE[] PROGMEM = "Pruefe Y Achse "; +const char * const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_Y_EN, + MSG_SELFTEST_CHECK_Y_CZ, + MSG_SELFTEST_CHECK_Y_IT, + MSG_SELFTEST_CHECK_Y_ES, + MSG_SELFTEST_CHECK_Y_PL, + MSG_SELFTEST_CHECK_Y_DE +}; + +const char MSG_SELFTEST_CHECK_Z_EN[] PROGMEM = "Checking Z axis "; +const char MSG_SELFTEST_CHECK_Z_CZ[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_IT[] PROGMEM = "Verifica asse Z"; +const char MSG_SELFTEST_CHECK_Z_ES[] PROGMEM = "Control del eje Z"; +const char MSG_SELFTEST_CHECK_Z_PL[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_DE[] PROGMEM = "Pruefe Z Achse "; +const char * const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_CHECK_Z_EN, + MSG_SELFTEST_CHECK_Z_CZ, + MSG_SELFTEST_CHECK_Z_IT, + MSG_SELFTEST_CHECK_Z_ES, + MSG_SELFTEST_CHECK_Z_PL, + MSG_SELFTEST_CHECK_Z_DE +}; + +const char MSG_SELFTEST_COOLING_FAN_EN[] PROGMEM = "Front print fan?";; +const char MSG_SELFTEST_COOLING_FAN_CZ[] PROGMEM = "Predni tiskovy vent?";; +const char MSG_SELFTEST_COOLING_FAN_IT[] PROGMEM = "Vent di stampa ant.?";; +const char MSG_SELFTEST_COOLING_FAN_ES[] PROGMEM = "Vent. al frente?";; +const char MSG_SELFTEST_COOLING_FAN_PL[] PROGMEM = "Przodni went. druku?";; +const char MSG_SELFTEST_COOLING_FAN_DE[] PROGMEM = "Vorderer Luefter?";; +const char * const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_COOLING_FAN_EN, + MSG_SELFTEST_COOLING_FAN_CZ, + MSG_SELFTEST_COOLING_FAN_IT, + MSG_SELFTEST_COOLING_FAN_ES, + MSG_SELFTEST_COOLING_FAN_PL, + MSG_SELFTEST_COOLING_FAN_DE +}; + +const char MSG_SELFTEST_ENDSTOP_EN[] PROGMEM = "Endstop"; +const char MSG_SELFTEST_ENDSTOP_IT[] PROGMEM = "Finecorsa"; +const char MSG_SELFTEST_ENDSTOP_ES[] PROGMEM = "Tope final"; +const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_IT, + MSG_SELFTEST_ENDSTOP_ES, + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_EN +}; + +const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; +const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; +const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; +const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; +const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_IT, + MSG_SELFTEST_ENDSTOPS_ES, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_DE +}; + +const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Endsch. n. erreicht"; +const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_IT, + MSG_SELFTEST_ENDSTOP_NOTHIT_ES, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_DE +}; + +const char MSG_SELFTEST_ERROR_EN[] PROGMEM = "Selftest error !"; +const char MSG_SELFTEST_ERROR_IT[] PROGMEM = "Autotest negativo"; +const char MSG_SELFTEST_ERROR_ES[] PROGMEM = "Autotest error!"; +const char MSG_SELFTEST_ERROR_DE[] PROGMEM = "Selbsttest Fehler !"; +const char * const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_IT, + MSG_SELFTEST_ERROR_ES, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_DE +}; + +const char MSG_SELFTEST_EXTRUDER_FAN_EN[] PROGMEM = "Left hotend fan?";; +const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; +const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; +const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; +const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; +const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?";; +const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_EXTRUDER_FAN_EN, + MSG_SELFTEST_EXTRUDER_FAN_CZ, + MSG_SELFTEST_EXTRUDER_FAN_IT, + MSG_SELFTEST_EXTRUDER_FAN_ES, + MSG_SELFTEST_EXTRUDER_FAN_PL, + MSG_SELFTEST_EXTRUDER_FAN_DE +}; + +const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed "; +const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal "; +const char MSG_SELFTEST_FAILED_IT[] PROGMEM = "Autotest fallito"; +const char MSG_SELFTEST_FAILED_ES[] PROGMEM = "Autotest fallado"; +const char MSG_SELFTEST_FAILED_PL[] PROGMEM = "Selftest nieudany"; +const char MSG_SELFTEST_FAILED_DE[] PROGMEM = "Selbsttest misluekt"; +const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAILED_EN, + MSG_SELFTEST_FAILED_CZ, + MSG_SELFTEST_FAILED_IT, + MSG_SELFTEST_FAILED_ES, + MSG_SELFTEST_FAILED_PL, + MSG_SELFTEST_FAILED_DE +}; + +const char MSG_SELFTEST_FAN_EN[] PROGMEM = "Fan test";; +const char MSG_SELFTEST_FAN_CZ[] PROGMEM = "Test ventilatoru";; +const char MSG_SELFTEST_FAN_IT[] PROGMEM = "Prova del ventilator";; +const char MSG_SELFTEST_FAN_ES[] PROGMEM = "Test del ventilador";; +const char MSG_SELFTEST_FAN_PL[] PROGMEM = "Test wentylatora";; +const char MSG_SELFTEST_FAN_DE[] PROGMEM = "Lueftertest";; +const char * const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_EN, + MSG_SELFTEST_FAN_CZ, + MSG_SELFTEST_FAN_IT, + MSG_SELFTEST_FAN_ES, + MSG_SELFTEST_FAN_PL, + MSG_SELFTEST_FAN_DE +}; + +const char MSG_SELFTEST_FAN_NO_EN[] PROGMEM = "Not spinning";; +const char MSG_SELFTEST_FAN_NO_CZ[] PROGMEM = "Netoci se";; +const char MSG_SELFTEST_FAN_NO_IT[] PROGMEM = "Non si gira";; +const char MSG_SELFTEST_FAN_NO_ES[] PROGMEM = "Ventilador no gira";; +const char MSG_SELFTEST_FAN_NO_PL[] PROGMEM = "Nekreci sie";; +const char MSG_SELFTEST_FAN_NO_DE[] PROGMEM = "Dreht nicht";; +const char * const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_NO_EN, + MSG_SELFTEST_FAN_NO_CZ, + MSG_SELFTEST_FAN_NO_IT, + MSG_SELFTEST_FAN_NO_ES, + MSG_SELFTEST_FAN_NO_PL, + MSG_SELFTEST_FAN_NO_DE +}; + +const char MSG_SELFTEST_FAN_YES_EN[] PROGMEM = "Spinning";; +const char MSG_SELFTEST_FAN_YES_CZ[] PROGMEM = "Toci se";; +const char MSG_SELFTEST_FAN_YES_IT[] PROGMEM = "Gira";; +const char MSG_SELFTEST_FAN_YES_ES[] PROGMEM = "Ventilador gira";; +const char MSG_SELFTEST_FAN_YES_PL[] PROGMEM = "Kreci sie";; +const char MSG_SELFTEST_FAN_YES_DE[] PROGMEM = "Dreht";; +const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_FAN_YES_EN, + MSG_SELFTEST_FAN_YES_CZ, + MSG_SELFTEST_FAN_YES_IT, + MSG_SELFTEST_FAN_YES_ES, + MSG_SELFTEST_FAN_YES_PL, + MSG_SELFTEST_FAN_YES_DE +}; + +const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor"; +const char MSG_SELFTEST_HEATERTHERMISTOR_IT[] PROGMEM = "Riscald./Termist."; +const char MSG_SELFTEST_HEATERTHERMISTOR_ES[] PROGMEM = "Calent./Termistor"; +const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_IT, + MSG_SELFTEST_HEATERTHERMISTOR_ES, + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_EN +}; + +const char MSG_SELFTEST_MOTOR_EN[] PROGMEM = "Motor"; +const char MSG_SELFTEST_MOTOR_IT[] PROGMEM = "Motore"; +const char MSG_SELFTEST_MOTOR_PL[] PROGMEM = "Silnik"; +const char * const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_IT, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_PL, + MSG_SELFTEST_MOTOR_EN +}; + +const char MSG_SELFTEST_NOTCONNECTED_EN[] PROGMEM = "Not connected"; +const char MSG_SELFTEST_NOTCONNECTED_CZ[] PROGMEM = "Nezapojeno "; +const char MSG_SELFTEST_NOTCONNECTED_IT[] PROGMEM = "Non connesso"; +const char MSG_SELFTEST_NOTCONNECTED_ES[] PROGMEM = "No hay conexion "; +const char MSG_SELFTEST_NOTCONNECTED_PL[] PROGMEM = "Nie podlaczono "; +const char MSG_SELFTEST_NOTCONNECTED_DE[] PROGMEM = "Nicht angeschlossen"; +const char * const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_NOTCONNECTED_EN, + MSG_SELFTEST_NOTCONNECTED_CZ, + MSG_SELFTEST_NOTCONNECTED_IT, + MSG_SELFTEST_NOTCONNECTED_ES, + MSG_SELFTEST_NOTCONNECTED_PL, + MSG_SELFTEST_NOTCONNECTED_DE +}; + +const char MSG_SELFTEST_OK_EN[] PROGMEM = "Self test OK"; +const char MSG_SELFTEST_OK_IT[] PROGMEM = "Autotest OK"; +const char MSG_SELFTEST_OK_DE[] PROGMEM = "Selbsttest OK"; +const char * const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_IT, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_DE +}; + +const char MSG_SELFTEST_PLEASECHECK_EN[] PROGMEM = "Please check :"; +const char MSG_SELFTEST_PLEASECHECK_CZ[] PROGMEM = "Zkontrolujte :"; +const char MSG_SELFTEST_PLEASECHECK_IT[] PROGMEM = "Verificare:"; +const char MSG_SELFTEST_PLEASECHECK_ES[] PROGMEM = "Controla :"; +const char MSG_SELFTEST_PLEASECHECK_PL[] PROGMEM = "Skontroluj :"; +const char MSG_SELFTEST_PLEASECHECK_DE[] PROGMEM = "Bitte pruefe:"; +const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_PLEASECHECK_EN, + MSG_SELFTEST_PLEASECHECK_CZ, + MSG_SELFTEST_PLEASECHECK_IT, + MSG_SELFTEST_PLEASECHECK_ES, + MSG_SELFTEST_PLEASECHECK_PL, + MSG_SELFTEST_PLEASECHECK_DE +}; + +const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start "; +const char MSG_SELFTEST_START_IT[] PROGMEM = "Avvia autotest"; +const char MSG_SELFTEST_START_ES[] PROGMEM = "Autotest salida"; +const char MSG_SELFTEST_START_DE[] PROGMEM = "Selbsttest start "; +const char * const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_IT, + MSG_SELFTEST_START_ES, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_DE +}; + +const char MSG_SELFTEST_WIRINGERROR_EN[] PROGMEM = "Wiring error"; +const char MSG_SELFTEST_WIRINGERROR_CZ[] PROGMEM = "Chyba zapojeni"; +const char MSG_SELFTEST_WIRINGERROR_IT[] PROGMEM = "Errore cablaggio"; +const char MSG_SELFTEST_WIRINGERROR_ES[] PROGMEM = "Error de conexion"; +const char MSG_SELFTEST_WIRINGERROR_PL[] PROGMEM = "Blad polaczenia"; +const char MSG_SELFTEST_WIRINGERROR_DE[] PROGMEM = "Verdrahtungsfehler"; +const char * const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_WIRINGERROR_EN, + MSG_SELFTEST_WIRINGERROR_CZ, + MSG_SELFTEST_WIRINGERROR_IT, + MSG_SELFTEST_WIRINGERROR_ES, + MSG_SELFTEST_WIRINGERROR_PL, + MSG_SELFTEST_WIRINGERROR_DE +}; + +const char MSG_SERIAL_ERROR_MENU_STRUCTURE_EN[] PROGMEM = "Error in menu structure"; +const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1] PROGMEM = { + MSG_SERIAL_ERROR_MENU_STRUCTURE_EN +}; + +const char MSG_SETTINGS_EN[] PROGMEM = "Settings"; +const char MSG_SETTINGS_CZ[] PROGMEM = "Nastaveni"; +const char MSG_SETTINGS_IT[] PROGMEM = "Impostazioni"; +const char MSG_SETTINGS_ES[] PROGMEM = "Configuracion"; +const char MSG_SETTINGS_PL[] PROGMEM = "Ustawienia"; +const char MSG_SETTINGS_DE[] PROGMEM = "Einstellungen"; +const char * const MSG_SETTINGS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SETTINGS_EN, + MSG_SETTINGS_CZ, + MSG_SETTINGS_IT, + MSG_SETTINGS_ES, + MSG_SETTINGS_PL, + MSG_SETTINGS_DE +}; + +const char MSG_SET_HOME_OFFSETS_EN[] PROGMEM = "Set home offsets"; +const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[1] PROGMEM = { + MSG_SET_HOME_OFFSETS_EN +}; + +const char MSG_SET_ORIGIN_EN[] PROGMEM = "Set origin"; +const char * const MSG_SET_ORIGIN_LANG_TABLE[1] PROGMEM = { + MSG_SET_ORIGIN_EN +}; + +const char MSG_SET_TEMPERATURE_EN[] PROGMEM = "Set temperature:"; +const char MSG_SET_TEMPERATURE_CZ[] PROGMEM = "Nastavte teplotu:"; +const char MSG_SET_TEMPERATURE_IT[] PROGMEM = "Imposta temperatura"; +const char MSG_SET_TEMPERATURE_ES[] PROGMEM = "Establecer temp.:"; +const char MSG_SET_TEMPERATURE_PL[] PROGMEM = "Ustawic temperature"; +const char MSG_SET_TEMPERATURE_DE[] PROGMEM = "Temp.einstellen"; +const char * const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SET_TEMPERATURE_EN, + MSG_SET_TEMPERATURE_CZ, + MSG_SET_TEMPERATURE_IT, + MSG_SET_TEMPERATURE_ES, + MSG_SET_TEMPERATURE_PL, + MSG_SET_TEMPERATURE_DE +}; + +const char MSG_SEVERE_SKEW_EN[] PROGMEM = "Severe skew:"; +const char MSG_SEVERE_SKEW_CZ[] PROGMEM = "Tezke zkoseni:"; +const char MSG_SEVERE_SKEW_IT[] PROGMEM = "Inc. rilevante:"; +const char MSG_SEVERE_SKEW_ES[] PROGMEM = "Inclin. severa:"; +const char MSG_SEVERE_SKEW_PL[] PROGMEM = "Ostre sciecie:"; +const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwere Asym.:"; +const char * const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SEVERE_SKEW_EN, + MSG_SEVERE_SKEW_CZ, + MSG_SEVERE_SKEW_IT, + MSG_SEVERE_SKEW_ES, + MSG_SEVERE_SKEW_PL, + MSG_SEVERE_SKEW_DE +}; + +const char MSG_SHOW_END_STOPS_EN[] PROGMEM = "Show end stops"; +const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; +const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; +const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; +const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; +const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Anzeigen Enschalter"; +const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SHOW_END_STOPS_EN, + MSG_SHOW_END_STOPS_CZ, + MSG_SHOW_END_STOPS_IT, + MSG_SHOW_END_STOPS_ES, + MSG_SHOW_END_STOPS_PL, + MSG_SHOW_END_STOPS_DE +}; + +const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; +const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; +const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]"; +const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [rend.pleno]"; +const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; +const char MSG_SILENT_MODE_OFF_DE[] PROGMEM = "Mode [Hohe Leist]"; +const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SILENT_MODE_OFF_EN, + MSG_SILENT_MODE_OFF_CZ, + MSG_SILENT_MODE_OFF_IT, + MSG_SILENT_MODE_OFF_ES, + MSG_SILENT_MODE_OFF_PL, + MSG_SILENT_MODE_OFF_DE +}; + +const char MSG_SILENT_MODE_ON_EN[] PROGMEM = "Mode [silent]"; +const char MSG_SILENT_MODE_ON_CZ[] PROGMEM = "Mod [tichy]"; +const char MSG_SILENT_MODE_ON_IT[] PROGMEM = "Modo [silenzioso]"; +const char MSG_SILENT_MODE_ON_ES[] PROGMEM = "Modo [silencio]"; +const char MSG_SILENT_MODE_ON_PL[] PROGMEM = "Mod [cichy]"; +const char MSG_SILENT_MODE_ON_DE[] PROGMEM = "Mode [leise]"; +const char * const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SILENT_MODE_ON_EN, + MSG_SILENT_MODE_ON_CZ, + MSG_SILENT_MODE_ON_IT, + MSG_SILENT_MODE_ON_ES, + MSG_SILENT_MODE_ON_PL, + MSG_SILENT_MODE_ON_DE +}; + +const char MSG_SLIGHT_SKEW_EN[] PROGMEM = "Slight skew:"; +const char MSG_SLIGHT_SKEW_CZ[] PROGMEM = "Lehke zkoseni:"; +const char MSG_SLIGHT_SKEW_IT[] PROGMEM = "Incl. leggera:"; +const char MSG_SLIGHT_SKEW_ES[] PROGMEM = "Inclin. ligera:"; +const char MSG_SLIGHT_SKEW_PL[] PROGMEM = "Lekkie sciecie:"; +const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Geringe Asym.:"; +const char * const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SLIGHT_SKEW_EN, + MSG_SLIGHT_SKEW_CZ, + MSG_SLIGHT_SKEW_IT, + MSG_SLIGHT_SKEW_ES, + MSG_SLIGHT_SKEW_PL, + MSG_SLIGHT_SKEW_DE +}; + +const char MSG_SOFTWARE_RESET_EN[] PROGMEM = " Software Reset"; +const char * const MSG_SOFTWARE_RESET_LANG_TABLE[1] PROGMEM = { + MSG_SOFTWARE_RESET_EN +}; + +const char MSG_SORTING_EN[] PROGMEM = "Sorting files"; +const char MSG_SORTING_DE[] PROGMEM = "Sortiere Dateien"; +const char * const MSG_SORTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_EN, + MSG_SORTING_DE +}; + +const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort: [Alphabet]"; +const char * const MSG_SORT_ALPHA_LANG_TABLE[1] PROGMEM = { + MSG_SORT_ALPHA_EN +}; + +const char MSG_SORT_NONE_EN[] PROGMEM = "Sort: [None]"; +const char MSG_SORT_NONE_DE[] PROGMEM = "Sort: [Keine]"; +const char * const MSG_SORT_NONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_EN, + MSG_SORT_NONE_DE +}; + +const char MSG_SORT_TIME_EN[] PROGMEM = "Sort: [Time]"; +const char MSG_SORT_TIME_DE[] PROGMEM = "Sort: [Zeit]"; +const char * const MSG_SORT_TIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_EN, + MSG_SORT_TIME_DE +}; + +const char MSG_SPEED_EN[] PROGMEM = "Speed"; +const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; +const char MSG_SPEED_IT[] PROGMEM = "Velocita"; +const char MSG_SPEED_ES[] PROGMEM = "Velocidad"; +const char MSG_SPEED_PL[] PROGMEM = "Predkosc"; +const char MSG_SPEED_DE[] PROGMEM = "Geschwindigkeit"; +const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SPEED_EN, + MSG_SPEED_CZ, + MSG_SPEED_IT, + MSG_SPEED_ES, + MSG_SPEED_PL, + MSG_SPEED_DE +}; + +const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; +const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { + MSG_STACK_ERROR_EN +}; + +const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; +const char MSG_STATISTICS_CZ[] PROGMEM = "Statistika "; +const char MSG_STATISTICS_IT[] PROGMEM = "Statistiche"; +const char MSG_STATISTICS_ES[] PROGMEM = "Estadistica "; +const char MSG_STATISTICS_PL[] PROGMEM = "Statystyka "; +const char MSG_STATISTICS_DE[] PROGMEM = "Statistiken "; +const char * const MSG_STATISTICS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATISTICS_EN, + MSG_STATISTICS_CZ, + MSG_STATISTICS_IT, + MSG_STATISTICS_ES, + MSG_STATISTICS_PL, + MSG_STATISTICS_DE +}; + +const char MSG_STATS_FILAMENTUSED_EN[] PROGMEM = "Filament used: "; +const char MSG_STATS_FILAMENTUSED_CZ[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_IT[] PROGMEM = "Filamento usato:"; +const char MSG_STATS_FILAMENTUSED_ES[] PROGMEM = "Filamento : "; +const char MSG_STATS_FILAMENTUSED_PL[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_DE[] PROGMEM = "Filamentverbrauch:"; +const char * const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_FILAMENTUSED_EN, + MSG_STATS_FILAMENTUSED_CZ, + MSG_STATS_FILAMENTUSED_IT, + MSG_STATS_FILAMENTUSED_ES, + MSG_STATS_FILAMENTUSED_PL, + MSG_STATS_FILAMENTUSED_DE +}; + +const char MSG_STATS_PRINTTIME_EN[] PROGMEM = "Print time: "; +const char MSG_STATS_PRINTTIME_CZ[] PROGMEM = "Cas tisku : "; +const char MSG_STATS_PRINTTIME_IT[] PROGMEM = "Tempo di stampa:"; +const char MSG_STATS_PRINTTIME_ES[] PROGMEM = "Tiempo de imp.:"; +const char MSG_STATS_PRINTTIME_PL[] PROGMEM = "Czas druku : "; +const char MSG_STATS_PRINTTIME_DE[] PROGMEM = "Druckzeit: "; +const char * const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_PRINTTIME_EN, + MSG_STATS_PRINTTIME_CZ, + MSG_STATS_PRINTTIME_IT, + MSG_STATS_PRINTTIME_ES, + MSG_STATS_PRINTTIME_PL, + MSG_STATS_PRINTTIME_DE +}; + +const char MSG_STATS_TOTALFILAMENT_EN[] PROGMEM = "Total filament :"; +const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; +const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; +const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; +const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; +const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Filament Gesamt:"; +const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_TOTALFILAMENT_EN, + MSG_STATS_TOTALFILAMENT_CZ, + MSG_STATS_TOTALFILAMENT_IT, + MSG_STATS_TOTALFILAMENT_ES, + MSG_STATS_TOTALFILAMENT_PL, + MSG_STATS_TOTALFILAMENT_DE +}; + +const char MSG_STATS_TOTALPRINTTIME_EN[] PROGMEM = "Total print time :"; +const char MSG_STATS_TOTALPRINTTIME_CZ[] PROGMEM = "Celkovy cas :"; +const char MSG_STATS_TOTALPRINTTIME_IT[] PROGMEM = "Tempo stampa tot:"; +const char MSG_STATS_TOTALPRINTTIME_ES[] PROGMEM = "Tiempo total :"; +const char MSG_STATS_TOTALPRINTTIME_PL[] PROGMEM = "Czas calkowity :"; +const char MSG_STATS_TOTALPRINTTIME_DE[] PROGMEM = "Totale Druckzeit:"; +const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STATS_TOTALPRINTTIME_EN, + MSG_STATS_TOTALPRINTTIME_CZ, + MSG_STATS_TOTALPRINTTIME_IT, + MSG_STATS_TOTALPRINTTIME_ES, + MSG_STATS_TOTALPRINTTIME_PL, + MSG_STATS_TOTALPRINTTIME_DE +}; + +const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; +const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { + MSG_STEPPER_TOO_HIGH_EN +}; + +const char MSG_STOPPED_EN[] PROGMEM = "STOPPED. "; +const char MSG_STOPPED_IT[] PROGMEM = "ARRESTATO."; +const char MSG_STOPPED_ES[] PROGMEM = "PARADA"; +const char MSG_STOPPED_DE[] PROGMEM = "GESTOPPT. "; +const char * const MSG_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STOPPED_EN, + MSG_STOPPED_EN, + MSG_STOPPED_IT, + MSG_STOPPED_ES, + MSG_STOPPED_EN, + MSG_STOPPED_DE +}; + +const char MSG_STOP_PRINT_EN[] PROGMEM = "Stop print"; +const char MSG_STOP_PRINT_CZ[] PROGMEM = "Zastavit tisk"; +const char MSG_STOP_PRINT_IT[] PROGMEM = "Arresta stampa"; +const char MSG_STOP_PRINT_ES[] PROGMEM = "Detener impresion"; +const char MSG_STOP_PRINT_PL[] PROGMEM = "Zatrzymac druk"; +const char MSG_STOP_PRINT_DE[] PROGMEM = "Druck abbrechen"; +const char * const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STOP_PRINT_EN, + MSG_STOP_PRINT_CZ, + MSG_STOP_PRINT_IT, + MSG_STOP_PRINT_ES, + MSG_STOP_PRINT_PL, + MSG_STOP_PRINT_DE +}; + +const char MSG_STORE_EPROM_EN[] PROGMEM = "Store memory"; +const char * const MSG_STORE_EPROM_LANG_TABLE[1] PROGMEM = { + MSG_STORE_EPROM_EN +}; + +const char MSG_SUPPORT_EN[] PROGMEM = "Support"; +const char MSG_SUPPORT_CZ[] PROGMEM = "Podpora"; +const char MSG_SUPPORT_ES[] PROGMEM = "Soporte"; +const char MSG_SUPPORT_PL[] PROGMEM = "Pomoc"; +const char * const MSG_SUPPORT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SUPPORT_EN, + MSG_SUPPORT_CZ, + MSG_SUPPORT_EN, + MSG_SUPPORT_ES, + MSG_SUPPORT_PL, + MSG_SUPPORT_EN +}; + +const char MSG_SWITCH_PS_OFF_EN[] PROGMEM = "Switch power off"; +const char MSG_SWITCH_PS_OFF_CZ[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_PL[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_DE[] PROGMEM = "Netzteil AUS"; +const char * const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_CZ, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_PL, + MSG_SWITCH_PS_OFF_DE +}; + +const char MSG_SWITCH_PS_ON_EN[] PROGMEM = "Switch power on"; +const char MSG_SWITCH_PS_ON_CZ[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_PL[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_DE[] PROGMEM = "Netzteil EIN"; +const char * const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_CZ, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_PL, + MSG_SWITCH_PS_ON_DE +}; + +const char MSG_TAKE_EFFECT_EN[] PROGMEM = " for take effect"; +const char MSG_TAKE_EFFECT_CZ[] PROGMEM = " pro projeveni zmen"; +const char MSG_TAKE_EFFECT_IT[] PROGMEM = " per attualizzare"; +const char MSG_TAKE_EFFECT_ES[] PROGMEM = " para aplicar cambios"; +const char MSG_TAKE_EFFECT_PL[] PROGMEM = " wprow. zmian"; +const char MSG_TAKE_EFFECT_DE[] PROGMEM = " um wirksam zu werden"; +const char * const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TAKE_EFFECT_EN, + MSG_TAKE_EFFECT_CZ, + MSG_TAKE_EFFECT_IT, + MSG_TAKE_EFFECT_ES, + MSG_TAKE_EFFECT_PL, + MSG_TAKE_EFFECT_DE +}; + +const char MSG_TEMPERATURE_EN[] PROGMEM = "Temperature"; +const char MSG_TEMPERATURE_CZ[] PROGMEM = "Teplota"; +const char MSG_TEMPERATURE_IT[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_ES[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_PL[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_DE[] PROGMEM = "Temperatur"; +const char * const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMPERATURE_EN, + MSG_TEMPERATURE_CZ, + MSG_TEMPERATURE_IT, + MSG_TEMPERATURE_ES, + MSG_TEMPERATURE_PL, + MSG_TEMPERATURE_DE +}; + +const char MSG_TEMP_CALIBRATION_EN[] PROGMEM = "Temp. cal. "; +const char MSG_TEMP_CALIBRATION_CZ[] PROGMEM = "Tepl. kal. "; +const char MSG_TEMP_CALIBRATION_IT[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_ES[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_PL[] PROGMEM = "Ciepl. kal. "; +const char MSG_TEMP_CALIBRATION_DE[] PROGMEM = "PINDA Temp.Kal. "; +const char * const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_EN, + MSG_TEMP_CALIBRATION_CZ, + MSG_TEMP_CALIBRATION_IT, + MSG_TEMP_CALIBRATION_ES, + MSG_TEMP_CALIBRATION_PL, + MSG_TEMP_CALIBRATION_DE +}; + +const char MSG_TEMP_CALIBRATION_DONE_EN[] PROGMEM = "Temperature calibration is finished. Click to continue."; +const char MSG_TEMP_CALIBRATION_DONE_CZ[] PROGMEM = "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka."; +const char MSG_TEMP_CALIBRATION_DONE_IT[] PROGMEM = "Taratura temperatura terminata. Fare click per continuare."; +const char MSG_TEMP_CALIBRATION_DONE_ES[] PROGMEM = "Calibracon temperatura terminada. Presionar para continuar."; +const char MSG_TEMP_CALIBRATION_DONE_PL[] PROGMEM = "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"; +const char MSG_TEMP_CALIBRATION_DONE_DE[] PROGMEM = "Die PINDA Temperaturkalibrierung ist beendet. Klicke um fortzufahren."; +const char * const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_DONE_EN, + MSG_TEMP_CALIBRATION_DONE_CZ, + MSG_TEMP_CALIBRATION_DONE_IT, + MSG_TEMP_CALIBRATION_DONE_ES, + MSG_TEMP_CALIBRATION_DONE_PL, + MSG_TEMP_CALIBRATION_DONE_DE +}; + +const char MSG_TEMP_CALIBRATION_OFF_EN[] PROGMEM = "Temp. cal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_CZ[] PROGMEM = "Tepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_IT[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_ES[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_PL[] PROGMEM = "Ciepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_DE[] PROGMEM = "PINDA T.Kal.[OFF]"; +const char * const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_OFF_EN, + MSG_TEMP_CALIBRATION_OFF_CZ, + MSG_TEMP_CALIBRATION_OFF_IT, + MSG_TEMP_CALIBRATION_OFF_ES, + MSG_TEMP_CALIBRATION_OFF_PL, + MSG_TEMP_CALIBRATION_OFF_DE +}; + +const char MSG_TEMP_CALIBRATION_ON_EN[] PROGMEM = "Temp. cal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_CZ[] PROGMEM = "Tepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_IT[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_ES[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_PL[] PROGMEM = "Ciepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_DE[] PROGMEM = "PINDA T.Kal. [ON]"; +const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TEMP_CALIBRATION_ON_EN, + MSG_TEMP_CALIBRATION_ON_CZ, + MSG_TEMP_CALIBRATION_ON_IT, + MSG_TEMP_CALIBRATION_ON_ES, + MSG_TEMP_CALIBRATION_ON_PL, + MSG_TEMP_CALIBRATION_ON_DE +}; + +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; +const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE +}; + +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlashAir]"; +const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE +}; + +const char MSG_TUNE_EN[] PROGMEM = "Tune"; +const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; +const char MSG_TUNE_IT[] PROGMEM = "Regola"; +const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; +const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; +const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; +const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_TUNE_EN, + MSG_TUNE_CZ, + MSG_TUNE_IT, + MSG_TUNE_ES, + MSG_TUNE_PL, + MSG_TUNE_DE +}; + +const char MSG_UNKNOWN_COMMAND_EN[] PROGMEM = "Unknown command: \""; +const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = { + MSG_UNKNOWN_COMMAND_EN +}; + +const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament"; +const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament"; +const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento"; +const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento"; +const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament"; +const char MSG_UNLOADING_FILAMENT_DE[] PROGMEM = "Filament auswerfen"; +const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOADING_FILAMENT_EN, + MSG_UNLOADING_FILAMENT_CZ, + MSG_UNLOADING_FILAMENT_IT, + MSG_UNLOADING_FILAMENT_ES, + MSG_UNLOADING_FILAMENT_PL, + MSG_UNLOADING_FILAMENT_DE +}; + +const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; +const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; +const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; +const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; +const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; +const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Alles entladen"; +const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_ALL_EN, + MSG_UNLOAD_ALL_CZ, + MSG_UNLOAD_ALL_IT, + MSG_UNLOAD_ALL_ES, + MSG_UNLOAD_ALL_PL, + MSG_UNLOAD_ALL_DE +}; + +const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; +const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; +const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; +const char MSG_UNLOAD_FILAMENT_ES[] PROGMEM = "Soltar filamento"; +const char MSG_UNLOAD_FILAMENT_PL[] PROGMEM = "Wyjac filament"; +const char MSG_UNLOAD_FILAMENT_DE[] PROGMEM = "Filament entnehmen"; +const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_EN, + MSG_UNLOAD_FILAMENT_CZ, + MSG_UNLOAD_FILAMENT_IT, + MSG_UNLOAD_FILAMENT_ES, + MSG_UNLOAD_FILAMENT_PL, + MSG_UNLOAD_FILAMENT_DE +}; + +const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; +const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; +const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; +const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Filam. 1 entladen"; +const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_1_EN, + MSG_UNLOAD_FILAMENT_1_CZ, + MSG_UNLOAD_FILAMENT_1_IT, + MSG_UNLOAD_FILAMENT_1_ES, + MSG_UNLOAD_FILAMENT_1_PL, + MSG_UNLOAD_FILAMENT_1_DE +}; + +const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; +const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; +const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; +const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; +const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Filam. 2 entladen"; +const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_2_EN, + MSG_UNLOAD_FILAMENT_2_CZ, + MSG_UNLOAD_FILAMENT_2_IT, + MSG_UNLOAD_FILAMENT_2_ES, + MSG_UNLOAD_FILAMENT_2_PL, + MSG_UNLOAD_FILAMENT_2_DE +}; + +const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; +const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; +const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; +const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; +const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Filam. 3 entladen"; +const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_3_EN, + MSG_UNLOAD_FILAMENT_3_CZ, + MSG_UNLOAD_FILAMENT_3_IT, + MSG_UNLOAD_FILAMENT_3_ES, + MSG_UNLOAD_FILAMENT_3_PL, + MSG_UNLOAD_FILAMENT_3_DE +}; + +const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; +const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; +const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; +const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; +const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Filam. 4 entladen"; +const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_4_EN, + MSG_UNLOAD_FILAMENT_4_CZ, + MSG_UNLOAD_FILAMENT_4_IT, + MSG_UNLOAD_FILAMENT_4_ES, + MSG_UNLOAD_FILAMENT_4_PL, + MSG_UNLOAD_FILAMENT_4_DE +}; + +const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; +const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; +const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; +const char MSG_USB_PRINTING_ES[] PROGMEM = "Impresion de USB "; +const char MSG_USB_PRINTING_PL[] PROGMEM = "Druk z USB "; +const char MSG_USB_PRINTING_DE[] PROGMEM = "Drucken ueber USB"; +const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USB_PRINTING_EN, + MSG_USB_PRINTING_CZ, + MSG_USB_PRINTING_IT, + MSG_USB_PRINTING_ES, + MSG_USB_PRINTING_PL, + MSG_USB_PRINTING_DE +}; + +const char MSG_USED_EN[] PROGMEM = "Used during print"; +const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku"; +const char MSG_USED_IT[] PROGMEM = "Usati nella stampa"; +const char MSG_USED_ES[] PROGMEM = "Usado en impresion"; +const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku"; +const char MSG_USED_DE[] PROGMEM = "Benutzt beim Druck"; +const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USED_EN, + MSG_USED_CZ, + MSG_USED_IT, + MSG_USED_ES, + MSG_USED_PL, + MSG_USED_DE +}; + +const char MSG_USERWAIT_EN[] PROGMEM = "Wait for user..."; +const char MSG_USERWAIT_IT[] PROGMEM = "Attendendo utente"; +const char MSG_USERWAIT_ES[] PROGMEM = "Esperando ordenes"; +const char MSG_USERWAIT_DE[] PROGMEM = "Warte auf Nutzer..."; +const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_USERWAIT_EN, + MSG_USERWAIT_EN, + MSG_USERWAIT_IT, + MSG_USERWAIT_ES, + MSG_USERWAIT_EN, + MSG_USERWAIT_DE +}; + +const char MSG_VMIN_EN[] PROGMEM = "Vmin"; +const char * const MSG_VMIN_LANG_TABLE[1] PROGMEM = { + MSG_VMIN_EN +}; + +const char MSG_VOLUMETRIC_EN[] PROGMEM = "Filament"; +const char * const MSG_VOLUMETRIC_LANG_TABLE[1] PROGMEM = { + MSG_VOLUMETRIC_EN +}; + +const char MSG_VOLUMETRIC_ENABLED_EN[] PROGMEM = "E in mm3"; +const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1] PROGMEM = { + MSG_VOLUMETRIC_ENABLED_EN +}; + +const char MSG_VTRAV_MIN_EN[] PROGMEM = "VTrav min"; +const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = { + MSG_VTRAV_MIN_EN +}; + +const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for nozzle and bed cooling"; +const char MSG_WAITING_TEMP_CZ[] PROGMEM = "Cekani na zchladnuti trysky a podlozky."; +const char MSG_WAITING_TEMP_IT[] PROGMEM = "In attesa del raffreddamento della testina e del piatto"; +const char MSG_WAITING_TEMP_ES[] PROGMEM = "Esperando enfriamiento de la cama y del extrusor."; +const char MSG_WAITING_TEMP_PL[] PROGMEM = "Oczekiwanie na wychlodzenie dyszy i podkladki."; +const char MSG_WAITING_TEMP_DE[] PROGMEM = "Warten auf Abkuehlung von Duese und Bett."; +const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WAITING_TEMP_EN, + MSG_WAITING_TEMP_CZ, + MSG_WAITING_TEMP_IT, + MSG_WAITING_TEMP_ES, + MSG_WAITING_TEMP_PL, + MSG_WAITING_TEMP_DE +}; + +const char MSG_WATCH_EN[] PROGMEM = "Info screen"; +const char MSG_WATCH_CZ[] PROGMEM = "Informace"; +const char MSG_WATCH_IT[] PROGMEM = "Schermata info"; +const char MSG_WATCH_ES[] PROGMEM = "Monitorizar"; +const char MSG_WATCH_PL[] PROGMEM = "Informacje"; +const char MSG_WATCH_DE[] PROGMEM = "Information"; +const char * const MSG_WATCH_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WATCH_EN, + MSG_WATCH_CZ, + MSG_WATCH_IT, + MSG_WATCH_ES, + MSG_WATCH_PL, + MSG_WATCH_DE +}; + +const char MSG_WATCHDOG_RESET_EN[] PROGMEM = " Watchdog Reset"; +const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { + MSG_WATCHDOG_RESET_EN +}; + +const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; +const char MSG_XYZ_DETAILS_CZ[] PROGMEM = "Detaily XYZ kal."; +const char MSG_XYZ_DETAILS_IT[] PROGMEM = "XYZ Cal. dettagli"; +const char MSG_XYZ_DETAILS_ES[] PROGMEM = "Inform. XYZ cal."; +const char MSG_XYZ_DETAILS_PL[] PROGMEM = "Szczegoly kal.XYZ"; +const char MSG_XYZ_DETAILS_DE[] PROGMEM = "XYZ Kal. Details"; +const char * const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_XYZ_DETAILS_EN, + MSG_XYZ_DETAILS_CZ, + MSG_XYZ_DETAILS_IT, + MSG_XYZ_DETAILS_ES, + MSG_XYZ_DETAILS_PL, + MSG_XYZ_DETAILS_DE +}; + +const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; +const char * const MSG_X_MAX_LANG_TABLE[1] PROGMEM = { + MSG_X_MAX_EN +}; + +const char MSG_X_MIN_EN[] PROGMEM = "x_min: "; +const char * const MSG_X_MIN_LANG_TABLE[1] PROGMEM = { + MSG_X_MIN_EN +}; + +const char MSG_YES_EN[] PROGMEM = "Yes"; +const char MSG_YES_CZ[] PROGMEM = "Ano"; +const char MSG_YES_IT[] PROGMEM = "Si"; +const char MSG_YES_ES[] PROGMEM = "Si"; +const char MSG_YES_PL[] PROGMEM = "Tak"; +const char MSG_YES_DE[] PROGMEM = "Ja"; +const char * const MSG_YES_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_YES_EN, + MSG_YES_CZ, + MSG_YES_IT, + MSG_YES_ES, + MSG_YES_PL, + MSG_YES_DE +}; + +const char MSG_Y_DISTANCE_FROM_MIN_EN[] PROGMEM = "Y distance from min:"; +const char MSG_Y_DISTANCE_FROM_MIN_CZ[] PROGMEM = "Y vzdalenost od min:"; +const char MSG_Y_DISTANCE_FROM_MIN_IT[] PROGMEM = "Distanza Y da min:"; +const char MSG_Y_DISTANCE_FROM_MIN_ES[] PROGMEM = "Dist. Y desde min:"; +const char MSG_Y_DISTANCE_FROM_MIN_PL[] PROGMEM = "Odleglosc Y od min.:"; +const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung von min"; +const char * const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_Y_DISTANCE_FROM_MIN_EN, + MSG_Y_DISTANCE_FROM_MIN_CZ, + MSG_Y_DISTANCE_FROM_MIN_IT, + MSG_Y_DISTANCE_FROM_MIN_ES, + MSG_Y_DISTANCE_FROM_MIN_PL, + MSG_Y_DISTANCE_FROM_MIN_DE +}; + +const char MSG_Y_MAX_EN[] PROGMEM = "y_max: "; +const char * const MSG_Y_MAX_LANG_TABLE[1] PROGMEM = { + MSG_Y_MAX_EN +}; + +const char MSG_Y_MIN_EN[] PROGMEM = "y_min: "; +const char * const MSG_Y_MIN_LANG_TABLE[1] PROGMEM = { + MSG_Y_MIN_EN +}; + +const char MSG_ZPROBE_OUT_EN[] PROGMEM = "Z probe out. bed"; +const char * const MSG_ZPROBE_OUT_LANG_TABLE[1] PROGMEM = { + MSG_ZPROBE_OUT_EN +}; + +const char MSG_ZPROBE_ZOFFSET_EN[] PROGMEM = "Z Offset"; +const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1] PROGMEM = { + MSG_ZPROBE_ZOFFSET_EN +}; + +const char MSG_Z_MAX_EN[] PROGMEM = "z_max: "; +const char * const MSG_Z_MAX_LANG_TABLE[1] PROGMEM = { + MSG_Z_MAX_EN +}; + +const char MSG_Z_MIN_EN[] PROGMEM = "z_min: "; +const char * const MSG_Z_MIN_LANG_TABLE[1] PROGMEM = { + MSG_Z_MIN_EN +}; + +const char WELCOME_MSG_EN[] PROGMEM = CUSTOM_MENDEL_NAME " ready."; +const char WELCOME_MSG_CZ[] PROGMEM = CUSTOM_MENDEL_NAME " ok"; +const char WELCOME_MSG_IT[] PROGMEM = CUSTOM_MENDEL_NAME " pronta."; +const char WELCOME_MSG_ES[] PROGMEM = CUSTOM_MENDEL_NAME " prep."; +const char WELCOME_MSG_PL[] PROGMEM = CUSTOM_MENDEL_NAME " gotowa"; +const char WELCOME_MSG_DE[] PROGMEM = CUSTOM_MENDEL_NAME " bereit."; +const char * const WELCOME_MSG_LANG_TABLE[LANG_NUM] PROGMEM = { + WELCOME_MSG_EN, + WELCOME_MSG_CZ, + WELCOME_MSG_IT, + WELCOME_MSG_ES, + WELCOME_MSG_PL, + WELCOME_MSG_DE +}; + + +char langbuffer[LCD_WIDTH+1]; +char* CAT2(const char *s1,const char *s2) { + unsigned char len=0; + strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); + len+=strlen_P(s1); + strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); + return langbuffer; +} +char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4) { + unsigned char len=0; + strncpy_P(langbuffer+len,s1,LCD_WIDTH-len); + len+=strlen_P(s1); + strncpy_P(langbuffer+len,s2,LCD_WIDTH-len); + len+=strlen_P(s2); + strncpy_P(langbuffer+len,s3,LCD_WIDTH-len); + len+=strlen_P(s3); + strncpy_P(langbuffer+len,s4,LCD_WIDTH-len); + return langbuffer; +} diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 297ab4d51..40e0ace6d 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -1,671 +1,671 @@ -#ifndef LANGUAGE_ALL_H -#define LANGUAGE_ALL_H - -#include -// Language indices into their particular symbol tables. -#define LANG_ID_EN 0 -#define LANG_ID_CZ 1 -#define LANG_ID_IT 2 -#define LANG_ID_ES 3 -#define LANG_ID_PL 4 -#define LANG_ID_DE 5 -// Language is not defined and it shall be selected from the menu. -#define LANG_ID_FORCE_SELECTION 254 -// Language is not defined on a virgin RAMBo board. -#define LANG_ID_UNDEFINED 255 - -// Default language ID, if no language is selected. -#define LANG_ID_DEFAULT LANG_ID_CZ - -// Number of languages available in the language table. -#define LANG_NUM 6 - -// Currectly active language selection. -extern unsigned char lang_selected; - -#define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG)))) -#define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected) - -extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1]; -#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM]; -#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE) -extern const char* const MSG_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_ALL LANG_TABLE_SELECT(MSG_ALL_LANG_TABLE) -extern const char* const MSG_AMAX_LANG_TABLE[1]; -#define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0) -extern const char* const MSG_AUTHOR_LANG_TABLE[1]; -#define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) -extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; -#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) -extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; -#define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_X_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Y_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEPPING_Z_LANG_TABLE[1]; -#define MSG_BABYSTEPPING_Z LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Z_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1]; -#define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1]; -#define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM]; -#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE) -extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM]; -#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE) -extern const char* const MSG_BED_LANG_TABLE[LANG_NUM]; -#define MSG_BED LANG_TABLE_SELECT(MSG_BED_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT(MSG_BED_CORRECTION_RESET_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE) -extern const char* const MSG_BED_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_BED_DONE LANG_TABLE_SELECT(MSG_BED_DONE_LANG_TABLE) -extern const char* const MSG_BED_HEATING_LANG_TABLE[LANG_NUM]; -#define MSG_BED_HEATING LANG_TABLE_SELECT(MSG_BED_HEATING_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE) -extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM]; -#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE) -extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1]; -#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0) -extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1]; -#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE) -extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE) -extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE) -extern const char* const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) -extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE) -extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; -#define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE) -extern const char* const MSG_CENTER_LANG_TABLE[LANG_NUM]; -#define MSG_CENTER LANG_TABLE_SELECT(MSG_CENTER_LANG_TABLE) -extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE) -extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE) -extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE) -extern const char* const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT(MSG_CHOOSE_EXTRUDER_LANG_TABLE) -extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM]; -#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE) -extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1]; -#define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0) -extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1]; -#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0) -extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE) -extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE) -extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM]; -#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE) -extern const char* const MSG_CONTROL_LANG_TABLE[1]; -#define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0) -extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; -#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE) -extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; -#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) -extern const char* const MSG_COUNT_X_LANG_TABLE[1]; -#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) -extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; -#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE) -extern const char* const MSG_DATE_LANG_TABLE[LANG_NUM]; -#define MSG_DATE LANG_TABLE_SELECT(MSG_DATE_LANG_TABLE) -extern const char* const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM]; -#define MSG_DEFAULT_SETTINGS_LOADED LANG_TABLE_SELECT(MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE) -extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM]; -#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE) -extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM]; -#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE) -extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1]; -#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0) -extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1]; -#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_HIT_LANG_TABLE, 0) -extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1]; -#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0) -extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1]; -#define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0) -extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM]; -#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE) -extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1]; -#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0) -extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1]; -#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE, 0) -extern const char* const MSG_ERR_KILLED_LANG_TABLE[1]; -#define MSG_ERR_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_KILLED_LANG_TABLE, 0) -extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[1]; -#define MSG_ERR_LINE_NO LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LINE_NO_LANG_TABLE, 0) -extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1]; -#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1]; -#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_CHECKSUM_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1]; -#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE, 0) -extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1]; -#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_THERMISTORS_LANG_TABLE, 0) -extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1]; -#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0) -extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1]; -#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER LANG_TABLE_SELECT(MSG_EXTRUDER_LANG_TABLE) -extern const char* const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_1 LANG_TABLE_SELECT(MSG_EXTRUDER_1_LANG_TABLE) -extern const char* const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_2 LANG_TABLE_SELECT(MSG_EXTRUDER_2_LANG_TABLE) -extern const char* const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_3 LANG_TABLE_SELECT(MSG_EXTRUDER_3_LANG_TABLE) -extern const char* const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM]; -#define MSG_EXTRUDER_4 LANG_TABLE_SELECT(MSG_EXTRUDER_4_LANG_TABLE) -extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM]; -#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE) -extern const char* const MSG_Enqueing_LANG_TABLE[1]; -#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0) -extern const char* const MSG_FACTOR_LANG_TABLE[1]; -#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) -extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; -#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) -extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1]; -#define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0) -extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) -extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) -extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; -#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) -extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; -#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) -extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; -#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0) -extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM]; -#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) -extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM]; -#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT(MSG_FINISHING_MOVEMENTS_LANG_TABLE) -extern const char* const MSG_FLOW_LANG_TABLE[LANG_NUM]; -#define MSG_FLOW LANG_TABLE_SELECT(MSG_FLOW_LANG_TABLE) -extern const char* const MSG_FLOW0_LANG_TABLE[1]; -#define MSG_FLOW0 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW0_LANG_TABLE, 0) -extern const char* const MSG_FLOW1_LANG_TABLE[1]; -#define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) -extern const char* const MSG_FLOW2_LANG_TABLE[1]; -#define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) -extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; -#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) -extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; -#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) -extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; -#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) -extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; -#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT(MSG_HEATING_COMPLETE_LANG_TABLE) -extern const char* const MSG_HOMEYZ_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ LANG_TABLE_SELECT(MSG_HOMEYZ_LANG_TABLE) -extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE) -extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM]; -#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE) -extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1]; -#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) -extern const char* const MSG_INIT_SDCARD_LANG_TABLE[1]; -#define MSG_INIT_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_INIT_SDCARD_LANG_TABLE, 0) -extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE) -extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM]; -#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE) -extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM]; -#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT(MSG_LANGUAGE_NAME_LANG_TABLE) -#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, LANG) -extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM]; -#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT(MSG_LANGUAGE_SELECT_LANG_TABLE) -#define MSG_LANGUAGE_SELECT_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, LANG) -extern const char* const MSG_LEFT_LANG_TABLE[LANG_NUM]; -#define MSG_LEFT LANG_TABLE_SELECT(MSG_LEFT_LANG_TABLE) -extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; -#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) -extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) -extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) -extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; -#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) -extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; -#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) -extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM]; -#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE) -extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M115_REPORT_LANG_TABLE[1]; -#define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0) -extern const char* const MSG_M119_REPORT_LANG_TABLE[1]; -#define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0) -extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1]; -#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM]; -#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) -extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM]; -#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE) -extern const char* const MSG_MAX_LANG_TABLE[1]; -#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) -extern const char* const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURED_SKEW LANG_TABLE_SELECT(MSG_MEASURED_SKEW_LANG_TABLE) -extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE) -extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE) -extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM]; -#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT(MSG_MENU_CALIBRATION_LANG_TABLE) -extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM]; -#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT(MSG_MESH_BED_LEVELING_LANG_TABLE) -extern const char* const MSG_MIN_LANG_TABLE[1]; -#define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0) -extern const char* const MSG_MOTION_LANG_TABLE[1]; -#define MSG_MOTION LANG_TABLE_SELECT_EXPLICIT(MSG_MOTION_LANG_TABLE, 0) -extern const char* const MSG_MOVE_01MM_LANG_TABLE[1]; -#define MSG_MOVE_01MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_01MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_10MM_LANG_TABLE[1]; -#define MSG_MOVE_10MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_10MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_1MM_LANG_TABLE[1]; -#define MSG_MOVE_1MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_1MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_AXIS LANG_TABLE_SELECT(MSG_MOVE_AXIS_LANG_TABLE) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE) -extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE) -extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE) -extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_Y LANG_TABLE_SELECT(MSG_MOVE_Y_LANG_TABLE) -extern const char* const MSG_MOVE_Z_LANG_TABLE[LANG_NUM]; -#define MSG_MOVE_Z LANG_TABLE_SELECT(MSG_MOVE_Z_LANG_TABLE) -extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM]; -#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE) -extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM]; -#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE) -extern const char* const MSG_NO_LANG_TABLE[LANG_NUM]; -#define MSG_NO LANG_TABLE_SELECT(MSG_NO_LANG_TABLE) -extern const char* const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM]; -#define MSG_NOT_COLOR LANG_TABLE_SELECT(MSG_NOT_COLOR_LANG_TABLE) -extern const char* const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM]; -#define MSG_NOT_LOADED LANG_TABLE_SELECT(MSG_NOT_LOADED_LANG_TABLE) -extern const char* const MSG_NOZZLE_LANG_TABLE[LANG_NUM]; -#define MSG_NOZZLE LANG_TABLE_SELECT(MSG_NOZZLE_LANG_TABLE) -extern const char* const MSG_NOZZLE1_LANG_TABLE[1]; -#define MSG_NOZZLE1 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE1_LANG_TABLE, 0) -extern const char* const MSG_NOZZLE2_LANG_TABLE[1]; -#define MSG_NOZZLE2 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE2_LANG_TABLE, 0) -extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM]; -#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE) -extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM]; -#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE) -extern const char* const MSG_OFF_LANG_TABLE[1]; -#define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0) -extern const char* const MSG_OK_LANG_TABLE[1]; -#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) -extern const char* const MSG_ON_LANG_TABLE[1]; -#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) -extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM]; -#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE) -extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) -extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; -#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE) -extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM]; -#define MSG_PID_EXTRUDER LANG_TABLE_SELECT(MSG_PID_EXTRUDER_LANG_TABLE) -extern const char* const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM]; -#define MSG_PID_FINISHED LANG_TABLE_SELECT(MSG_PID_FINISHED_LANG_TABLE) -extern const char* const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM]; -#define MSG_PID_RUNNING LANG_TABLE_SELECT(MSG_PID_RUNNING_LANG_TABLE) -extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; -#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) -extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; -#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) -extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; -#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) -extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; -#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) -extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; -#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0) -extern const char* const MSG_POWERUP_LANG_TABLE[1]; -#define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0) -extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; -#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) -extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; -#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) -extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) -extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; -#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) -extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM]; -#define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT(MSG_PRINTER_DISCONNECTED_LANG_TABLE) -extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; -#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) -extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM]; -#define MSG_PRINT_PAUSED LANG_TABLE_SELECT(MSG_PRINT_PAUSED_LANG_TABLE) -extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D LANG_TABLE_SELECT(MSG_PRUSA3D_LANG_TABLE) -extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT(MSG_PRUSA3D_FORUM_LANG_TABLE) -extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM]; -#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE) -extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM]; -#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE) -extern const char* const MSG_RECTRACT_LANG_TABLE[1]; -#define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) -extern const char* const MSG_REFRESH_LANG_TABLE[1]; -#define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) -extern const char* const MSG_RESEND_LANG_TABLE[1]; -#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) -extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; -#define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0) -extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; -#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) -extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE) -extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM]; -#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE) -extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_RESUMING_PRINT LANG_TABLE_SELECT(MSG_RESUMING_PRINT_LANG_TABLE) -extern const char* const MSG_RIGHT_LANG_TABLE[LANG_NUM]; -#define MSG_RIGHT LANG_TABLE_SELECT(MSG_RIGHT_LANG_TABLE) -extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1]; -#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0) -extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1]; -#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE, 0) -extern const char* const MSG_SD_CARD_OK_LANG_TABLE[1]; -#define MSG_SD_CARD_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CARD_OK_LANG_TABLE, 0) -extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1]; -#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE, 0) -extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[1]; -#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_OPENED_LANG_TABLE, 0) -extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1]; -#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0) -extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1]; -#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM]; -#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE) -extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1]; -#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0) -extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1]; -#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPENROOT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1]; -#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1]; -#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0) -extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM]; -#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE) -extern const char* const MSG_SD_SIZE_LANG_TABLE[1]; -#define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0) -extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1]; -#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1]; -#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1]; -#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE) -extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT(MSG_SELFTEST_BEDHEATER_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_X_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) -extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) -extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE) -extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) -extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) -extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE) -extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE) -extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) -extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT(MSG_SELFTEST_MOTOR_LANG_TABLE) -extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE) -extern const char* const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_OK LANG_TABLE_SELECT(MSG_SELFTEST_OK_LANG_TABLE) -extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE) -extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE) -extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM]; -#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE) -extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1]; -#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0) -extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM]; -#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE) -extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[1]; -#define MSG_SET_HOME_OFFSETS LANG_TABLE_SELECT_EXPLICIT(MSG_SET_HOME_OFFSETS_LANG_TABLE, 0) -extern const char* const MSG_SET_ORIGIN_LANG_TABLE[1]; -#define MSG_SET_ORIGIN LANG_TABLE_SELECT_EXPLICIT(MSG_SET_ORIGIN_LANG_TABLE, 0) -extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM]; -#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT(MSG_SET_TEMPERATURE_LANG_TABLE) -extern const char* const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_SEVERE_SKEW LANG_TABLE_SELECT(MSG_SEVERE_SKEW_LANG_TABLE) -extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM]; -#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT(MSG_SHOW_END_STOPS_LANG_TABLE) -extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE) -extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM]; -#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE) -extern const char* const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM]; -#define MSG_SLIGHT_SKEW LANG_TABLE_SELECT(MSG_SLIGHT_SKEW_LANG_TABLE) -extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1]; -#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) -extern const char* const MSG_SORTING_LANG_TABLE[LANG_NUM]; -#define MSG_SORTING LANG_TABLE_SELECT(MSG_SORTING_LANG_TABLE) -extern const char* const MSG_SORT_ALPHA_LANG_TABLE[1]; -#define MSG_SORT_ALPHA LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_ALPHA_LANG_TABLE, 0) -extern const char* const MSG_SORT_NONE_LANG_TABLE[LANG_NUM]; -#define MSG_SORT_NONE LANG_TABLE_SELECT(MSG_SORT_NONE_LANG_TABLE) -extern const char* const MSG_SORT_TIME_LANG_TABLE[LANG_NUM]; -#define MSG_SORT_TIME LANG_TABLE_SELECT(MSG_SORT_TIME_LANG_TABLE) -extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; -#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) -extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; -#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) -extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; -#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) -extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT(MSG_STATS_FILAMENTUSED_LANG_TABLE) -extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT(MSG_STATS_PRINTTIME_LANG_TABLE) -extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) -extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; -#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) -extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; -#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) -extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; -#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE) -extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM]; -#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE) -extern const char* const MSG_STORE_EPROM_LANG_TABLE[1]; -#define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0) -extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM]; -#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE) -extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT(MSG_SWITCH_PS_OFF_LANG_TABLE) -extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM]; -#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT(MSG_SWITCH_PS_ON_LANG_TABLE) -extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM]; -#define MSG_TAKE_EFFECT LANG_TABLE_SELECT(MSG_TAKE_EFFECT_LANG_TABLE) -extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM]; -#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) -extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; -#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE) -extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM]; -#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) -extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; -#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) -extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) -extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) -extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; -#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) -extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; -#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) -extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; -#define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) -extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; -#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) -extern const char* const MSG_VMIN_LANG_TABLE[1]; -#define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) -extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; -#define MSG_VOLUMETRIC LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_LANG_TABLE, 0) -extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1]; -#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0) -extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1]; -#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0) -extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM]; -#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE) -extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; -#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) -extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; -#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) -extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; -#define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) -extern const char* const MSG_X_MAX_LANG_TABLE[1]; -#define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) -extern const char* const MSG_X_MIN_LANG_TABLE[1]; -#define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0) -extern const char* const MSG_YES_LANG_TABLE[LANG_NUM]; -#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE) -extern const char* const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM]; -#define MSG_Y_DISTANCE_FROM_MIN LANG_TABLE_SELECT(MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE) -extern const char* const MSG_Y_MAX_LANG_TABLE[1]; -#define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0) -extern const char* const MSG_Y_MIN_LANG_TABLE[1]; -#define MSG_Y_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MIN_LANG_TABLE, 0) -extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[1]; -#define MSG_ZPROBE_OUT LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_OUT_LANG_TABLE, 0) -extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1]; -#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_ZOFFSET_LANG_TABLE, 0) -extern const char* const MSG_Z_MAX_LANG_TABLE[1]; -#define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0) -extern const char* const MSG_Z_MIN_LANG_TABLE[1]; -#define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0) -extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM]; -#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE) - -extern char* CAT2(const char *s1,const char *s2); -extern char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4); - -#endif //LANGUAGE_ALL.H +#ifndef LANGUAGE_ALL_H +#define LANGUAGE_ALL_H + +#include +// Language indices into their particular symbol tables. +#define LANG_ID_EN 0 +#define LANG_ID_CZ 1 +#define LANG_ID_IT 2 +#define LANG_ID_ES 3 +#define LANG_ID_PL 4 +#define LANG_ID_DE 5 +// Language is not defined and it shall be selected from the menu. +#define LANG_ID_FORCE_SELECTION 254 +// Language is not defined on a virgin RAMBo board. +#define LANG_ID_UNDEFINED 255 + +// Default language ID, if no language is selected. +#define LANG_ID_DEFAULT LANG_ID_CZ + +// Number of languages available in the language table. +#define LANG_NUM 6 + +// Currectly active language selection. +extern unsigned char lang_selected; + +#define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG)))) +#define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected) + +extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1]; +#define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM]; +#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE) +extern const char* const MSG_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_ALL LANG_TABLE_SELECT(MSG_ALL_LANG_TABLE) +extern const char* const MSG_AMAX_LANG_TABLE[1]; +#define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0) +extern const char* const MSG_AUTHOR_LANG_TABLE[1]; +#define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) +extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; +#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) +extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; +#define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_X_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_Y_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Y_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEPPING_Z_LANG_TABLE[1]; +#define MSG_BABYSTEPPING_Z LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEPPING_Z_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1]; +#define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1]; +#define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE) +extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE) +extern const char* const MSG_BED_LANG_TABLE[LANG_NUM]; +#define MSG_BED LANG_TABLE_SELECT(MSG_BED_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT(MSG_BED_CORRECTION_RESET_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE) +extern const char* const MSG_BED_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_BED_DONE LANG_TABLE_SELECT(MSG_BED_DONE_LANG_TABLE) +extern const char* const MSG_BED_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_BED_HEATING LANG_TABLE_SELECT(MSG_BED_HEATING_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE) +extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1]; +#define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0) +extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1]; +#define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0) +extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE) +extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE) +extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE) +extern const char* const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) +extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE) +extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE) +extern const char* const MSG_CENTER_LANG_TABLE[LANG_NUM]; +#define MSG_CENTER LANG_TABLE_SELECT(MSG_CENTER_LANG_TABLE) +extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE) +extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE) +extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE) +extern const char* const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT(MSG_CHOOSE_EXTRUDER_LANG_TABLE) +extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM]; +#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE) +extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1]; +#define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0) +extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1]; +#define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0) +extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE) +extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE) +extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM]; +#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE) +extern const char* const MSG_CONTROL_LANG_TABLE[1]; +#define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0) +extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; +#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE) +extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; +#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) +extern const char* const MSG_COUNT_X_LANG_TABLE[1]; +#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) +extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; +#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE) +extern const char* const MSG_DATE_LANG_TABLE[LANG_NUM]; +#define MSG_DATE LANG_TABLE_SELECT(MSG_DATE_LANG_TABLE) +extern const char* const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_DEFAULT_SETTINGS_LOADED LANG_TABLE_SELECT(MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE) +extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM]; +#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE) +extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM]; +#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE) +extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1]; +#define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0) +extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1]; +#define MSG_ENDSTOP_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_HIT_LANG_TABLE, 0) +extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1]; +#define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0) +extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1]; +#define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0) +extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE) +extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1]; +#define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0) +extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1]; +#define MSG_ERR_COLD_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE, 0) +extern const char* const MSG_ERR_KILLED_LANG_TABLE[1]; +#define MSG_ERR_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_KILLED_LANG_TABLE, 0) +extern const char* const MSG_ERR_LINE_NO_LANG_TABLE[1]; +#define MSG_ERR_LINE_NO LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LINE_NO_LANG_TABLE, 0) +extern const char* const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1]; +#define MSG_ERR_LONG_EXTRUDE_STOP LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1]; +#define MSG_ERR_NO_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_CHECKSUM_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1]; +#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE, 0) +extern const char* const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1]; +#define MSG_ERR_NO_THERMISTORS LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_NO_THERMISTORS_LANG_TABLE, 0) +extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1]; +#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0) +extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1]; +#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0) +extern const char* const MSG_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER LANG_TABLE_SELECT(MSG_EXTRUDER_LANG_TABLE) +extern const char* const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_1 LANG_TABLE_SELECT(MSG_EXTRUDER_1_LANG_TABLE) +extern const char* const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_2 LANG_TABLE_SELECT(MSG_EXTRUDER_2_LANG_TABLE) +extern const char* const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_3 LANG_TABLE_SELECT(MSG_EXTRUDER_3_LANG_TABLE) +extern const char* const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_4 LANG_TABLE_SELECT(MSG_EXTRUDER_4_LANG_TABLE) +extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM]; +#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE) +extern const char* const MSG_Enqueing_LANG_TABLE[1]; +#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0) +extern const char* const MSG_FACTOR_LANG_TABLE[1]; +#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) +extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) +extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1]; +#define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0) +extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) +extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) +extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) +extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; +#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) +extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; +#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0) +extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM]; +#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) +extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) +extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM]; +#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT(MSG_FINISHING_MOVEMENTS_LANG_TABLE) +extern const char* const MSG_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FLOW LANG_TABLE_SELECT(MSG_FLOW_LANG_TABLE) +extern const char* const MSG_FLOW0_LANG_TABLE[1]; +#define MSG_FLOW0 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW0_LANG_TABLE, 0) +extern const char* const MSG_FLOW1_LANG_TABLE[1]; +#define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) +extern const char* const MSG_FLOW2_LANG_TABLE[1]; +#define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) +extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) +extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; +#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) +extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) +extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT(MSG_HEATING_COMPLETE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ LANG_TABLE_SELECT(MSG_HOMEYZ_LANG_TABLE) +extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE) +extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1]; +#define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) +extern const char* const MSG_INIT_SDCARD_LANG_TABLE[1]; +#define MSG_INIT_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_INIT_SDCARD_LANG_TABLE, 0) +extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE) +extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM]; +#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE) +extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT(MSG_LANGUAGE_NAME_LANG_TABLE) +#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, LANG) +extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT(MSG_LANGUAGE_SELECT_LANG_TABLE) +#define MSG_LANGUAGE_SELECT_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, LANG) +extern const char* const MSG_LEFT_LANG_TABLE[LANG_NUM]; +#define MSG_LEFT LANG_TABLE_SELECT(MSG_LEFT_LANG_TABLE) +extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) +extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) +extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; +#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) +extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM]; +#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE) +extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M105_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M105_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M115_REPORT_LANG_TABLE[1]; +#define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0) +extern const char* const MSG_M119_REPORT_LANG_TABLE[1]; +#define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0) +extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M200_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M200_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1]; +#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0) +extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM]; +#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) +extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM]; +#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE) +extern const char* const MSG_MAX_LANG_TABLE[1]; +#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) +extern const char* const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURED_SKEW LANG_TABLE_SELECT(MSG_MEASURED_SKEW_LANG_TABLE) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE) +extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT(MSG_MENU_CALIBRATION_LANG_TABLE) +extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM]; +#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT(MSG_MESH_BED_LEVELING_LANG_TABLE) +extern const char* const MSG_MIN_LANG_TABLE[1]; +#define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0) +extern const char* const MSG_MOTION_LANG_TABLE[1]; +#define MSG_MOTION LANG_TABLE_SELECT_EXPLICIT(MSG_MOTION_LANG_TABLE, 0) +extern const char* const MSG_MOVE_01MM_LANG_TABLE[1]; +#define MSG_MOVE_01MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_01MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_10MM_LANG_TABLE[1]; +#define MSG_MOVE_10MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_10MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_1MM_LANG_TABLE[1]; +#define MSG_MOVE_1MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_1MM_LANG_TABLE, 0) +extern const char* const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_AXIS LANG_TABLE_SELECT(MSG_MOVE_AXIS_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE) +extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE) +extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE) +extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Y LANG_TABLE_SELECT(MSG_MOVE_Y_LANG_TABLE) +extern const char* const MSG_MOVE_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Z LANG_TABLE_SELECT(MSG_MOVE_Z_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE) +extern const char* const MSG_NO_LANG_TABLE[LANG_NUM]; +#define MSG_NO LANG_TABLE_SELECT(MSG_NO_LANG_TABLE) +extern const char* const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_COLOR LANG_TABLE_SELECT(MSG_NOT_COLOR_LANG_TABLE) +extern const char* const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_LOADED LANG_TABLE_SELECT(MSG_NOT_LOADED_LANG_TABLE) +extern const char* const MSG_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_NOZZLE LANG_TABLE_SELECT(MSG_NOZZLE_LANG_TABLE) +extern const char* const MSG_NOZZLE1_LANG_TABLE[1]; +#define MSG_NOZZLE1 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE1_LANG_TABLE, 0) +extern const char* const MSG_NOZZLE2_LANG_TABLE[1]; +#define MSG_NOZZLE2 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE2_LANG_TABLE, 0) +extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM]; +#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE) +extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM]; +#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE) +extern const char* const MSG_OFF_LANG_TABLE[1]; +#define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0) +extern const char* const MSG_OK_LANG_TABLE[1]; +#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) +extern const char* const MSG_ON_LANG_TABLE[1]; +#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) +extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM]; +#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE) +extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) +extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE) +extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_PID_EXTRUDER LANG_TABLE_SELECT(MSG_PID_EXTRUDER_LANG_TABLE) +extern const char* const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM]; +#define MSG_PID_FINISHED LANG_TABLE_SELECT(MSG_PID_FINISHED_LANG_TABLE) +extern const char* const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM]; +#define MSG_PID_RUNNING LANG_TABLE_SELECT(MSG_PID_RUNNING_LANG_TABLE) +extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) +extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) +extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; +#define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) +extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; +#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) +extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; +#define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0) +extern const char* const MSG_POWERUP_LANG_TABLE[1]; +#define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0) +extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) +extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) +extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) +extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; +#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) +extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT(MSG_PRINTER_DISCONNECTED_LANG_TABLE) +extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) +extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_PAUSED LANG_TABLE_SELECT(MSG_PRINT_PAUSED_LANG_TABLE) +extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D LANG_TABLE_SELECT(MSG_PRUSA3D_LANG_TABLE) +extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT(MSG_PRUSA3D_FORUM_LANG_TABLE) +extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE) +extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM]; +#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE) +extern const char* const MSG_RECTRACT_LANG_TABLE[1]; +#define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) +extern const char* const MSG_REFRESH_LANG_TABLE[1]; +#define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) +extern const char* const MSG_RESEND_LANG_TABLE[1]; +#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) +extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; +#define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0) +extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; +#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) +extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE) +extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE) +extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING_PRINT LANG_TABLE_SELECT(MSG_RESUMING_PRINT_LANG_TABLE) +extern const char* const MSG_RIGHT_LANG_TABLE[LANG_NUM]; +#define MSG_RIGHT LANG_TABLE_SELECT(MSG_RIGHT_LANG_TABLE) +extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1]; +#define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0) +extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1]; +#define MSG_SD_CANT_OPEN_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE, 0) +extern const char* const MSG_SD_CARD_OK_LANG_TABLE[1]; +#define MSG_SD_CARD_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CARD_OK_LANG_TABLE, 0) +extern const char* const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1]; +#define MSG_SD_ERR_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE, 0) +extern const char* const MSG_SD_FILE_OPENED_LANG_TABLE[1]; +#define MSG_SD_FILE_OPENED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_OPENED_LANG_TABLE, 0) +extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1]; +#define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0) +extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1]; +#define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE) +extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1]; +#define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0) +extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1]; +#define MSG_SD_OPENROOT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPENROOT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1]; +#define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1]; +#define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0) +extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE) +extern const char* const MSG_SD_SIZE_LANG_TABLE[1]; +#define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0) +extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1]; +#define MSG_SD_VOL_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_VOL_INIT_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1]; +#define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0) +extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1]; +#define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0) +extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE) +extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT(MSG_SELFTEST_BEDHEATER_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_X_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) +extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) +extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) +extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE) +extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT(MSG_SELFTEST_MOTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE) +extern const char* const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_OK LANG_TABLE_SELECT(MSG_SELFTEST_OK_LANG_TABLE) +extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE) +extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE) +extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE) +extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1]; +#define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0) +extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM]; +#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE) +extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[1]; +#define MSG_SET_HOME_OFFSETS LANG_TABLE_SELECT_EXPLICIT(MSG_SET_HOME_OFFSETS_LANG_TABLE, 0) +extern const char* const MSG_SET_ORIGIN_LANG_TABLE[1]; +#define MSG_SET_ORIGIN LANG_TABLE_SELECT_EXPLICIT(MSG_SET_ORIGIN_LANG_TABLE, 0) +extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT(MSG_SET_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_SEVERE_SKEW LANG_TABLE_SELECT(MSG_SEVERE_SKEW_LANG_TABLE) +extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT(MSG_SHOW_END_STOPS_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE) +extern const char* const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM]; +#define MSG_SLIGHT_SKEW LANG_TABLE_SELECT(MSG_SLIGHT_SKEW_LANG_TABLE) +extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1]; +#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) +extern const char* const MSG_SORTING_LANG_TABLE[LANG_NUM]; +#define MSG_SORTING LANG_TABLE_SELECT(MSG_SORTING_LANG_TABLE) +extern const char* const MSG_SORT_ALPHA_LANG_TABLE[1]; +#define MSG_SORT_ALPHA LANG_TABLE_SELECT_EXPLICIT(MSG_SORT_ALPHA_LANG_TABLE, 0) +extern const char* const MSG_SORT_NONE_LANG_TABLE[LANG_NUM]; +#define MSG_SORT_NONE LANG_TABLE_SELECT(MSG_SORT_NONE_LANG_TABLE) +extern const char* const MSG_SORT_TIME_LANG_TABLE[LANG_NUM]; +#define MSG_SORT_TIME LANG_TABLE_SELECT(MSG_SORT_TIME_LANG_TABLE) +extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) +extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; +#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) +extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; +#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) +extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT(MSG_STATS_FILAMENTUSED_LANG_TABLE) +extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT(MSG_STATS_PRINTTIME_LANG_TABLE) +extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) +extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) +extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; +#define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) +extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; +#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE) +extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE) +extern const char* const MSG_STORE_EPROM_LANG_TABLE[1]; +#define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0) +extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM]; +#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT(MSG_SWITCH_PS_OFF_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT(MSG_SWITCH_PS_ON_LANG_TABLE) +extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM]; +#define MSG_TAKE_EFFECT LANG_TABLE_SELECT(MSG_TAKE_EFFECT_LANG_TABLE) +extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE) +extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM]; +#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) +extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; +#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) +extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; +#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) +extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; +#define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) +extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; +#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) +extern const char* const MSG_VMIN_LANG_TABLE[1]; +#define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) +extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; +#define MSG_VOLUMETRIC LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_LANG_TABLE, 0) +extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1]; +#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0) +extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1]; +#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0) +extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM]; +#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE) +extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; +#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) +extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; +#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) +extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; +#define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) +extern const char* const MSG_X_MAX_LANG_TABLE[1]; +#define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) +extern const char* const MSG_X_MIN_LANG_TABLE[1]; +#define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0) +extern const char* const MSG_YES_LANG_TABLE[LANG_NUM]; +#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE) +extern const char* const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM]; +#define MSG_Y_DISTANCE_FROM_MIN LANG_TABLE_SELECT(MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE) +extern const char* const MSG_Y_MAX_LANG_TABLE[1]; +#define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0) +extern const char* const MSG_Y_MIN_LANG_TABLE[1]; +#define MSG_Y_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MIN_LANG_TABLE, 0) +extern const char* const MSG_ZPROBE_OUT_LANG_TABLE[1]; +#define MSG_ZPROBE_OUT LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_OUT_LANG_TABLE, 0) +extern const char* const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1]; +#define MSG_ZPROBE_ZOFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_ZPROBE_ZOFFSET_LANG_TABLE, 0) +extern const char* const MSG_Z_MAX_LANG_TABLE[1]; +#define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0) +extern const char* const MSG_Z_MIN_LANG_TABLE[1]; +#define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0) +extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM]; +#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE) + +extern char* CAT2(const char *s1,const char *s2); +extern char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4); + +#endif //LANGUAGE_ALL.H From 6eeea402e4564dcdcd4bce24983ae1677894217b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 1 Sep 2017 14:06:54 +0200 Subject: [PATCH 03/29] initial --- Firmware/Marlin_main.cpp | 13 +++++++++---- Firmware/pins.h | 2 ++ Firmware/ultralcd.cpp | 10 +++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b1f2a5f55..a6c5f9699 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4775,8 +4775,12 @@ Sigma_Exit: { if(code_seen('S')) { + saved_feedmultiply = feedmultiply; feedmultiply = code_value() ; } + if (code_seen('R')) { //restore + feedmultiply = saved_feedmultiply; + } } break; case 221: // M221 S- set extrude factor override percentage @@ -5659,6 +5663,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); + pinMode(E_MUX2_PIN, OUTPUT); delay(100); SERIAL_ECHO_START; @@ -5668,22 +5673,22 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; } delay(100); diff --git a/Firmware/pins.h b/Firmware/pins.h index 68375db79..9a979fdd3 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -67,6 +67,7 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 +#define E_MUX2_PIN 84 #endif @@ -228,6 +229,7 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 +#define E_MUX2_PIN 84 #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b0fd89638..a84df75d1 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3264,26 +3264,29 @@ void change_extr(int extr) { //switches multiplexer for extruders pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); + pinMode(E_MUX2_PIN, OUTPUT); switch (extr) { case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); + WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); + WRITE(E_MUX2_PIN, LOW); break; } @@ -3291,7 +3294,8 @@ void change_extr(int extr) { //switches multiplexer for extruders } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) - return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } From 5017cdeaa4d64fafffb7c4dc725be8eb16e6f489 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 4 Sep 2017 11:26:18 +0200 Subject: [PATCH 04/29] farm number and farm mode initialization duplicity removed, prepare for shipping typo (reseting farm mode) --- Firmware/Marlin_main.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a6c5f9699..1915f14fc 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -948,7 +948,7 @@ void factory_reset(char level, bool quiet) // Force the "Follow calibration flow" message at the next boot up. calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION); farm_no = 0; - farm_mode == false; + farm_mode = false; eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); @@ -1011,7 +1011,7 @@ void setup() setup_powerhold(); farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - //if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode + if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode if (farm_no == 0xFFFF) farm_no = 0; if (farm_mode) { @@ -1168,16 +1168,6 @@ void setup() #if defined(Z_AXIS_ALWAYS_ON) enable_z(); #endif - farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if (farm_no == 0xFFFF) farm_no = 0; - if (farm_mode) - { - prusa_statistics(8); - no_response = true; //we need confirmation by recieving PRUSA thx - important_status = 8; - } // Enable Toshiba FlashAir SD card / WiFi enahanced card. card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); From bf2c5ae3101360f670e0b33a6ed7f8cf2825edc2 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 4 Sep 2017 18:17:28 +0200 Subject: [PATCH 05/29] info on serial added --- Firmware/ultralcd.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a84df75d1..53907e960 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3268,32 +3268,44 @@ void change_extr(int extr) { //switches multiplexer for extruders switch (extr) { case 1: + SERIAL_ECHOPGM("extr2"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); WRITE(E_MUX2_PIN, LOW); break; case 2: + SERIAL_ECHOPGM("extr3"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); WRITE(E_MUX2_PIN, LOW); break; case 3: + SERIAL_ECHOPGM("extr4"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); WRITE(E_MUX2_PIN, LOW); break; default: + SERIAL_ECHOPGM("extr1"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); WRITE(E_MUX2_PIN, LOW); break; - } + } delay(100); + get_ext_nr(); } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) + SERIAL_ECHOPGM("E_MUX0_PIN:"); + READ(E_MUX0_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + SERIAL_ECHOPGM("E_MUX1_PIN:"); + READ(E_MUX1_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + SERIAL_ECHOPGM("E_MUX2_PIN:"); + READ(E_MUX2_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } From 4af075a316a09d72a2f1b89dc03b1d558e250754 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 19:55:03 +0200 Subject: [PATCH 06/29] fixed typos, removed M84 pin usage for MM --- Firmware/Marlin_main.cpp | 5 ---- Firmware/pins.h | 2 -- Firmware/ultralcd.cpp | 25 +++---------------- .../ultralcd_implementation_hitachi_HD44780.h | 1 + 4 files changed, 5 insertions(+), 28 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8a938cefa..4a25372c7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5803,7 +5803,6 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); - pinMode(E_MUX2_PIN, OUTPUT); delay(100); SERIAL_ECHO_START; @@ -5813,22 +5812,18 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; } delay(100); diff --git a/Firmware/pins.h b/Firmware/pins.h index 9a979fdd3..68375db79 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -67,7 +67,6 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 -#define E_MUX2_PIN 84 #endif @@ -229,7 +228,6 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 -#define E_MUX2_PIN 84 #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0c7e4e178..a2d43ae3a 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -620,9 +620,9 @@ void lcd_commands() { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); - enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0)); - nquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0)); - enquecommand_P(PSTR("G1 Z0.200 F7200.000)); + enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); + enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); + enquecommand_P(PSTR("G1 Z0.200 F7200.000")); enquecommand_P(PSTR("G1 X220.0 E13 F1000.0")); enquecommand_P(PSTR("G1 X240.0 E0 F1000.0")); enquecommand_P(PSTR("G92 E0.0")); @@ -3799,33 +3799,24 @@ void change_extr(int extr) { //switches multiplexer for extruders pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); - pinMode(E_MUX2_PIN, OUTPUT); switch (extr) { case 1: - SERIAL_ECHOPGM("extr2"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; case 2: - SERIAL_ECHOPGM("extr3"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; case 3: - SERIAL_ECHOPGM("extr4"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; default: - SERIAL_ECHOPGM("extr1"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; } @@ -3834,15 +3825,7 @@ void change_extr(int extr) { //switches multiplexer for extruders } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) - SERIAL_ECHOPGM("E_MUX0_PIN:"); - READ(E_MUX0_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - SERIAL_ECHOPGM("E_MUX1_PIN:"); - READ(E_MUX1_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - SERIAL_ECHOPGM("E_MUX2_PIN:"); - READ(E_MUX2_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - - return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); - //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index f880da88c..4f91947cc 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -498,6 +498,7 @@ void lcd_set_custom_characters_nextpage() B10110, B11100, B01000, + B00000, B00000 }; From 4960127240f7fe2b5038248e6ba9e0d3f29b9b6d Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 20:33:25 +0200 Subject: [PATCH 07/29] special variable for saving/restoring feedmultiply using M220 --- Firmware/Marlin_main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4a25372c7..00490e2c9 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -498,6 +498,8 @@ unsigned long chdkHigh = 0; boolean chdkActive = false; #endif +static int saved_feedmultiply_mm = 100; + //=========================================================================== //=============================Routines====================================== //=========================================================================== @@ -4938,11 +4940,11 @@ Sigma_Exit: { if(code_seen('S')) { - saved_feedmultiply = feedmultiply; + saved_feedmultiply_mm = feedmultiply; feedmultiply = code_value() ; } - if (code_seen('R')) { //restore - feedmultiply = saved_feedmultiply; + if (code_seen('R')) { //restore previous feedmultiply + feedmultiply = saved_feedmultiply_mm; } } break; From 376c6ad5a830a74fb8189a6fcdb964157ba340a9 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 15 Sep 2017 11:12:41 +0200 Subject: [PATCH 08/29] removed redundant code --- Firmware/ultralcd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a2d43ae3a..7c5b98708 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3821,7 +3821,6 @@ void change_extr(int extr) { //switches multiplexer for extruders break; } delay(100); - get_ext_nr(); } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) From dc7b1e3f8e7aa3f3b5f73f8510dbf334ecce2261 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 15 Sep 2017 11:29:35 +0200 Subject: [PATCH 09/29] changed M220 --- Firmware/Marlin_main.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 00490e2c9..f7ab5dbc8 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4936,11 +4936,15 @@ Sigma_Exit: SERIAL_ECHOLN(""); }break; #endif + case 220: // M220 S- set speed factor override percentage { - if(code_seen('S')) - { + if (code_seen('B')) //backup current speed factor + { saved_feedmultiply_mm = feedmultiply; + } + if(code_seen('S')) + { feedmultiply = code_value() ; } if (code_seen('R')) { //restore previous feedmultiply From 9e1a61cebc648456d135c7ae84f8581f07c2d05c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 15 Sep 2017 18:04:19 +0200 Subject: [PATCH 10/29] initial version --- Firmware/Marlin_main.cpp | 40 ++++++++++++++++++++++++++++++++++++++- Firmware/language_all.cpp | 5 +++++ Firmware/language_all.h | 2 ++ Firmware/language_en.h | 1 + Firmware/ultralcd.cpp | 31 ++++++++++++++++++++---------- Firmware/ultralcd.h | 1 + 6 files changed, 69 insertions(+), 11 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f7ab5dbc8..968b87e25 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5964,14 +5964,52 @@ void ClearToSend() SERIAL_PROTOCOLLNRPGM(MSG_OK); } +update_currents() { + float current_high[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD; + float current_low[3] = DEFAULT_PWM_MOTOR_CURRENT; + float tmp_motor[3]; + + SERIAL_ECHOLNPGM("Currents updated: "); + + if (destination[Z_AXIS] < Z_SILENT) { + SERIAL_ECHOLNPGM("LOW"); + for (uint8_t i = 0; i < 3; i++) { + digipot_current(i, current_low[i]); + MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(current_low[i]); + } + } + else if (destination[Z_AXIS] > Z_HIGH_POWER) { + SERIAL_ECHOLNPGM("HIGH"); + for (uint8_t i = 0; i < 3; i++) { + digipot_current(i, current_high[i]); + MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(current_high[i]); + } + } + else { + for (uint8_t i = 0; i < 3; i++) { + float q = current_low[i] - Z_SILENT*((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT)); + tmp_motor[i] = ((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT))*destination[Z_AXIS] + q; + digipot_current(i, tmp_motor[i]); + MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(tmp_motor[i]); + } + } +} + void get_coordinates() { bool seen[4]={false,false,false,false}; for(int8_t i=0; i < NUM_AXIS; i++) { if(code_seen(axis_codes[i])) { - destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; + destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; seen[i]=true; + if (i == Z_AXIS && SilentModeMenu == 2) update_currents(); } else destination[i] = current_position[i]; //Are these else lines really needed? } diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index db86f577d..6beaa3513 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -63,6 +63,11 @@ const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_AUTO_HOME_DE }; +const char MSG_AUTO_MODE_ON_EN[] PROGMEM = "Mode [auto power]"; +const char * const MSG_AUTO_MODE_ON_LANG_TABLE[1] PROGMEM = { + MSG_AUTO_MODE_ON_EN +}; + const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { MSG_A_RETRACT_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index e5cebaa3d..b35579e92 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -38,6 +38,8 @@ extern const char* const MSG_AUTHOR_LANG_TABLE[1]; #define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; #define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) +extern const char* const MSG_AUTO_MODE_ON_LANG_TABLE[1]; +#define MSG_AUTO_MODE_ON LANG_TABLE_SELECT_EXPLICIT(MSG_AUTO_MODE_ON_LANG_TABLE, 0) extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; #define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 61f2ef89e..752722867 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -103,6 +103,7 @@ #define MSG_SILENT_MODE_ON "Mode [silent]" #define MSG_SILENT_MODE_OFF "Mode [high power]" +#define MSG_AUTO_MODE_ON "Mode [auto power]" #define(length=20) MSG_REBOOT "Reboot the printer" #define(length=20) MSG_TAKE_EFFECT " for take effect" diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7c5b98708..7a2fc682d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2754,7 +2754,12 @@ static void lcd_sort_type_set() { #endif //SDCARD_SORT_ALPHA static void lcd_silent_mode_set() { - SilentModeMenu = !SilentModeMenu; + switch (SilentModeMenu) { + case 0: SilentModeMenu = 1; break; + case 1: SilentModeMenu = 2; break; + case 2: SilentModeMenu = 0; break; + default: SilentModeMenu = 0; break; + } eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); digipot_init(); lcd_goto_menu(lcd_settings_menu, 7); @@ -3157,11 +3162,14 @@ static void lcd_settings_menu() { MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); } - - if ((SilentModeMenu == 0) || (farm_mode) ) { - MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); - } else { - MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); + + if (!farm_mode) { //dont show in menu if we are in farm mode + switch (SilentModeMenu) { + case 0: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + case 1: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; + case 2: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; + default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + } } if (!isPrintPaused && !homing_flag) @@ -4530,10 +4538,13 @@ static void lcd_tune_menu() MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif - if (SilentModeMenu == 0) { - MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set_tune); - } else { - MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set_tune); + if (!farm_mode) { //dont show in menu if we are in farm mode + switch (SilentModeMenu) { + case 0: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + case 1: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; + case 2: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; + default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + } } END_MENU(); } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 7ff4ab805..c344512be 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -105,6 +105,7 @@ void lcd_mylang(); extern int farm_no; extern int farm_timer; extern int farm_status; + extern int8_t SilentModeMenu; #ifdef SNMM extern uint8_t snmm_extruder; From b24e12143e093f31fc0700c1045d649116ae0dfb Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 18 Sep 2017 12:46:50 +0200 Subject: [PATCH 11/29] tune menu updated --- Firmware/stepper.cpp | 5 ++--- Firmware/ultralcd.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 1528f46f1..53bc7f5a5 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1156,10 +1156,9 @@ void EEPROM_read_st(int pos, uint8_t* value, uint8_t size) void digipot_init() //Initialize Digipot Motor Current -{ - +{ EEPROM_read_st(EEPROM_SILENT,(uint8_t*)&SilentMode,sizeof(SilentMode)); - + SilentModeMenu = SilentMode; #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 if(SilentMode == 0){ const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT_LOUD; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7a2fc682d..5879af1c8 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4502,8 +4502,13 @@ static void lcd_autostart_sd() static void lcd_silent_mode_set_tune() { - SilentModeMenu = !SilentModeMenu; - eeprom_update_byte((unsigned char*)EEPROM_SILENT, SilentModeMenu); + switch (SilentModeMenu) { + case 0: SilentModeMenu = 1; break; + case 1: SilentModeMenu = 2; break; + case 2: SilentModeMenu = 0; break; + default: SilentModeMenu = 0; break; + } + eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); digipot_init(); lcd_goto_menu(lcd_tune_menu, 9); } From 1d187062e4888127a60be213f056a2ab5cc0a60b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 18 Sep 2017 12:48:49 +0200 Subject: [PATCH 12/29] info on serial not used --- Firmware/Marlin_main.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 968b87e25..82a48cb75 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5969,24 +5969,24 @@ update_currents() { float current_low[3] = DEFAULT_PWM_MOTOR_CURRENT; float tmp_motor[3]; - SERIAL_ECHOLNPGM("Currents updated: "); + //SERIAL_ECHOLNPGM("Currents updated: "); if (destination[Z_AXIS] < Z_SILENT) { - SERIAL_ECHOLNPGM("LOW"); + //SERIAL_ECHOLNPGM("LOW"); for (uint8_t i = 0; i < 3; i++) { digipot_current(i, current_low[i]); - MYSERIAL.print(int(i)); + /*MYSERIAL.print(int(i)); SERIAL_ECHOPGM(": "); - MYSERIAL.println(current_low[i]); + MYSERIAL.println(current_low[i]);*/ } } else if (destination[Z_AXIS] > Z_HIGH_POWER) { - SERIAL_ECHOLNPGM("HIGH"); + //SERIAL_ECHOLNPGM("HIGH"); for (uint8_t i = 0; i < 3; i++) { digipot_current(i, current_high[i]); - MYSERIAL.print(int(i)); + /*MYSERIAL.print(int(i)); SERIAL_ECHOPGM(": "); - MYSERIAL.println(current_high[i]); + MYSERIAL.println(current_high[i]);*/ } } else { @@ -5994,9 +5994,9 @@ update_currents() { float q = current_low[i] - Z_SILENT*((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT)); tmp_motor[i] = ((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT))*destination[Z_AXIS] + q; digipot_current(i, tmp_motor[i]); - MYSERIAL.print(int(i)); + /*MYSERIAL.print(int(i)); SERIAL_ECHOPGM(": "); - MYSERIAL.println(tmp_motor[i]); + MYSERIAL.println(tmp_motor[i]);*/ } } } From 63f0ee954286d69800970086b0838cea3d3c18ee Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 19 Sep 2017 12:58:29 +0200 Subject: [PATCH 13/29] pause print resume: fixed bug when working with absolute coordinates for extruder --- Firmware/ultralcd.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7c5b98708..1970d8da9 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -560,10 +560,16 @@ void lcd_commands() strcpy(cmd1, "G1 Z"); strcat(cmd1, ftostr32(pause_lastpos[Z_AXIS])); enquecommand(cmd1); - if (axis_relative_modes[3] == true) enquecommand_P(PSTR("M83")); // set extruder to relative mode. - else enquecommand_P(PSTR("M82")); // set extruder to absolute mode - enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract - enquecommand_P(PSTR("G90")); //absolute positioning + + if (axis_relative_modes[3] == false) { + enquecommand_P(PSTR("M83")); // set extruder to relative mode + enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract + enquecommand_P(PSTR("M82")); // set extruder to absolute mode + } + else { + enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract + } + lcd_commands_step = 1; } if (lcd_commands_step == 3 && !blocks_queued()) { //wait for nozzle to reach target temp @@ -578,7 +584,7 @@ void lcd_commands() strcpy(cmd1, "M104 S"); strcat(cmd1, ftostr3(HotendTempBckp)); enquecommand(cmd1); - + enquecommand_P(PSTR("G90")); //absolute positioning strcpy(cmd1, "G1 X"); strcat(cmd1, ftostr32(pause_lastpos[X_AXIS])); strcat(cmd1, " Y"); From 130b49200c163a00b5ebdb8fc79bad6a826d1aee Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 19 Sep 2017 13:06:40 +0200 Subject: [PATCH 14/29] changed version --- Firmware/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 0f8b2986a..5c7266b78 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-7" +#define FW_version "3.0.12-8" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 From b2552b8e0ece3288544465a4f61472c321f453b5 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 27 Sep 2017 16:33:30 +0200 Subject: [PATCH 15/29] faster sorting as we are reading just one dir entry to get filename --- Firmware/Configuration_adv.h | 9 +-- Firmware/SdBaseFile.cpp | 5 ++ Firmware/SdBaseFile.h | 1 + Firmware/cardreader.cpp | 105 +++++++++++++++++++++++++++++++++-- Firmware/cardreader.h | 4 +- 5 files changed, 113 insertions(+), 11 deletions(-) diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index 4f3a71c49..e14cffd22 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -261,13 +261,14 @@ #define SD_SORT_ALPHA 1 #define SD_SORT_NONE 2 - #define SDSORT_LIMIT 20 // Maximum number of sorted items (10-256). - #define FOLDER_SORTING -1 // -1=above 0=none 1=below + #define SDSORT_LIMIT 30 // Maximum number of sorted items (10-256). + #define FOLDER_SORTING 0 // -1=above 0=none 1=below #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code. - #define SDSORT_USES_RAM true // Pre-allocate a static array for faster pre-sorting. - #define SDSORT_USES_STACK true // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) + #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. + #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! + #define SDSORT_POINTERS false //stores adresses of filenames on stack #endif #if defined(SDCARD_SORT_ALPHA) diff --git a/Firmware/SdBaseFile.cpp b/Firmware/SdBaseFile.cpp index d8eca5fc8..11bc7b81d 100644 --- a/Firmware/SdBaseFile.cpp +++ b/Firmware/SdBaseFile.cpp @@ -1123,6 +1123,11 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { while (1) { n = read(dir, sizeof(dir_t)); + /*SERIAL_ECHOPGM("Jsem uvnitr: "); + MYSERIAL.print(n); + uint32_t pom = curPosition(); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(pom, 10);*/ if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; // last entry if DIR_NAME_FREE if (dir->name[0] == DIR_NAME_FREE) return 0; diff --git a/Firmware/SdBaseFile.h b/Firmware/SdBaseFile.h index 923a391dd..bd2d91d10 100644 --- a/Firmware/SdBaseFile.h +++ b/Firmware/SdBaseFile.h @@ -306,6 +306,7 @@ class SdBaseFile { */ bool seekEnd(int32_t offset = 0) {return seekSet(fileSize_ + offset);} bool seekSet(uint32_t pos); + //bool setCluster(uint32_t clust); bool sync(); bool timestamp(SdBaseFile* file); bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 27100077c..ebee867e6 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -59,6 +59,28 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters } +void CardReader::lsDive_pointer(const char *prepend, SdFile parent, const char * const match) { + dir_t p; + uint8_t cnt = 0; + + //parent.seekSet = + // Read the next entry from a directory + parent.readDir(p, longFilename); + + + uint8_t pn0 = p.name[0]; + + filenameIsDir = DIR_IS_SUBDIR(&p); + + + + + createFilename(filename, p); + creationDate = p.creationDate; + creationTime = p.creationTime; + +} + /** * Dive into a folder and recurse depth-first to perform a pre-set operation lsAction: * LS_Count - Add +1 to nrFiles for every file within the parent @@ -70,9 +92,20 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m dir_t p; uint8_t cnt = 0; + /*SERIAL_ECHOPGM("Cur pos. first: "); + uint32_t pom = parent.curPosition(); + MYSERIAL.println(pom, 10);*/ + // Read the next entry from a directory while (parent.readDir(p, longFilename) > 0) { - + //MYSERIAL.print(int(cnt)); + //uint32_t pom = parent.curCluster(); + //SERIAL_ECHOPGM(": "); + //MYSERIAL.print(pom, 10); + //SERIAL_ECHOPGM("; "); + /*SERIAL_ECHOPGM("Cur pos.: "); + uint32_t pom = parent.curPosition(); + MYSERIAL.println(pom, 10);*/ // If the entry is a directory and the action is LS_SerialPrint if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { @@ -145,15 +178,18 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m SERIAL_ECHOPGM("Access date: "); MYSERIAL.println(p.lastAccessDate); SERIAL_ECHOLNPGM("");*/ + cluster = parent.curCluster(); + position = parent.curPosition(); creationDate = p.creationDate; creationTime = p.creationTime; - //writeDate = p.lastAccessDate; if (match != NULL) { if (strcasecmp(match, filename) == 0) return; } - else if (cnt == nrFiles) return; + else if (cnt == nrFiles) { + return; + } cnt++; break; } @@ -630,6 +666,16 @@ void CardReader::closefile(bool store_location) } +/*void CardReader::getfilename_adress(uint16_t nr, const char * const match) +{ + curDir = &workDir; + lsAction = LS_GetFilenameAdress; + nrFiles = nr; + curDir->rewind(); + lsDive("", *curDir, match); + +}*/ + void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) { curDir=&workDir; @@ -640,6 +686,29 @@ void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) } +void CardReader::getfilename_simple(uint32_t position, const char * const match/*=NULL*/) +{ + //SERIAL_ECHOPGM("FILE NR:"); + //MYSERIAL.println(position); + curDir = &workDir; + //curDir = curDir + nr * 32 * 8; //32 bytes per entry + lsAction = LS_GetFilename; + //nrFiles = nr; + //curDir->rewind(); + curDir->seekSet(position); + //curDir->setpos(32*nr); + lsDive_pointer("", *curDir, match); + /*SERIAL_ECHOPGM("; Position:"); + uint32_t pom = curDir->curPosition(); + MYSERIAL.print(pom, 10); + SERIAL_ECHOPGM("; Cluster:"); + MYSERIAL.println(curDir->curCluster());*/ + + + +} + + uint16_t CardReader::getnrfilenames() { curDir=&workDir; @@ -712,6 +781,7 @@ void CardReader::getfilename_sorted(const uint16_t nr) { */ void CardReader::presort() { + unsigned long start_time = millis(); if (farm_mode) return; //sorting is not used in farm mode uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); @@ -756,6 +826,8 @@ void CardReader::presort() { char sortnames[fileCnt][LONG_FILENAME_LENGTH]; uint16_t creation_time[SDSORT_LIMIT]; uint16_t creation_date[SDSORT_LIMIT]; + //#elif SDSORT_POINTERS + #endif // Folder sorting needs 1 bit per entry for flags. @@ -768,6 +840,9 @@ void CardReader::presort() { #endif #else // !SDSORT_USES_RAM + // uint32_t clusters [fileCnt]; + uint32_t positions [fileCnt]; + // By default re-read the names from SD for every compare // retaining only two filenames at a time. This is very @@ -782,6 +857,11 @@ void CardReader::presort() { // Init sort order. for (uint16_t i = 0; i < fileCnt; i++) { sort_order[i] = i; + getfilename(i); + //clusters[i] = cluster; + positions[i] = position-96; + //MYSERIAL.println(i); + //MYSERIAL.println(position); // If using RAM then read all filenames now. #if SDSORT_USES_RAM getfilename(i); @@ -812,6 +892,8 @@ void CardReader::presort() { #endif #endif } + SERIAL_ECHOPGM("Mezicas:"); + MYSERIAL.println(millis() - start_time); // Bubble Sort uint16_t counter = 0; for (uint16_t i = fileCnt; --i;) { @@ -862,15 +944,22 @@ void CardReader::presort() { // throughout the loop. Slow if there are many. #if !SDSORT_USES_RAM - getfilename(o1); + getfilename_simple(positions[o1]); + //getfilename(o1); strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it) creation_date_bckp = creationDate; creation_time_bckp = creationTime; #if HAS_FOLDER_SORTING bool dir1 = filenameIsDir; #endif - getfilename(o2); - char *name2 = LONGEST_FILENAME; // use the string in-place + getfilename_simple(positions[o2]); + // getfilename(o2); + char *name2 = LONGEST_FILENAME; // use the string in-place + + //SERIAL_ECHOPGM("NAMES:"); + //MYSERIAL.println(name1); + //MYSERIAL.println(name2); + #endif // !SDSORT_USES_RAM @@ -887,7 +976,9 @@ void CardReader::presort() { sort_order[j + 1] = o1; didSwap = true; //SERIAL_ECHOLNPGM("did swap"); + } + //SERIAL_ECHOLNPGM(""); } if (!didSwap) break; } //end of bubble sort loop @@ -928,6 +1019,8 @@ void CardReader::presort() { lcd_set_arrows(); lcd_update(2); #endif + SERIAL_ECHOPGM("Sort time:"); + MYSERIAL.println(millis() - start_time); } void CardReader::flush_presort() { diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index dff3d263d..f043f3b44 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -32,6 +32,7 @@ public: void printingHasFinished(); void getfilename(uint16_t nr, const char* const match=NULL); + void getfilename_simple(uint32_t position, const char * const match=NULL); uint16_t getnrfilenames(); void getAbsFilename(char *t); @@ -70,6 +71,7 @@ public: bool cardOK ; char filename[13]; uint16_t creationTime, creationDate; + uint32_t cluster, position; char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; int lastnr; //last number of the autostart; @@ -142,7 +144,7 @@ private: int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. char* diveDirName; void lsDive(const char *prepend, SdFile parent, const char * const match=NULL); - + void lsDive_pointer(const char *prepend, SdFile parent, const char * const match = NULL); #ifdef SDCARD_SORT_ALPHA void flush_presort(); #endif From 5a35212231e33a6c8cfb9ec02c392da9b118f577 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 2 Oct 2017 03:59:41 +0200 Subject: [PATCH 16/29] quicksort --- Firmware/Configuration_adv.h | 3 +- Firmware/SdBaseFile.cpp | 32 ++++++++-- Firmware/cardreader.cpp | 116 +++++++++++++++++++++++++++-------- Firmware/cardreader.h | 2 + 4 files changed, 120 insertions(+), 33 deletions(-) diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index e14cffd22..3c8cd365f 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -268,7 +268,8 @@ #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! - #define SDSORT_POINTERS false //stores adresses of filenames on stack + #define SDSORT_POINTERS false //stores adresses of filenames on stack + #define QUICKSORT #endif #if defined(SDCARD_SORT_ALPHA) diff --git a/Firmware/SdBaseFile.cpp b/Firmware/SdBaseFile.cpp index 11bc7b81d..f3b037981 100644 --- a/Firmware/SdBaseFile.cpp +++ b/Firmware/SdBaseFile.cpp @@ -1113,34 +1113,51 @@ int16_t SdBaseFile::read(void* buf, uint16_t nbyte) { int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { int16_t n; // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & curPosition_)) return -1; + if (!isDir() || (0X1F & curPosition_)) { + SERIAL_ECHOLNPGM("return -1"); + return -1; + } //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly. if (longFilename != NULL) { + // SERIAL_ECHOPGM("; reseting long filename; "); longFilename[0] = '\0'; } - + //int i_pom = 0; while (1) { n = read(dir, sizeof(dir_t)); + /*SERIAL_ECHOPGM("Jsem uvnitr: "); MYSERIAL.print(n); uint32_t pom = curPosition(); SERIAL_ECHOPGM(": "); MYSERIAL.println(pom, 10);*/ + //SERIAL_ECHOPGM("i: "); + //MYSERIAL.println(i_pom++); + if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) return 0; + if (dir->name[0] == DIR_NAME_FREE) { + return 0; + SERIAL_ECHOLNPGM("DIR_NAME_FREE"); + } // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') continue; + if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { + //SERIAL_ECHOLNPGM("Empty entry, . or .."); + continue; + } //Fill the long filename if we have a long filename entry, // long filename entries are stored before the actual filename. if (DIR_IS_LONG_NAME(dir) && longFilename != NULL) { + //SERIAL_ECHOLNPGM("We have long filename entry"); vfat_t *VFAT = (vfat_t*)dir; //Sanity check the VFAT entry. The first cluster is always set to zero. And th esequence number should be higher then 0 if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) { + //SERIAL_ECHOPGM("VFAT Entries no:"); + //MYSERIAL.println(VFAT->sequenceNumber & 0x1F); //TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table. n = ((VFAT->sequenceNumber & 0x1F) - 1) * 13; longFilename[n+0] = VFAT->name1[0]; @@ -1157,8 +1174,11 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { longFilename[n+11] = VFAT->name3[0]; longFilename[n+12] = VFAT->name3[1]; //If this VFAT entry is the last one, add a NUL terminator at the end of the string - if (VFAT->sequenceNumber & 0x40) - longFilename[n+13] = '\0'; + if (VFAT->sequenceNumber & 0x40) { + longFilename[n + 13] = '\0'; + //SERIAL_ECHOPGM("LOng F"); + //MYSERIAL.println(longFilename); + } } } // return if normal file or subdirectory diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index ebee867e6..e81409aa8 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -65,8 +65,13 @@ void CardReader::lsDive_pointer(const char *prepend, SdFile parent, const char * //parent.seekSet = // Read the next entry from a directory + //SERIAL_ECHOPGM("Cur pos before.: "); + //uint32_t pom = parent.curPosition(); + //MYSERIAL.println(pom, 10); parent.readDir(p, longFilename); - + //SERIAL_ECHOPGM("Cur pos.: "); + //pom = parent.curPosition(); + //MYSERIAL.println(pom, 10); uint8_t pn0 = p.name[0]; @@ -103,9 +108,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m //SERIAL_ECHOPGM(": "); //MYSERIAL.print(pom, 10); //SERIAL_ECHOPGM("; "); - /*SERIAL_ECHOPGM("Cur pos.: "); - uint32_t pom = parent.curPosition(); - MYSERIAL.println(pom, 10);*/ + //SERIAL_ECHOPGM("Cur pos.: "); + //uint32_t pom = parent.curPosition(); + //MYSERIAL.println(pom, 10); // If the entry is a directory and the action is LS_SerialPrint if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { @@ -168,6 +173,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m case LS_GetFilename: //SERIAL_ECHOPGM("File: "); createFilename(filename, p); + //MYSERIAL.println(p.name); /*MYSERIAL.println(filename); SERIAL_ECHOPGM("Write date: "); writeDate = p.lastWriteDate; @@ -688,24 +694,12 @@ void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) void CardReader::getfilename_simple(uint32_t position, const char * const match/*=NULL*/) { - //SERIAL_ECHOPGM("FILE NR:"); - //MYSERIAL.println(position); curDir = &workDir; - //curDir = curDir + nr * 32 * 8; //32 bytes per entry lsAction = LS_GetFilename; - //nrFiles = nr; + nrFiles = 0; //curDir->rewind(); curDir->seekSet(position); - //curDir->setpos(32*nr); - lsDive_pointer("", *curDir, match); - /*SERIAL_ECHOPGM("; Position:"); - uint32_t pom = curDir->curPosition(); - MYSERIAL.print(pom, 10); - SERIAL_ECHOPGM("; Cluster:"); - MYSERIAL.println(curDir->curCluster());*/ - - - + lsDive("", *curDir, match); } @@ -771,6 +765,56 @@ void CardReader::getfilename_sorted(const uint16_t nr) { ); } + +void CardReader::swap(uint8_t array[], uint8_t left, uint8_t right) { + uint8_t tmp = array[right]; + array[right] = array[left]; + array[left] = tmp; + //SERIAL_ECHOLNPGM("Did swap"); +} + +void CardReader::quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_t positions[]) { + if (left < right) { + char name_left[LONG_FILENAME_LENGTH + 1]; + char name_i[LONG_FILENAME_LENGTH + 1]; + uint16_t creation_time_left; + uint16_t creation_date_left; + + uint8_t boundary = left; + for (uint8_t i = left+1; i < right; i++) { + uint8_t o_left = array[left]; + uint8_t o_i = array[i]; + getfilename_simple(positions[o_left]); + strcpy(name_left, LONGEST_FILENAME); // save (or getfilename below will trounce it) + creation_date_left = creationDate; + creation_time_left = creationTime; + getfilename_simple(positions[o_i]); + + /*SERIAL_ECHOLNPGM(" "); + MYSERIAL.print(int(o_left)); + SERIAL_ECHOPGM(": "); + MYSERIAL.print(positions[o_left]); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(name_left); + MYSERIAL.print(int(o_i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.print(positions[o_i]); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(LONGEST_FILENAME);*/ + strcpy(name_i, LONGEST_FILENAME); + + + if (strcasecmp(name_left, name_i) > 0) { + swap(array, i, ++boundary); + } + } + swap(array, left, boundary); + quicksort(array, left, boundary, positions); + quicksort(array, boundary + 1, right, positions); + } +} + + /** * Read all the files and produce a sort key * @@ -842,6 +886,7 @@ void CardReader::presort() { #else // !SDSORT_USES_RAM // uint32_t clusters [fileCnt]; uint32_t positions [fileCnt]; + // char *names[fileCnt]; // By default re-read the names from SD for every compare @@ -852,16 +897,32 @@ void CardReader::presort() { uint16_t creation_date_bckp; #endif - + position = 0; if (fileCnt > 1) { // Init sort order. for (uint16_t i = 0; i < fileCnt; i++) { sort_order[i] = i; - getfilename(i); + /*MYSERIAL.print(i); + SERIAL_ECHOPGM(": "); + MYSERIAL.print(position); + SERIAL_ECHOPGM("; "); + MYSERIAL.print(cluster); + SERIAL_ECHOPGM(" ");*/ + + positions[i] = position; + getfilename(i); + //MYSERIAL.print(LONGEST_FILENAME); + //names[i] = //clusters[i] = cluster; - positions[i] = position-96; + //if (longFilename[0]) SERIAL_ECHOPGM("; Long; "); + //MYSERIAL.println(i); - //MYSERIAL.println(position); + /*SERIAL_ECHOPGM("; "); + MYSERIAL.print(position); + SERIAL_ECHOPGM("; "); + MYSERIAL.print(positions[i]); + SERIAL_ECHOPGM("; "); + MYSERIAL.println(cluster);*/ // If using RAM then read all filenames now. #if SDSORT_USES_RAM getfilename(i); @@ -892,9 +953,12 @@ void CardReader::presort() { #endif #endif } - SERIAL_ECHOPGM("Mezicas:"); - MYSERIAL.println(millis() - start_time); - // Bubble Sort + /*SERIAL_ECHOPGM("Mezicas:"); + MYSERIAL.println(millis() - start_time);*/ + +#ifdef QUICKSORT + quicksort(sort_order, 0, fileCnt - 1, positions); +#else //Qicksort not defined, use Bubble Sort uint16_t counter = 0; for (uint16_t i = fileCnt; --i;) { bool didSwap = false; @@ -982,7 +1046,7 @@ void CardReader::presort() { } if (!didSwap) break; } //end of bubble sort loop - +#endif // Using RAM but not keeping names around #if (SDSORT_USES_RAM && !SDSORT_CACHE_NAMES) #if SDSORT_DYNAMIC_RAM diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index f043f3b44..b2fa4efea 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -45,6 +45,8 @@ public: #ifdef SDCARD_SORT_ALPHA void presort(); + void swap(uint8_t array[], uint8_t left, uint8_t right); + void quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_t positions[]); void getfilename_sorted(const uint16_t nr); #if SDSORT_GCODE FORCE_INLINE void setSortOn(bool b) { sort_alpha = b; presort(); } From a280447610f4e65af7e2600e91edd36a164dfccd Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 3 Oct 2017 23:16:06 +0200 Subject: [PATCH 17/29] improved progress bar, use bubble sort, sort switch moved to settings menu, manage heater, host keepalive messages, timeout prolonged, setup screen improved --- Firmware/Configuration_adv.h | 8 +- Firmware/Marlin_main.cpp | 4 +- Firmware/SdBaseFile.cpp | 17 --- Firmware/cardreader.cpp | 230 ++++++++++++----------------------- Firmware/cardreader.h | 6 +- Firmware/language_all.cpp | 5 + Firmware/language_all.h | 2 + Firmware/language_en.h | 1 + Firmware/ultralcd.cpp | 64 ++++------ Firmware/ultralcd.h | 4 +- 10 files changed, 127 insertions(+), 214 deletions(-) diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index 3c8cd365f..b25de5ffd 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -261,15 +261,15 @@ #define SD_SORT_ALPHA 1 #define SD_SORT_NONE 2 - #define SDSORT_LIMIT 30 // Maximum number of sorted items (10-256). - #define FOLDER_SORTING 0 // -1=above 0=none 1=below + #define SDSORT_LIMIT 100 // Maximum number of sorted items (10-256). + #define FOLDER_SORTING -1 // -1=above 0=none 1=below #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code. #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! - #define SDSORT_POINTERS false //stores adresses of filenames on stack - #define QUICKSORT + + // #define SDSORT_QUICKSORT #endif #if defined(SDCARD_SORT_ALPHA) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f7ab5dbc8..2c9ac5d0b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1099,8 +1099,6 @@ void setup() tp_init(); // Initialize temperature loop plan_init(); // Initialize planner; watchdog_init(); - lcd_print_at_PGM(0, 1, PSTR(" Original Prusa ")); // we need to do this again for some reason, no time to research - lcd_print_at_PGM(0, 2, PSTR(" 3D Printers ")); st_init(); // Initialize stepper, this enables interrupts! setup_photpin(); servo_init(); @@ -1197,6 +1195,8 @@ void setup() card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); // Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false), // but this times out if a blocking dialog is shown in setup(). + lcd_print_at_PGM(0, 1, PSTR(" Original Prusa ")); // we need to do this again for some reason, no time to research + lcd_print_at_PGM(0, 2, PSTR(" 3D Printers ")); card.initsd(); if (eeprom_read_dword((uint32_t*)(EEPROM_TOP - 4)) == 0x0ffffffff && diff --git a/Firmware/SdBaseFile.cpp b/Firmware/SdBaseFile.cpp index f3b037981..3b6aa40ee 100644 --- a/Firmware/SdBaseFile.cpp +++ b/Firmware/SdBaseFile.cpp @@ -1114,28 +1114,17 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { int16_t n; // if not a directory file or miss-positioned return an error if (!isDir() || (0X1F & curPosition_)) { - SERIAL_ECHOLNPGM("return -1"); return -1; } //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly. if (longFilename != NULL) { - // SERIAL_ECHOPGM("; reseting long filename; "); longFilename[0] = '\0'; } - //int i_pom = 0; while (1) { n = read(dir, sizeof(dir_t)); - /*SERIAL_ECHOPGM("Jsem uvnitr: "); - MYSERIAL.print(n); - uint32_t pom = curPosition(); - SERIAL_ECHOPGM(": "); - MYSERIAL.println(pom, 10);*/ - //SERIAL_ECHOPGM("i: "); - //MYSERIAL.println(i_pom++); - if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; // last entry if DIR_NAME_FREE if (dir->name[0] == DIR_NAME_FREE) { @@ -1144,20 +1133,16 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { } // skip empty entries and entry for . and .. if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - //SERIAL_ECHOLNPGM("Empty entry, . or .."); continue; } //Fill the long filename if we have a long filename entry, // long filename entries are stored before the actual filename. if (DIR_IS_LONG_NAME(dir) && longFilename != NULL) { - //SERIAL_ECHOLNPGM("We have long filename entry"); vfat_t *VFAT = (vfat_t*)dir; //Sanity check the VFAT entry. The first cluster is always set to zero. And th esequence number should be higher then 0 if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) { - //SERIAL_ECHOPGM("VFAT Entries no:"); - //MYSERIAL.println(VFAT->sequenceNumber & 0x1F); //TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table. n = ((VFAT->sequenceNumber & 0x1F) - 1) * 13; longFilename[n+0] = VFAT->name1[0]; @@ -1176,8 +1161,6 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { //If this VFAT entry is the last one, add a NUL terminator at the end of the string if (VFAT->sequenceNumber & 0x40) { longFilename[n + 13] = '\0'; - //SERIAL_ECHOPGM("LOng F"); - //MYSERIAL.println(longFilename); } } } diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index e81409aa8..5a676c3b0 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -97,20 +97,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m dir_t p; uint8_t cnt = 0; - /*SERIAL_ECHOPGM("Cur pos. first: "); - uint32_t pom = parent.curPosition(); - MYSERIAL.println(pom, 10);*/ - // Read the next entry from a directory while (parent.readDir(p, longFilename) > 0) { - //MYSERIAL.print(int(cnt)); - //uint32_t pom = parent.curCluster(); - //SERIAL_ECHOPGM(": "); - //MYSERIAL.print(pom, 10); - //SERIAL_ECHOPGM("; "); - //SERIAL_ECHOPGM("Cur pos.: "); - //uint32_t pom = parent.curPosition(); - //MYSERIAL.println(pom, 10); + // If the entry is a directory and the action is LS_SerialPrint if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { @@ -171,25 +160,12 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m break; case LS_GetFilename: - //SERIAL_ECHOPGM("File: "); createFilename(filename, p); - //MYSERIAL.println(p.name); - /*MYSERIAL.println(filename); - SERIAL_ECHOPGM("Write date: "); - writeDate = p.lastWriteDate; - MYSERIAL.println(writeDate); - writeTime = p.lastWriteTime; - SERIAL_ECHOPGM("Creation date: "); - MYSERIAL.println(p.creationDate); - SERIAL_ECHOPGM("Access date: "); - MYSERIAL.println(p.lastAccessDate); - SERIAL_ECHOLNPGM("");*/ cluster = parent.curCluster(); position = parent.curPosition(); creationDate = p.creationDate; creationTime = p.creationTime; - //writeDate = p.lastAccessDate; - + if (match != NULL) { if (strcasecmp(match, filename) == 0) return; } @@ -672,16 +648,6 @@ void CardReader::closefile(bool store_location) } -/*void CardReader::getfilename_adress(uint16_t nr, const char * const match) -{ - curDir = &workDir; - lsAction = LS_GetFilenameAdress; - nrFiles = nr; - curDir->rewind(); - lsDive("", *curDir, match); - -}*/ - void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) { curDir=&workDir; @@ -697,7 +663,6 @@ void CardReader::getfilename_simple(uint32_t position, const char * const match/ curDir = &workDir; lsAction = LS_GetFilename; nrFiles = 0; - //curDir->rewind(); curDir->seekSet(position); lsDive("", *curDir, match); } @@ -765,15 +730,14 @@ void CardReader::getfilename_sorted(const uint16_t nr) { ); } - -void CardReader::swap(uint8_t array[], uint8_t left, uint8_t right) { - uint8_t tmp = array[right]; - array[right] = array[left]; - array[left] = tmp; - //SERIAL_ECHOLNPGM("Did swap"); +#ifdef SDSORT_QUICKSORT +void CardReader::swap(uint8_t left, uint8_t right) { + uint8_t tmp = sort_order[right]; + sort_order[right] = sort_order[left]; + sort_order[left] = tmp; } -void CardReader::quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_t positions[]) { +void CardReader::quicksort(uint8_t left, uint8_t right) { if (left < right) { char name_left[LONG_FILENAME_LENGTH + 1]; char name_i[LONG_FILENAME_LENGTH + 1]; @@ -782,37 +746,27 @@ void CardReader::quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_ uint8_t boundary = left; for (uint8_t i = left+1; i < right; i++) { - uint8_t o_left = array[left]; - uint8_t o_i = array[i]; + uint8_t o_left = sort_order[left]; + uint8_t o_i = sort_order[i]; getfilename_simple(positions[o_left]); strcpy(name_left, LONGEST_FILENAME); // save (or getfilename below will trounce it) creation_date_left = creationDate; creation_time_left = creationTime; getfilename_simple(positions[o_i]); - /*SERIAL_ECHOLNPGM(" "); - MYSERIAL.print(int(o_left)); - SERIAL_ECHOPGM(": "); - MYSERIAL.print(positions[o_left]); - SERIAL_ECHOPGM(": "); - MYSERIAL.println(name_left); - MYSERIAL.print(int(o_i)); - SERIAL_ECHOPGM(": "); - MYSERIAL.print(positions[o_i]); - SERIAL_ECHOPGM(": "); - MYSERIAL.println(LONGEST_FILENAME);*/ strcpy(name_i, LONGEST_FILENAME); if (strcasecmp(name_left, name_i) > 0) { - swap(array, i, ++boundary); + swap(i, ++boundary); } } - swap(array, left, boundary); - quicksort(array, left, boundary, positions); - quicksort(array, boundary + 1, right, positions); + swap(left, boundary); + quicksort(left, boundary); + quicksort(boundary + 1, right); } } +#endif //SDSORT_QUICKSORT /** @@ -824,22 +778,15 @@ void CardReader::quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_ * - Most RAM: Buffer the directory and return filenames from RAM */ void CardReader::presort() { - - unsigned long start_time = millis(); - if (farm_mode) return; //sorting is not used in farm mode + if (farm_mode || IS_SD_INSERTED == false) return; //sorting is not used in farm mode uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); if (sdSort == SD_SORT_NONE) return; //sd sort is turned off - #if !SDSORT_USES_RAM - lcd_set_progress(); - #endif - lcd_implementation_clear(); - lcd_print_at_PGM(0, 1, MSG_SORTING); #if SDSORT_GCODE if (!sort_alpha) return; #endif - + KEEPALIVE_STATE(IN_HANDLER); // Throw away old sort index flush_presort(); @@ -849,7 +796,15 @@ void CardReader::presort() { // Never sort more than the max allowed // If you use folders to organize, 20 may be enough - if (fileCnt > SDSORT_LIMIT) fileCnt = SDSORT_LIMIT; + if (fileCnt > SDSORT_LIMIT) { + lcd_show_fullscreen_message_and_wait_P(MSG_FILE_CNT); + fileCnt = SDSORT_LIMIT; + } + lcd_implementation_clear(); + #if !SDSORT_USES_RAM + lcd_set_progress(); + #endif + lcd_print_at_PGM(0, 1, MSG_SORTING); // Sort order is always needed. May be static or dynamic. #if SDSORT_DYNAMIC_RAM @@ -868,9 +823,8 @@ void CardReader::presort() { #endif #elif SDSORT_USES_STACK char sortnames[fileCnt][LONG_FILENAME_LENGTH]; - uint16_t creation_time[SDSORT_LIMIT]; - uint16_t creation_date[SDSORT_LIMIT]; - //#elif SDSORT_POINTERS + uint16_t creation_time[fileCnt]; + uint16_t creation_date[fileCnt]; #endif @@ -884,10 +838,8 @@ void CardReader::presort() { #endif #else // !SDSORT_USES_RAM - // uint32_t clusters [fileCnt]; - uint32_t positions [fileCnt]; - // char *names[fileCnt]; + uint32_t positions[fileCnt]; // By default re-read the names from SD for every compare // retaining only two filenames at a time. This is very @@ -901,28 +853,12 @@ void CardReader::presort() { if (fileCnt > 1) { // Init sort order. for (uint16_t i = 0; i < fileCnt; i++) { + manage_heater(); sort_order[i] = i; - /*MYSERIAL.print(i); - SERIAL_ECHOPGM(": "); - MYSERIAL.print(position); - SERIAL_ECHOPGM("; "); - MYSERIAL.print(cluster); - SERIAL_ECHOPGM(" ");*/ positions[i] = position; getfilename(i); - //MYSERIAL.print(LONGEST_FILENAME); - //names[i] = - //clusters[i] = cluster; - //if (longFilename[0]) SERIAL_ECHOPGM("; Long; "); - //MYSERIAL.println(i); - /*SERIAL_ECHOPGM("; "); - MYSERIAL.print(position); - SERIAL_ECHOPGM("; "); - MYSERIAL.print(positions[i]); - SERIAL_ECHOPGM("; "); - MYSERIAL.println(cluster);*/ // If using RAM then read all filenames now. #if SDSORT_USES_RAM getfilename(i); @@ -953,63 +889,65 @@ void CardReader::presort() { #endif #endif } - /*SERIAL_ECHOPGM("Mezicas:"); - MYSERIAL.println(millis() - start_time);*/ - + #ifdef QUICKSORT - quicksort(sort_order, 0, fileCnt - 1, positions); + quicksort(0, fileCnt - 1); #else //Qicksort not defined, use Bubble Sort - uint16_t counter = 0; + uint32_t counter = 0; + uint16_t total = 0.5*(fileCnt-1)*(fileCnt); + + // Compare names from the array or just the two buffered names + #if SDSORT_USES_RAM + #define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0) + #define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \ + (creation_date[o1] < creation_date [o2])) + #else + #define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2) + #define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp > creationTime)) || \ + (creation_date_bckp > creationDate)) + + #endif + + #if HAS_FOLDER_SORTING + #if SDSORT_USES_RAM + // Folder sorting needs an index and bit to test for folder-ness. + const uint8_t ind1 = o1 >> 3, bit1 = o1 & 0x07, + ind2 = o2 >> 3, bit2 = o2 & 0x07; + #define _SORT_CMP_DIR(fs) \ + (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ + ? _SORT_CMP_NODIR() \ + : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) + #define _SORT_CMP_TIME_DIR(fs) \ + (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ + ? _SORT_CMP_TIME_NODIR() \ + : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) + #else + #define _SORT_CMP_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_NODIR() : (fs > 0 ? dir1 : !dir1)) + #define _SORT_CMP_TIME_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_TIME_NODIR() : (fs < 0 ? dir1 : !dir1)) + #endif + #endif + for (uint16_t i = fileCnt; --i;) { bool didSwap = false; - #if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used - int8_t percent = ((counter * 100) / (fileCnt-1)); + int8_t percent = (counter * 100) / total;//((counter * 100) / pow((fileCnt-1),2)); for (int column = 0; column < 20; column++) { if (column < (percent/5)) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar } - counter++; + #endif //MYSERIAL.println(int(i)); for (uint16_t j = 0; j < i; ++j) { + manage_heater(); const uint16_t o1 = sort_order[j], o2 = sort_order[j + 1]; - // Compare names from the array or just the two buffered names - #if SDSORT_USES_RAM - #define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0) - #define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \ - (creation_date[o1] < creation_date [o2])) - #else - #define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2) - #define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp < creationTime)) || \ - (creation_date_bckp < creationDate)) - #endif - - #if HAS_FOLDER_SORTING - #if SDSORT_USES_RAM - // Folder sorting needs an index and bit to test for folder-ness. - const uint8_t ind1 = o1 >> 3, bit1 = o1 & 0x07, - ind2 = o2 >> 3, bit2 = o2 & 0x07; - #define _SORT_CMP_DIR(fs) \ - (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ - ? _SORT_CMP_NODIR() \ - : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) - #define _SORT_CMP_TIME_DIR(fs) \ - (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ - ? _SORT_CMP_TIME_NODIR() \ - : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) - #else - #define _SORT_CMP_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_NODIR() : (fs > 0 ? dir1 : !dir1)) - #define _SORT_CMP_TIME_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_TIME_NODIR() : (fs > 0 ? dir1 : !dir1)) - #endif - #endif + // The most economical method reads names as-needed // throughout the loop. Slow if there are many. #if !SDSORT_USES_RAM - + counter++; getfilename_simple(positions[o1]); - //getfilename(o1); strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it) creation_date_bckp = creationDate; creation_time_bckp = creationTime; @@ -1017,14 +955,8 @@ void CardReader::presort() { bool dir1 = filenameIsDir; #endif getfilename_simple(positions[o2]); - // getfilename(o2); - char *name2 = LONGEST_FILENAME; // use the string in-place + char *name2 = LONGEST_FILENAME; // use the string in-place - //SERIAL_ECHOPGM("NAMES:"); - //MYSERIAL.println(name1); - //MYSERIAL.println(name2); - - #endif // !SDSORT_USES_RAM // Sort the current pair according to settings. @@ -1038,11 +970,8 @@ void CardReader::presort() { { sort_order[j] = o2; sort_order[j + 1] = o1; - didSwap = true; - //SERIAL_ECHOLNPGM("did swap"); - + didSwap = true; } - //SERIAL_ECHOLNPGM(""); } if (!didSwap) break; } //end of bubble sort loop @@ -1077,14 +1006,15 @@ void CardReader::presort() { sort_count = fileCnt; } - #if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used - for(int column = 0; column <=19; column++ ) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar - delay(500); - lcd_set_arrows(); + #if !SDSORT_USES_RAM //show progress bar only if slow sorting method is used + for (int column = 0; column <= 19; column++) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar + delay(300); + lcd_set_degree(); + lcd_implementation_clear(); lcd_update(2); #endif - SERIAL_ECHOPGM("Sort time:"); - MYSERIAL.println(millis() - start_time); + KEEPALIVE_STATE(NOT_BUSY); + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; } void CardReader::flush_presort() { diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index b2fa4efea..c0d662d2d 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -45,8 +45,10 @@ public: #ifdef SDCARD_SORT_ALPHA void presort(); - void swap(uint8_t array[], uint8_t left, uint8_t right); - void quicksort(uint8_t array[], uint8_t left, uint8_t right, uint32_t positions[]); + #ifdef SDSORT_QUICKSORT + void swap(uint8_t left, uint8_t right); + void quicksort(uint8_t left, uint8_t right); + #endif //SDSORT_QUICKSORT void getfilename_sorted(const uint16_t nr); #if SDSORT_GCODE FORCE_INLINE void setSortOn(bool b) { sort_alpha = b; presort(); } diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index db86f577d..218e70678 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1092,6 +1092,11 @@ const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FILAMENT_LOADING_T3_DE }; +const char MSG_FILE_CNT_EN[] PROGMEM = "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."; +const char * const MSG_FILE_CNT_LANG_TABLE[1] PROGMEM = { + MSG_FILE_CNT_EN +}; + const char MSG_FILE_INCOMPLETE_EN[] PROGMEM = "File incomplete. Continue anyway?"; const char * const MSG_FILE_INCOMPLETE_LANG_TABLE[1] PROGMEM = { MSG_FILE_INCOMPLETE_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index e5cebaa3d..c6f766c49 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -218,6 +218,8 @@ extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) +extern const char* const MSG_FILE_CNT_LANG_TABLE[1]; +#define MSG_FILE_CNT LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_CNT_LANG_TABLE, 0) extern const char* const MSG_FILE_INCOMPLETE_LANG_TABLE[1]; #define MSG_FILE_INCOMPLETE LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_INCOMPLETE_LANG_TABLE, 0) extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 61f2ef89e..24bbc85de 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -340,3 +340,4 @@ #define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." #define MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" #define MSG_PLEASE_LOAD_PLA "Please load PLA filament first." +#define(length=20, lines=4) MSG_FILE_CNT "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 1970d8da9..849b5e409 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -100,6 +100,10 @@ int8_t SilentModeMenu = 0; uint8_t snmm_extruder = 0; #endif +#ifdef SDCARD_SORT_ALPHA +bool presort_flag = false; +#endif + int lcd_commands_type=LCD_COMMAND_IDLE; int lcd_commands_step=0; bool isPrintPaused = false; @@ -2743,7 +2747,6 @@ void EEPROM_read(int pos, uint8_t* value, uint8_t size) #ifdef SDCARD_SORT_ALPHA static void lcd_sort_type_set() { uint8_t sdSort; - EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); switch (sdSort) { case SD_SORT_TIME: sdSort = SD_SORT_ALPHA; break; @@ -2751,11 +2754,8 @@ static void lcd_sort_type_set() { default: sdSort = SD_SORT_TIME; } eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort); - lcd_goto_menu(lcd_sdcard_menu, 1); - //lcd_update(2); - //delay(1000); - - card.presort(); + presort_flag = true; + lcd_goto_menu(lcd_settings_menu, 8); } #endif //SDCARD_SORT_ALPHA @@ -2776,8 +2776,8 @@ static void lcd_set_lang(unsigned char lang) { } #if !SDSORT_USES_RAM -void lcd_set_arrows() { - void lcd_set_custom_characters_arrows(); +void lcd_set_degree() { + lcd_set_custom_characters_degree(); } void lcd_set_progress() { @@ -3181,6 +3181,17 @@ static void lcd_settings_menu() } else { MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF, lcd_toshiba_flash_air_compatibility_toggle); } +#ifdef SDCARD_SORT_ALPHA + if (!farm_mode) { + uint8_t sdSort; + EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); + switch (sdSort) { + case SD_SORT_TIME: MENU_ITEM(function, MSG_SORT_TIME, lcd_sort_type_set); break; + case SD_SORT_ALPHA: MENU_ITEM(function, MSG_SORT_ALPHA, lcd_sort_type_set); break; + default: MENU_ITEM(function, MSG_SORT_NONE, lcd_sort_type_set); + } + } +#endif // SDCARD_SORT_ALPHA if (farm_mode) { @@ -4695,8 +4706,13 @@ void getFileDescription(char *name, char *description) { void lcd_sdcard_menu() { - uint8_t sdSort; + uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); + int tempScrool = 0; + if (presort_flag == true) { + presort_flag = false; + card.presort(); + } if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) //delay(100); return; // nothing to do (so don't thrash the SD card) @@ -4704,16 +4720,6 @@ void lcd_sdcard_menu() START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); - if (!farm_mode) { -#ifdef SDCARD_SORT_ALPHA - EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); - switch (sdSort) { - case SD_SORT_TIME: MENU_ITEM(function, MSG_SORT_TIME, lcd_sort_type_set); break; - case SD_SORT_ALPHA: MENU_ITEM(function, MSG_SORT_ALPHA, lcd_sort_type_set); break; - default: MENU_ITEM(function, MSG_SORT_NONE, lcd_sort_type_set); - } -#endif // SDCARD_SORT_ALPHA - } card.getWorkDirName(); if (card.filename[0] == '/') { @@ -4728,14 +4734,8 @@ void lcd_sdcard_menu() { if (_menuItemNr == _lineNr) { - const uint16_t nr = ((sdSort == SD_SORT_NONE) || farm_mode) ? (fileCnt - 1 - i) : i; + uint16_t nr = ((sdSort == SD_SORT_NONE) || farm_mode || (sdSort == SD_SORT_TIME)) ? (fileCnt - 1 - i) : i; - /* #ifdef SDCARD_RATHERRECENTFIRST - #ifndef SDCARD_SORT_ALPHA - fileCnt - 1 - - #endif - #endif - i;*/ #ifdef SDCARD_SORT_ALPHA if (sdSort == SD_SORT_NONE) card.getfilename(nr); else card.getfilename_sorted(nr); @@ -4754,17 +4754,6 @@ void lcd_sdcard_menu() END_MENU(); } -//char description [10] [31]; - -/*void get_description() { - uint16_t fileCnt = card.getnrfilenames(); - for (uint16_t i = 0; i < fileCnt; i++) - { - card.getfilename(fileCnt - 1 - i); - getFileDescription(card.filename, description[i]); - } -}*/ - /*void lcd_farm_sdcard_menu() { static int i = 0; @@ -5771,6 +5760,7 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) (*currentMenu)(); menuExiting = false; } + lcd_implementation_clear(); lcd_return_to_status(); lcdDrawUpdate = 2; } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 7ff4ab805..05f42735b 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -75,7 +75,7 @@ void lcd_mylang(); #define LCD_ALERTMESSAGERPGM(x) lcd_setalertstatuspgm((x)) #define LCD_UPDATE_INTERVAL 100 - #define LCD_TIMEOUT_TO_STATUS 15000 + #define LCD_TIMEOUT_TO_STATUS 30000 #ifdef ULTIPANEL void lcd_buttons_update(); @@ -265,7 +265,7 @@ void display_loading(); void lcd_service_mode_show_result(); #if !SDSORT_USES_RAM -void lcd_set_arrows(); +void lcd_set_degree(); void lcd_set_progress(); #endif From 7bf30eb8dc8824f13e95b0214d2c05b203632bb6 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 3 Oct 2017 23:28:36 +0200 Subject: [PATCH 18/29] changed version --- Firmware/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 5c7266b78..1a8f86b73 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-8" +#define FW_version "3.0.12-9" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 From ff2fa67adc90ff8fb892ea86ff070eff7a09ffac Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 4 Oct 2017 00:43:17 +0200 Subject: [PATCH 19/29] init --- Firmware/ultralcd.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a8fabe7d2..f97aa9aea 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -745,9 +745,9 @@ void lcd_commands() lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; if (lcd_commands_step == 0) { - lcd_commands_step = 5; + lcd_commands_step = 6; } - if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) { enquecommand_P(PSTR("M107")); enquecommand_P(PSTR("M104 S210")); @@ -758,9 +758,9 @@ void lcd_commands() enquecommand_P(PSTR("G87")); //sets calibration status enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G92 E0.0")); - lcd_commands_step = 4; + lcd_commands_step = 5; } - if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) { lcd_implementation_clear(); @@ -775,9 +775,9 @@ void lcd_commands() enquecommand_P(PSTR("G1 Z0.150 F7200.000")); enquecommand_P(PSTR("M204 S1000")); //set acceleration enquecommand_P(PSTR("G1 F4000")); - lcd_commands_step = 3; + lcd_commands_step = 4; } - if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) //draw meander + if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) //draw meander { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; @@ -817,6 +817,13 @@ void lcd_commands() enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + lcd_commands_step = 3; + } + + if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + lcd_commands_step = 2; } @@ -4414,7 +4421,7 @@ static void lcd_main_menu() }*/ - if ( ( IS_SD_PRINTING || is_usb_printing ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag) + if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL) ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag) { MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);//8 } From 3e3102ad74d4066549e995f0f5e88d012ade6e97 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 4 Oct 2017 00:49:46 +0200 Subject: [PATCH 20/29] added defines for auto power --- Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 2 ++ 6 files changed, 12 insertions(+) diff --git a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h index 27bece70c..f0157dfe4 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h @@ -199,6 +199,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ diff --git a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h index e372831c4..03c99f601 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h @@ -199,6 +199,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h index 6093f8ac5..b7475feaf 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h @@ -194,6 +194,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h index 06ea61f83..4985099a8 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h @@ -196,6 +196,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index fc89c0656..381a0b637 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -194,6 +194,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index 5307ede95..bfa787d51 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -196,6 +196,8 @@ MOTOR CURRENT SETTINGS #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ From 6b7866b7be2cf1efd7f9de3cb3cc1aa19cb83383 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 4 Oct 2017 02:37:46 +0200 Subject: [PATCH 21/29] small rectangular added to first layer calibration --- Firmware/ultralcd.cpp | 80 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index f97aa9aea..574a57b3b 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -605,9 +605,9 @@ void lcd_commands() lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; if (lcd_commands_step == 0) { - lcd_commands_step = 6; + lcd_commands_step = 7; } - if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) { enquecommand_P(PSTR("M107")); enquecommand_P(PSTR("M104 S210")); @@ -624,9 +624,9 @@ void lcd_commands() enquecommand_P(PSTR("G92 E0")); enquecommand_P(PSTR("M203 E100")); enquecommand_P(PSTR("M92 E140")); - lcd_commands_step = 5; + lcd_commands_step = 6; } - if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); @@ -648,9 +648,9 @@ void lcd_commands() lcd_goto_menu(lcd_babystep_z, 0, false); - lcd_commands_step = 4; + lcd_commands_step = 5; } - if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) //draw meander + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) //draw meander { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; @@ -671,14 +671,47 @@ void lcd_commands() enquecommand_P(PSTR("G1 X200 Y75 E3.62773")); enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); - enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + + lcd_commands_step = 4; + } + + if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) + { + char cmd1[30]; + float width = 0.4; + float extr = 0.5; // for 20mm + + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 5; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + enquecommand(cmd1); + } + lcd_commands_step = 3; } if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - + enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); enquecommand_P(PSTR("G4 S0")); enquecommand_P(PSTR("G1 E-4 F2100.00000")); enquecommand_P(PSTR("G1 Z0.5 F7200.000")); @@ -816,20 +849,47 @@ void lcd_commands() enquecommand_P(PSTR("G1 X200 Y75 E3.62773")); enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); - enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + lcd_commands_step = 3; } if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) { - lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + char cmd1[30]; + float width = 0.4; + float extr = 0.5; // for 20mm + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 5; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width*2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2*i+1)*width)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2*i+1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr32(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width*2)); + enquecommand(cmd1); + } + lcd_commands_step = 2; } if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); enquecommand_P(PSTR("M107")); //turn off printer fan enquecommand_P(PSTR("M104 S0")); // turn off temperature enquecommand_P(PSTR("M140 S0")); // turn off heatbed From ea6eb4d30c055c04f92e0a2c36b6e3c549d8898f Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d-gussner@users.noreply.github.com> Date: Wed, 4 Oct 2017 02:40:54 +0200 Subject: [PATCH 22/29] Merge to 3.0.12-9 and modify languange_en.h to get rid of warnings. Translation of new MSGs to German. --- Firmware/Configuration.h | 2 +- Firmware/Configuration_adv.h | 8 +- Firmware/Marlin_main.cpp | 60 +++- Firmware/SdBaseFile.cpp | 20 +- Firmware/SdBaseFile.h | 1 + Firmware/cardreader.cpp | 233 +++++++++++----- Firmware/cardreader.h | 8 +- Firmware/language_all.cpp | 260 ++++++++++++++---- Firmware/language_all.h | 100 +++---- Firmware/language_de.h | 25 ++ Firmware/language_en.h | 113 ++++---- Firmware/stepper.cpp | 5 +- Firmware/ultralcd.cpp | 130 +++++---- Firmware/ultralcd.h | 5 +- .../ultralcd_implementation_hitachi_HD44780.h | 1 + 15 files changed, 660 insertions(+), 311 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 0f8b2986a..1a8f86b73 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-7" +#define FW_version "3.0.12-9" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index 4f3a71c49..b25de5ffd 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -261,13 +261,15 @@ #define SD_SORT_ALPHA 1 #define SD_SORT_NONE 2 - #define SDSORT_LIMIT 20 // Maximum number of sorted items (10-256). + #define SDSORT_LIMIT 100 // Maximum number of sorted items (10-256). #define FOLDER_SORTING -1 // -1=above 0=none 1=below #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code. - #define SDSORT_USES_RAM true // Pre-allocate a static array for faster pre-sorting. - #define SDSORT_USES_STACK true // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) + #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. + #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! + + // #define SDSORT_QUICKSORT #endif #if defined(SDCARD_SORT_ALPHA) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 218aad4bd..98cfb0364 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -498,6 +498,8 @@ unsigned long chdkHigh = 0; boolean chdkActive = false; #endif +static int saved_feedmultiply_mm = 100; + //=========================================================================== //=============================Routines====================================== //=========================================================================== @@ -1097,8 +1099,6 @@ void setup() tp_init(); // Initialize temperature loop plan_init(); // Initialize planner; watchdog_init(); - lcd_print_at_PGM(0, 1, PSTR(" Original Prusa ")); // we need to do this again for some reason, no time to research - lcd_print_at_PGM(0, 2, PSTR(" 3D Printers ")); st_init(); // Initialize stepper, this enables interrupts! setup_photpin(); servo_init(); @@ -1195,6 +1195,8 @@ void setup() card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); // Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false), // but this times out if a blocking dialog is shown in setup(). + lcd_print_at_PGM(0, 1, PSTR(" Original Prusa ")); // we need to do this again for some reason, no time to research + lcd_print_at_PGM(0, 2, PSTR(" 3D Printers ")); card.initsd(); if (eeprom_read_dword((uint32_t*)(EEPROM_TOP - 4)) == 0x0ffffffff && @@ -4934,12 +4936,20 @@ Sigma_Exit: SERIAL_ECHOLN(""); }break; #endif + case 220: // M220 S- set speed factor override percentage { + if (code_seen('B')) //backup current speed factor + { + saved_feedmultiply_mm = feedmultiply; + } if(code_seen('S')) - { + { feedmultiply = code_value() ; } + if (code_seen('R')) { //restore previous feedmultiply + feedmultiply = saved_feedmultiply_mm; + } } break; case 221: // M221 S- set extrude factor override percentage @@ -5808,22 +5818,18 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - break; } delay(100); @@ -5958,14 +5964,52 @@ void ClearToSend() SERIAL_PROTOCOLLNRPGM(MSG_OK); } +update_currents() { + float current_high[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD; + float current_low[3] = DEFAULT_PWM_MOTOR_CURRENT; + float tmp_motor[3]; + + //SERIAL_ECHOLNPGM("Currents updated: "); + + if (destination[Z_AXIS] < Z_SILENT) { + //SERIAL_ECHOLNPGM("LOW"); + for (uint8_t i = 0; i < 3; i++) { + digipot_current(i, current_low[i]); + /*MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(current_low[i]);*/ + } + } + else if (destination[Z_AXIS] > Z_HIGH_POWER) { + //SERIAL_ECHOLNPGM("HIGH"); + for (uint8_t i = 0; i < 3; i++) { + digipot_current(i, current_high[i]); + /*MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(current_high[i]);*/ + } + } + else { + for (uint8_t i = 0; i < 3; i++) { + float q = current_low[i] - Z_SILENT*((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT)); + tmp_motor[i] = ((current_high[i] - current_low[i]) / (Z_HIGH_POWER - Z_SILENT))*destination[Z_AXIS] + q; + digipot_current(i, tmp_motor[i]); + /*MYSERIAL.print(int(i)); + SERIAL_ECHOPGM(": "); + MYSERIAL.println(tmp_motor[i]);*/ + } + } +} + void get_coordinates() { bool seen[4]={false,false,false,false}; for(int8_t i=0; i < NUM_AXIS; i++) { if(code_seen(axis_codes[i])) { - destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; + destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; seen[i]=true; + if (i == Z_AXIS && SilentModeMenu == 2) update_currents(); } else destination[i] = current_position[i]; //Are these else lines really needed? } diff --git a/Firmware/SdBaseFile.cpp b/Firmware/SdBaseFile.cpp index d8eca5fc8..3b6aa40ee 100644 --- a/Firmware/SdBaseFile.cpp +++ b/Firmware/SdBaseFile.cpp @@ -1113,21 +1113,28 @@ int16_t SdBaseFile::read(void* buf, uint16_t nbyte) { int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { int16_t n; // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & curPosition_)) return -1; + if (!isDir() || (0X1F & curPosition_)) { + return -1; + } //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly. if (longFilename != NULL) { longFilename[0] = '\0'; } - while (1) { n = read(dir, sizeof(dir_t)); + if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) return 0; + if (dir->name[0] == DIR_NAME_FREE) { + return 0; + SERIAL_ECHOLNPGM("DIR_NAME_FREE"); + } // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') continue; + if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { + continue; + } //Fill the long filename if we have a long filename entry, // long filename entries are stored before the actual filename. if (DIR_IS_LONG_NAME(dir) && longFilename != NULL) @@ -1152,8 +1159,9 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { longFilename[n+11] = VFAT->name3[0]; longFilename[n+12] = VFAT->name3[1]; //If this VFAT entry is the last one, add a NUL terminator at the end of the string - if (VFAT->sequenceNumber & 0x40) - longFilename[n+13] = '\0'; + if (VFAT->sequenceNumber & 0x40) { + longFilename[n + 13] = '\0'; + } } } // return if normal file or subdirectory diff --git a/Firmware/SdBaseFile.h b/Firmware/SdBaseFile.h index 923a391dd..bd2d91d10 100644 --- a/Firmware/SdBaseFile.h +++ b/Firmware/SdBaseFile.h @@ -306,6 +306,7 @@ class SdBaseFile { */ bool seekEnd(int32_t offset = 0) {return seekSet(fileSize_ + offset);} bool seekSet(uint32_t pos); + //bool setCluster(uint32_t clust); bool sync(); bool timestamp(SdBaseFile* file); bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 27100077c..5a676c3b0 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -59,6 +59,33 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters } +void CardReader::lsDive_pointer(const char *prepend, SdFile parent, const char * const match) { + dir_t p; + uint8_t cnt = 0; + + //parent.seekSet = + // Read the next entry from a directory + //SERIAL_ECHOPGM("Cur pos before.: "); + //uint32_t pom = parent.curPosition(); + //MYSERIAL.println(pom, 10); + parent.readDir(p, longFilename); + //SERIAL_ECHOPGM("Cur pos.: "); + //pom = parent.curPosition(); + //MYSERIAL.println(pom, 10); + + uint8_t pn0 = p.name[0]; + + filenameIsDir = DIR_IS_SUBDIR(&p); + + + + + createFilename(filename, p); + creationDate = p.creationDate; + creationTime = p.creationTime; + +} + /** * Dive into a folder and recurse depth-first to perform a pre-set operation lsAction: * LS_Count - Add +1 to nrFiles for every file within the parent @@ -72,7 +99,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m // Read the next entry from a directory while (parent.readDir(p, longFilename) > 0) { - + // If the entry is a directory and the action is LS_SerialPrint if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { @@ -133,27 +160,18 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m break; case LS_GetFilename: - //SERIAL_ECHOPGM("File: "); createFilename(filename, p); - /*MYSERIAL.println(filename); - SERIAL_ECHOPGM("Write date: "); - writeDate = p.lastWriteDate; - MYSERIAL.println(writeDate); - writeTime = p.lastWriteTime; - SERIAL_ECHOPGM("Creation date: "); - MYSERIAL.println(p.creationDate); - SERIAL_ECHOPGM("Access date: "); - MYSERIAL.println(p.lastAccessDate); - SERIAL_ECHOLNPGM("");*/ + cluster = parent.curCluster(); + position = parent.curPosition(); creationDate = p.creationDate; creationTime = p.creationTime; - - //writeDate = p.lastAccessDate; - + if (match != NULL) { if (strcasecmp(match, filename) == 0) return; } - else if (cnt == nrFiles) return; + else if (cnt == nrFiles) { + return; + } cnt++; break; } @@ -640,6 +658,16 @@ void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) } +void CardReader::getfilename_simple(uint32_t position, const char * const match/*=NULL*/) +{ + curDir = &workDir; + lsAction = LS_GetFilename; + nrFiles = 0; + curDir->seekSet(position); + lsDive("", *curDir, match); +} + + uint16_t CardReader::getnrfilenames() { curDir=&workDir; @@ -702,6 +730,45 @@ void CardReader::getfilename_sorted(const uint16_t nr) { ); } +#ifdef SDSORT_QUICKSORT +void CardReader::swap(uint8_t left, uint8_t right) { + uint8_t tmp = sort_order[right]; + sort_order[right] = sort_order[left]; + sort_order[left] = tmp; +} + +void CardReader::quicksort(uint8_t left, uint8_t right) { + if (left < right) { + char name_left[LONG_FILENAME_LENGTH + 1]; + char name_i[LONG_FILENAME_LENGTH + 1]; + uint16_t creation_time_left; + uint16_t creation_date_left; + + uint8_t boundary = left; + for (uint8_t i = left+1; i < right; i++) { + uint8_t o_left = sort_order[left]; + uint8_t o_i = sort_order[i]; + getfilename_simple(positions[o_left]); + strcpy(name_left, LONGEST_FILENAME); // save (or getfilename below will trounce it) + creation_date_left = creationDate; + creation_time_left = creationTime; + getfilename_simple(positions[o_i]); + + strcpy(name_i, LONGEST_FILENAME); + + + if (strcasecmp(name_left, name_i) > 0) { + swap(i, ++boundary); + } + } + swap(left, boundary); + quicksort(left, boundary); + quicksort(boundary + 1, right); + } +} +#endif //SDSORT_QUICKSORT + + /** * Read all the files and produce a sort key * @@ -711,21 +778,15 @@ void CardReader::getfilename_sorted(const uint16_t nr) { * - Most RAM: Buffer the directory and return filenames from RAM */ void CardReader::presort() { - - if (farm_mode) return; //sorting is not used in farm mode + if (farm_mode || IS_SD_INSERTED == false) return; //sorting is not used in farm mode uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); if (sdSort == SD_SORT_NONE) return; //sd sort is turned off - #if !SDSORT_USES_RAM - lcd_set_progress(); - #endif - lcd_implementation_clear(); - lcd_print_at_PGM(0, 1, MSG_SORTING); #if SDSORT_GCODE if (!sort_alpha) return; #endif - + KEEPALIVE_STATE(IN_HANDLER); // Throw away old sort index flush_presort(); @@ -735,7 +796,15 @@ void CardReader::presort() { // Never sort more than the max allowed // If you use folders to organize, 20 may be enough - if (fileCnt > SDSORT_LIMIT) fileCnt = SDSORT_LIMIT; + if (fileCnt > SDSORT_LIMIT) { + lcd_show_fullscreen_message_and_wait_P(MSG_FILE_CNT); + fileCnt = SDSORT_LIMIT; + } + lcd_implementation_clear(); + #if !SDSORT_USES_RAM + lcd_set_progress(); + #endif + lcd_print_at_PGM(0, 1, MSG_SORTING); // Sort order is always needed. May be static or dynamic. #if SDSORT_DYNAMIC_RAM @@ -754,8 +823,9 @@ void CardReader::presort() { #endif #elif SDSORT_USES_STACK char sortnames[fileCnt][LONG_FILENAME_LENGTH]; - uint16_t creation_time[SDSORT_LIMIT]; - uint16_t creation_date[SDSORT_LIMIT]; + uint16_t creation_time[fileCnt]; + uint16_t creation_date[fileCnt]; + #endif // Folder sorting needs 1 bit per entry for flags. @@ -769,6 +839,8 @@ void CardReader::presort() { #else // !SDSORT_USES_RAM + uint32_t positions[fileCnt]; + // By default re-read the names from SD for every compare // retaining only two filenames at a time. This is very // slow but is safest and uses minimal RAM. @@ -777,11 +849,16 @@ void CardReader::presort() { uint16_t creation_date_bckp; #endif - + position = 0; if (fileCnt > 1) { // Init sort order. for (uint16_t i = 0; i < fileCnt; i++) { + manage_heater(); sort_order[i] = i; + + positions[i] = position; + getfilename(i); + // If using RAM then read all filenames now. #if SDSORT_USES_RAM getfilename(i); @@ -812,66 +889,74 @@ void CardReader::presort() { #endif #endif } - // Bubble Sort - uint16_t counter = 0; + +#ifdef QUICKSORT + quicksort(0, fileCnt - 1); +#else //Qicksort not defined, use Bubble Sort + uint32_t counter = 0; + uint16_t total = 0.5*(fileCnt-1)*(fileCnt); + + // Compare names from the array or just the two buffered names + #if SDSORT_USES_RAM + #define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0) + #define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \ + (creation_date[o1] < creation_date [o2])) + #else + #define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2) + #define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp > creationTime)) || \ + (creation_date_bckp > creationDate)) + + #endif + + #if HAS_FOLDER_SORTING + #if SDSORT_USES_RAM + // Folder sorting needs an index and bit to test for folder-ness. + const uint8_t ind1 = o1 >> 3, bit1 = o1 & 0x07, + ind2 = o2 >> 3, bit2 = o2 & 0x07; + #define _SORT_CMP_DIR(fs) \ + (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ + ? _SORT_CMP_NODIR() \ + : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) + #define _SORT_CMP_TIME_DIR(fs) \ + (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ + ? _SORT_CMP_TIME_NODIR() \ + : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) + #else + #define _SORT_CMP_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_NODIR() : (fs > 0 ? dir1 : !dir1)) + #define _SORT_CMP_TIME_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_TIME_NODIR() : (fs < 0 ? dir1 : !dir1)) + #endif + #endif + for (uint16_t i = fileCnt; --i;) { bool didSwap = false; - #if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used - int8_t percent = ((counter * 100) / (fileCnt-1)); + int8_t percent = (counter * 100) / total;//((counter * 100) / pow((fileCnt-1),2)); for (int column = 0; column < 20; column++) { if (column < (percent/5)) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar } - counter++; + #endif //MYSERIAL.println(int(i)); for (uint16_t j = 0; j < i; ++j) { + manage_heater(); const uint16_t o1 = sort_order[j], o2 = sort_order[j + 1]; - // Compare names from the array or just the two buffered names - #if SDSORT_USES_RAM - #define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0) - #define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \ - (creation_date[o1] < creation_date [o2])) - #else - #define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2) - #define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp < creationTime)) || \ - (creation_date_bckp < creationDate)) - #endif - - #if HAS_FOLDER_SORTING - #if SDSORT_USES_RAM - // Folder sorting needs an index and bit to test for folder-ness. - const uint8_t ind1 = o1 >> 3, bit1 = o1 & 0x07, - ind2 = o2 >> 3, bit2 = o2 & 0x07; - #define _SORT_CMP_DIR(fs) \ - (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ - ? _SORT_CMP_NODIR() \ - : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) - #define _SORT_CMP_TIME_DIR(fs) \ - (((isDir[ind1] & _BV(bit1)) != 0) == ((isDir[ind2] & _BV(bit2)) != 0) \ - ? _SORT_CMP_TIME_NODIR() \ - : (isDir[fs > 0 ? ind1 : ind2] & (fs > 0 ? _BV(bit1) : _BV(bit2))) != 0) - #else - #define _SORT_CMP_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_NODIR() : (fs > 0 ? dir1 : !dir1)) - #define _SORT_CMP_TIME_DIR(fs) ((dir1 == filenameIsDir) ? _SORT_CMP_TIME_NODIR() : (fs > 0 ? dir1 : !dir1)) - #endif - #endif + // The most economical method reads names as-needed // throughout the loop. Slow if there are many. #if !SDSORT_USES_RAM - - getfilename(o1); + counter++; + getfilename_simple(positions[o1]); strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it) creation_date_bckp = creationDate; creation_time_bckp = creationTime; #if HAS_FOLDER_SORTING bool dir1 = filenameIsDir; #endif - getfilename(o2); + getfilename_simple(positions[o2]); char *name2 = LONGEST_FILENAME; // use the string in-place - + #endif // !SDSORT_USES_RAM // Sort the current pair according to settings. @@ -885,13 +970,12 @@ void CardReader::presort() { { sort_order[j] = o2; sort_order[j + 1] = o1; - didSwap = true; - //SERIAL_ECHOLNPGM("did swap"); + didSwap = true; } } if (!didSwap) break; } //end of bubble sort loop - +#endif // Using RAM but not keeping names around #if (SDSORT_USES_RAM && !SDSORT_CACHE_NAMES) #if SDSORT_DYNAMIC_RAM @@ -922,12 +1006,15 @@ void CardReader::presort() { sort_count = fileCnt; } - #if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used - for(int column = 0; column <=19; column++ ) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar - delay(500); - lcd_set_arrows(); + #if !SDSORT_USES_RAM //show progress bar only if slow sorting method is used + for (int column = 0; column <= 19; column++) lcd_implementation_print_at(column, 2, "\x01"); //simple progress bar + delay(300); + lcd_set_degree(); + lcd_implementation_clear(); lcd_update(2); #endif + KEEPALIVE_STATE(NOT_BUSY); + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; } void CardReader::flush_presort() { diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index dff3d263d..c0d662d2d 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -32,6 +32,7 @@ public: void printingHasFinished(); void getfilename(uint16_t nr, const char* const match=NULL); + void getfilename_simple(uint32_t position, const char * const match=NULL); uint16_t getnrfilenames(); void getAbsFilename(char *t); @@ -44,6 +45,10 @@ public: #ifdef SDCARD_SORT_ALPHA void presort(); + #ifdef SDSORT_QUICKSORT + void swap(uint8_t left, uint8_t right); + void quicksort(uint8_t left, uint8_t right); + #endif //SDSORT_QUICKSORT void getfilename_sorted(const uint16_t nr); #if SDSORT_GCODE FORCE_INLINE void setSortOn(bool b) { sort_alpha = b; presort(); } @@ -70,6 +75,7 @@ public: bool cardOK ; char filename[13]; uint16_t creationTime, creationDate; + uint32_t cluster, position; char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; int lastnr; //last number of the autostart; @@ -142,7 +148,7 @@ private: int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. char* diveDirName; void lsDive(const char *prepend, SdFile parent, const char * const match=NULL); - + void lsDive_pointer(const char *prepend, SdFile parent, const char * const match = NULL); #ifdef SDCARD_SORT_ALPHA void flush_presort(); #endif diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 256db02d7..6f8b30218 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -63,6 +63,11 @@ const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_AUTO_HOME_DE }; +const char MSG_AUTO_MODE_ON_EN[] PROGMEM = "Mode [auto power]"; +const char * const MSG_AUTO_MODE_ON_LANG_TABLE[1] PROGMEM = { + MSG_AUTO_MODE_ON_EN +}; + const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { MSG_A_RETRACT_EN @@ -1099,9 +1104,26 @@ const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FILAMENT_LOADING_T3_DE }; +const char MSG_FILE_CNT_EN[] PROGMEM = "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."; +const char MSG_FILE_CNT_DE[] PROGMEM = "Einige Dateien werden nicht sortiert, da das max. 100 Dateien pro Ordner ist."; +const char * const MSG_FILE_CNT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILE_CNT_EN, + MSG_FILE_CNT_EN, + MSG_FILE_CNT_EN, + MSG_FILE_CNT_EN, + MSG_FILE_CNT_EN, + MSG_FILE_CNT_DE +}; + const char MSG_FILE_INCOMPLETE_EN[] PROGMEM = "File incomplete. Continue anyway?"; -const char * const MSG_FILE_INCOMPLETE_LANG_TABLE[1] PROGMEM = { - MSG_FILE_INCOMPLETE_EN +const char MSG_FILE_INCOMPLETE_DE[] PROGMEM = "Datei unvollstaedig. Trotzdem weiter machen?"; +const char * const MSG_FILE_INCOMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FILE_INCOMPLETE_EN, + MSG_FILE_INCOMPLETE_EN, + MSG_FILE_INCOMPLETE_EN, + MSG_FILE_INCOMPLETE_EN, + MSG_FILE_INCOMPLETE_EN, + MSG_FILE_INCOMPLETE_DE }; const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; @@ -2045,7 +2067,7 @@ const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PID_EXTRUDER_DE }; -const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished "; +const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished"; const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; @@ -2060,7 +2082,7 @@ const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PID_FINISHED_DE }; -const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; +const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; @@ -2111,13 +2133,25 @@ const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { }; const char MSG_PLA_FILAMENT_LOADED_EN[] PROGMEM = "Is PLA filament loaded?"; -const char * const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { - MSG_PLA_FILAMENT_LOADED_EN +const char MSG_PLA_FILAMENT_LOADED_DE[] PROGMEM = "Ist PLA Filament geladen?"; +const char * const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_DE }; const char MSG_PLEASE_LOAD_PLA_EN[] PROGMEM = "Please load PLA filament first."; -const char * const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1] PROGMEM = { - MSG_PLEASE_LOAD_PLA_EN +const char MSG_PLEASE_LOAD_PLA_DE[] PROGMEM = "Bitte lade erst PLA filament."; +const char * const MSG_PLEASE_LOAD_PLA_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_DE }; const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; @@ -3470,8 +3504,14 @@ const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_V2_CALIBRATION_EN[] PROGMEM = "First layer cal."; -const char * const MSG_V2_CALIBRATION_LANG_TABLE[1] PROGMEM = { - MSG_V2_CALIBRATION_EN +const char MSG_V2_CALIBRATION_DE[] PROGMEM = "Erste layer Kal."; +const char * const MSG_V2_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_DE }; const char MSG_VMIN_EN[] PROGMEM = "Vmin"; @@ -3530,103 +3570,223 @@ const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { }; const char MSG_WIZARD_EN[] PROGMEM = "Wizard"; -const char * const MSG_WIZARD_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_EN +const char MSG_WIZARD_DE[] PROGMEM = "Assistent"; +const char * const MSG_WIZARD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_EN, + MSG_WIZARD_EN, + MSG_WIZARD_EN, + MSG_WIZARD_EN, + MSG_WIZARD_EN, + MSG_WIZARD_DE }; const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."; -const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_CALIBRATION_FAILED_EN +const char MSG_WIZARD_CALIBRATION_FAILED_DE[] PROGMEM = "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und den Assisenten wieder aufnehmen."; +const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_DE }; const char MSG_WIZARD_CLEAN_HEATBED_EN[] PROGMEM = "Please clean heatbed and then press the knob."; -const char * const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_CLEAN_HEATBED_EN +const char MSG_WIZARD_CLEAN_HEATBED_DE[] PROGMEM = "Bitte reinige das Bett und druecke den Knopf."; +const char * const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_DE }; const char MSG_WIZARD_DONE_EN[] PROGMEM = "All is done. Happy printing!"; -const char * const MSG_WIZARD_DONE_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_DONE_EN +const char MSG_WIZARD_DONE_DE[] PROGMEM = "Fertig. Happy printing!"; +const char * const MSG_WIZARD_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_DE }; const char MSG_WIZARD_FILAMENT_LOADED_EN[] PROGMEM = "Is filament loaded?"; -const char * const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_FILAMENT_LOADED_EN +const char MSG_WIZARD_FILAMENT_LOADED_DE[] PROGMEM = "Filament geladen?"; +const char * const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_DE }; const char MSG_WIZARD_HEATING_EN[] PROGMEM = "Preheating nozzle. Please wait."; -const char * const MSG_WIZARD_HEATING_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_HEATING_EN +const char MSG_WIZARD_HEATING_DE[] PROGMEM = "Vorwaermen der Duese. Bitte warten."; +const char * const MSG_WIZARD_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_DE }; const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN[] PROGMEM = "Please load PLA filament and then resume Wizard by rebooting the printer."; -const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE[] PROGMEM = "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten frotzusetzten."; +const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE }; const char MSG_WIZARD_LANGUAGE_EN[] PROGMEM = "Please choose your language"; -const char * const MSG_WIZARD_LANGUAGE_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_LANGUAGE_EN +const char MSG_WIZARD_LANGUAGE_DE[] PROGMEM = "Bitte Sprache waehlen"; +const char * const MSG_WIZARD_LANGUAGE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_LANGUAGE_EN, + MSG_WIZARD_LANGUAGE_EN, + MSG_WIZARD_LANGUAGE_EN, + MSG_WIZARD_LANGUAGE_EN, + MSG_WIZARD_LANGUAGE_EN, + MSG_WIZARD_LANGUAGE_DE }; const char MSG_WIZARD_LOAD_FILAMENT_EN[] PROGMEM = "Please insert PLA filament to the extruder, then press knob to load it."; -const char * const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_LOAD_FILAMENT_EN +const char MSG_WIZARD_LOAD_FILAMENT_DE[] PROGMEM = "Fuehre PLA Filament in den Extruder und drueck den Knopf um dies zu laden."; +const char * const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_DE }; const char MSG_WIZARD_PLA_FILAMENT_EN[] PROGMEM = "Is it PLA filament?"; -const char * const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_PLA_FILAMENT_EN +const char MSG_WIZARD_PLA_FILAMENT_DE[] PROGMEM = "Ist es PLA Filament?"; +const char * const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_DE }; const char MSG_WIZARD_QUIT_EN[] PROGMEM = "You can always resume the Wizard from Calibration -> Wizard."; -const char * const MSG_WIZARD_QUIT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_QUIT_EN +const char MSG_WIZARD_QUIT_DE[] PROGMEM = "Du kannst den Assistenten immer aus Kalibrierung -> Assistent wider aufnehmen."; +const char * const MSG_WIZARD_QUIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_DE }; const char MSG_WIZARD_REPEAT_V2_CAL_EN[] PROGMEM = "Do you want to repeat last step to readjust distance between nozzle and heatbed?"; -const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_REPEAT_V2_CAL_EN +const char MSG_WIZARD_REPEAT_V2_CAL_DE[] PROGMEM = "Willst Du den letzten Schritt widerholen um den Abstand zwischen Duese und Bett erneut einzustellen?"; +const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_DE }; const char MSG_WIZARD_RERUN_EN[] PROGMEM = "Running Wizard will delete current calibration results and start from the beginning. Continue?"; -const char * const MSG_WIZARD_RERUN_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_RERUN_EN +const char MSG_WIZARD_RERUN_DE[] PROGMEM = "Starten vom Assistenten loest die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?"; +const char * const MSG_WIZARD_RERUN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_DE }; const char MSG_WIZARD_SELFTEST_EN[] PROGMEM = "First, I will run the selftest to check most common assembly problems."; -const char * const MSG_WIZARD_SELFTEST_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_SELFTEST_EN +const char MSG_WIZARD_SELFTEST_DE[] PROGMEM = "Zuerst werden wir den Selbsttest durchfuehren um haeufige Montageprobleme zu ueberpruefen."; +const char * const MSG_WIZARD_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_DE }; const char MSG_WIZARD_V2_CAL_EN[] PROGMEM = "Now I will calibrate distance between tip of the nozzle and heatbed surface."; -const char * const MSG_WIZARD_V2_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_V2_CAL_EN +const char MSG_WIZARD_V2_CAL_DE[] PROGMEM = "Starte mit der Kalibrierung zwischen der Duese und Bett."; +const char * const MSG_WIZARD_V2_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_DE }; const char MSG_WIZARD_V2_CAL_2_EN[] PROGMEM = "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."; -const char * const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_V2_CAL_2_EN +const char MSG_WIZARD_V2_CAL_2_DE[] PROGMEM = "Starte die Kal.-Linie zu drucken, bitte drehe am Knopf bis Du die optimale Hoehe erreichst. Schaue im Handbuch unter Calibration nach."; +const char * const MSG_WIZARD_V2_CAL_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_DE }; const char MSG_WIZARD_WELCOME_EN[] PROGMEM = "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"; -const char * const MSG_WIZARD_WELCOME_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_WELCOME_EN +const char MSG_WIZARD_WELCOME_DE[] PROGMEM = "Hallo, ich bin Dein Original Prusa i3 Drucker. Sollen wir mit dem Setup-Prozess beginnen?"; +const char * const MSG_WIZARD_WELCOME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_DE }; const char MSG_WIZARD_WILL_PREHEAT_EN[] PROGMEM = "Now I will preheat nozzle for PLA."; -const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_WILL_PREHEAT_EN +const char MSG_WIZARD_WILL_PREHEAT_DE[] PROGMEM = "Wareme die Duese fuer PLA vor."; +const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_DE }; const char MSG_WIZARD_XYZ_CAL_EN[] PROGMEM = "I will run xyz calibration now. It will take approx. 12 mins."; -const char * const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_XYZ_CAL_EN +const char MSG_WIZARD_XYZ_CAL_DE[] PROGMEM = "Starte jetzt die XYZ-Kalibrierung. Es wird ca. 12 min. dauern."; +const char * const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_DE }; const char MSG_WIZARD_Z_CAL_EN[] PROGMEM = "I will run z calibration now."; -const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_Z_CAL_EN +const char MSG_WIZARD_Z_CAL_DE[] PROGMEM = "Starte jetzt die Z-Kalibrierung."; +const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_DE }; const char MSG_XYZ_DETAILS_EN[] PROGMEM = "XYZ cal. details"; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 1cf551077..ac9ffa2dc 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -38,6 +38,8 @@ extern const char* const MSG_AUTHOR_LANG_TABLE[1]; #define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; #define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) +extern const char* const MSG_AUTO_MODE_ON_LANG_TABLE[1]; +#define MSG_AUTO_MODE_ON LANG_TABLE_SELECT_EXPLICIT(MSG_AUTO_MODE_ON_LANG_TABLE, 0) extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; #define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; @@ -218,8 +220,10 @@ extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) -extern const char* const MSG_FILE_INCOMPLETE_LANG_TABLE[1]; -#define MSG_FILE_INCOMPLETE LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_INCOMPLETE_LANG_TABLE, 0) +extern const char* const MSG_FILE_CNT_LANG_TABLE[LANG_NUM]; +#define MSG_FILE_CNT LANG_TABLE_SELECT(MSG_FILE_CNT_LANG_TABLE) +extern const char* const MSG_FILE_INCOMPLETE_LANG_TABLE[LANG_NUM]; +#define MSG_FILE_INCOMPLETE LANG_TABLE_SELECT(MSG_FILE_INCOMPLETE_LANG_TABLE) extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; #define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; @@ -398,10 +402,10 @@ extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; #define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; #define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) -extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1]; -#define MSG_PLA_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_PLA_FILAMENT_LOADED_LANG_TABLE, 0) -extern const char* const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1]; -#define MSG_PLEASE_LOAD_PLA LANG_TABLE_SELECT_EXPLICIT(MSG_PLEASE_LOAD_PLA_LANG_TABLE, 0) +extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_PLA_FILAMENT_LOADED LANG_TABLE_SELECT(MSG_PLA_FILAMENT_LOADED_LANG_TABLE) +extern const char* const MSG_PLEASE_LOAD_PLA_LANG_TABLE[LANG_NUM]; +#define MSG_PLEASE_LOAD_PLA LANG_TABLE_SELECT(MSG_PLEASE_LOAD_PLA_LANG_TABLE) extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; #define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; @@ -632,8 +636,8 @@ extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; #define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; #define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) -extern const char* const MSG_V2_CALIBRATION_LANG_TABLE[1]; -#define MSG_V2_CALIBRATION LANG_TABLE_SELECT_EXPLICIT(MSG_V2_CALIBRATION_LANG_TABLE, 0) +extern const char* const MSG_V2_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_V2_CALIBRATION LANG_TABLE_SELECT(MSG_V2_CALIBRATION_LANG_TABLE) extern const char* const MSG_VMIN_LANG_TABLE[1]; #define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; @@ -648,46 +652,46 @@ extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; #define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; #define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_LANG_TABLE[1]; -#define MSG_WIZARD LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1]; -#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1]; -#define MSG_WIZARD_CLEAN_HEATBED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_DONE_LANG_TABLE[1]; -#define MSG_WIZARD_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_DONE_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1]; -#define MSG_WIZARD_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_HEATING_LANG_TABLE[1]; -#define MSG_WIZARD_HEATING LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_HEATING_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_INSERT_CORRECT_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_LANGUAGE_LANG_TABLE[1]; -#define MSG_WIZARD_LANGUAGE LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LANGUAGE_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_LOAD_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_PLA_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_PLA_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_QUIT_LANG_TABLE[1]; -#define MSG_WIZARD_QUIT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_QUIT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_REPEAT_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_RERUN_LANG_TABLE[1]; -#define MSG_WIZARD_RERUN LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_RERUN_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_SELFTEST_LANG_TABLE[1]; -#define MSG_WIZARD_SELFTEST LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_SELFTEST_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_V2_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1]; -#define MSG_WIZARD_V2_CAL_2 LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_2_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_WELCOME_LANG_TABLE[1]; -#define MSG_WIZARD_WELCOME LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WELCOME_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1]; -#define MSG_WIZARD_WILL_PREHEAT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WILL_PREHEAT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_XYZ_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_Z_CAL_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD LANG_TABLE_SELECT(MSG_WIZARD_LANG_TABLE) +extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE) +extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_CLEAN_HEATBED LANG_TABLE_SELECT(MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE) +extern const char* const MSG_WIZARD_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_DONE LANG_TABLE_SELECT(MSG_WIZARD_DONE_LANG_TABLE) +extern const char* const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_FILAMENT_LOADED LANG_TABLE_SELECT(MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE) +extern const char* const MSG_WIZARD_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_HEATING LANG_TABLE_SELECT(MSG_WIZARD_HEATING_LANG_TABLE) +extern const char* const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_LANGUAGE_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_LANGUAGE LANG_TABLE_SELECT(MSG_WIZARD_LANGUAGE_LANG_TABLE) +extern const char* const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_PLA_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_PLA_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_QUIT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_QUIT LANG_TABLE_SELECT(MSG_WIZARD_QUIT_LANG_TABLE) +extern const char* const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_REPEAT_V2_CAL LANG_TABLE_SELECT(MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_RERUN_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_RERUN LANG_TABLE_SELECT(MSG_WIZARD_RERUN_LANG_TABLE) +extern const char* const MSG_WIZARD_SELFTEST_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_SELFTEST LANG_TABLE_SELECT(MSG_WIZARD_SELFTEST_LANG_TABLE) +extern const char* const MSG_WIZARD_V2_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_V2_CAL LANG_TABLE_SELECT(MSG_WIZARD_V2_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_V2_CAL_2_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_V2_CAL_2 LANG_TABLE_SELECT(MSG_WIZARD_V2_CAL_2_LANG_TABLE) +extern const char* const MSG_WIZARD_WELCOME_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_WELCOME LANG_TABLE_SELECT(MSG_WIZARD_WELCOME_LANG_TABLE) +extern const char* const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_WILL_PREHEAT LANG_TABLE_SELECT(MSG_WIZARD_WILL_PREHEAT_LANG_TABLE) +extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT(MSG_WIZARD_XYZ_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT(MSG_WIZARD_Z_CAL_LANG_TABLE) extern const char* const MSG_XYZ_DETAILS_LANG_TABLE[LANG_NUM]; #define MSG_XYZ_DETAILS LANG_TABLE_SELECT(MSG_XYZ_DETAILS_LANG_TABLE) extern const char* const MSG_X_MAX_LANG_TABLE[1]; diff --git a/Firmware/language_de.h b/Firmware/language_de.h index 655d3f955..d49d64f97 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -329,3 +329,28 @@ #define MSG_SORT_ALPHA "Sort: [Alphabet]" #define MSG_SORT_NONE "Sort: [Keine]" #define MSG_SORTING "Sortiere Dateien" +#define MSG_FILE_INCOMPLETE "Datei unvollstaedig. Trotzdem weiter machen?" +#define MSG_WIZARD "Assistent" +#define MSG_WIZARD_LANGUAGE "Bitte Sprache waehlen" +#define MSG_WIZARD_WELCOME "Hallo, ich bin Dein Original Prusa i3 Drucker. Sollen wir mit dem Setup-Prozess beginnen?" +#define MSG_WIZARD_QUIT "Du kannst den Assistenten immer aus Kalibrierung -> Assistent wider aufnehmen." +#define MSG_WIZARD_SELFTEST "Zuerst werden wir den Selbsttest durchfuehren um haeufige Montageprobleme zu ueberpruefen." +#define MSG_WIZARD_CALIBRATION_FAILED "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und den Assisenten wieder aufnehmen." +#define MSG_WIZARD_XYZ_CAL "Starte jetzt die XYZ-Kalibrierung. Es wird ca. 12 min. dauern." +#define MSG_WIZARD_FILAMENT_LOADED "Filament geladen?" +#define MSG_WIZARD_Z_CAL "Starte jetzt die Z-Kalibrierung." +#define MSG_WIZARD_WILL_PREHEAT "Wareme die Duese fuer PLA vor." +#define MSG_WIZARD_HEATING "Vorwaermen der Duese. Bitte warten." +#define MSG_WIZARD_V2_CAL "Starte mit der Kalibrierung zwischen der Duese und Bett." +#define MSG_WIZARD_V2_CAL_2 "Starte die Kal.-Linie zu drucken, bitte drehe am Knopf bis Du die optimale Hoehe erreichst. Schaue im Handbuch unter Calibration nach." +#define MSG_V2_CALIBRATION "Erste layer Kal." +#define MSG_WIZARD_DONE "Fertig. Happy printing!" +#define MSG_WIZARD_LOAD_FILAMENT "Fuehre PLA Filament in den Extruder und drueck den Knopf um dies zu laden." +#define MSG_WIZARD_RERUN "Starten vom Assistenten loest die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?" +#define MSG_WIZARD_REPEAT_V2_CAL "Willst Du den letzten Schritt widerholen um den Abstand zwischen Duese und Bett erneut einzustellen?" +#define MSG_WIZARD_CLEAN_HEATBED "Bitte reinige das Bett und druecke den Knopf." +#define MSG_WIZARD_PLA_FILAMENT "Ist es PLA Filament?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten frotzusetzten." +#define MSG_PLA_FILAMENT_LOADED "Ist PLA Filament geladen?" +#define MSG_PLEASE_LOAD_PLA "Bitte lade erst PLA filament." +#define MSG_FILE_CNT "Einige Dateien werden nicht sortiert, da das max. 100 Dateien pro Ordner ist." \ No newline at end of file diff --git a/Firmware/language_en.h b/Firmware/language_en.h index c531c6e8b..03e3314b2 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -7,10 +7,10 @@ */ #define(length=20) WELCOME_MSG CUSTOM_MENDEL_NAME " ready." -#define(length=20) MSG_SD_INSERTED "Card inserted" +#define MSG_SD_INSERTED "Card inserted" #define MSG_SD_REMOVED "Card removed" #define MSG_MAIN "Main" -#define(length=20) MSG_DISABLE_STEPPERS "Disable steppers" +#define MSG_DISABLE_STEPPERS "Disable steppers" #define MSG_AUTO_HOME "Auto home" #define MSG_SET_HOME_OFFSETS "Set home offsets" #define MSG_SET_ORIGIN "Set origin" @@ -27,7 +27,7 @@ #define MSG_NOZZLE1 "Nozzle2" #define MSG_NOZZLE2 "Nozzle3" #define MSG_BED "Bed" -#define(length=20) MSG_FAN_SPEED "Fan speed" +#define(length=15) MSG_FAN_SPEED "Fan speed" #define MSG_FLOW "Flow" #define MSG_FLOW0 "Flow 0" #define MSG_FLOW1 "Flow 1" @@ -52,7 +52,7 @@ #define MSG_CARD_MENU "Print from SD" #define MSG_NO_CARD "No SD card" #define MSG_DWELL "Sleep..." -#define(length=20) MSG_USERWAIT "Wait for user..." +#define(length=19) MSG_USERWAIT "Wait for user..." #define(length=20) MSG_RESUMING "Resuming print" #define(length=20) MSG_PRINT_ABORTED "Print aborted" #define MSG_NO_MOVE "No move." @@ -64,23 +64,23 @@ #define MSG_BABYSTEP_X "Babystep X" #define MSG_BABYSTEP_Y "Babystep Y" #define MSG_BABYSTEP_Z "Live adjust Z" -#define(length=20) MSG_ADJUSTZ "Auto adjust Z?" +#define(length=18) MSG_ADJUSTZ "Auto adjust Z?" #define(length=20) MSG_PICK_Z "Pick print" #define MSG_SETTINGS "Settings" #define MSG_PREHEAT "Preheat" -#define(length=20) MSG_UNLOAD_FILAMENT "Unload filament" -#define(length=20) MSG_LOAD_FILAMENT "Load filament" -#define(length=20) MSG_LOAD_FILAMENT_1 "Load filament 1" -#define(length=20) MSG_LOAD_FILAMENT_2 "Load filament 2" -#define(length=20) MSG_LOAD_FILAMENT_3 "Load filament 3" -#define(length=20) MSG_LOAD_FILAMENT_4 "Load filament 4" -#define(length=20) MSG_UNLOAD_FILAMENT_1 "Unload filament 1" -#define(length=20) MSG_UNLOAD_FILAMENT_2 "Unload filament 2" -#define(length=20) MSG_UNLOAD_FILAMENT_3 "Unload filament 3" -#define(length=20) MSG_UNLOAD_FILAMENT_4 "Unload filament 4" -#define(length=20) MSG_UNLOAD_ALL "Unload all" -#define(length=20) MSG_LOAD_ALL "Load all" +#define(length=18) MSG_UNLOAD_FILAMENT "Unload filament" +#define(length=17) MSG_LOAD_FILAMENT "Load filament" +#define(length=17) MSG_LOAD_FILAMENT_1 "Load filament 1" +#define(length=17) MSG_LOAD_FILAMENT_2 "Load filament 2" +#define(length=17) MSG_LOAD_FILAMENT_3 "Load filament 3" +#define(length=17) MSG_LOAD_FILAMENT_4 "Load filament 4" +#define(length=17) MSG_UNLOAD_FILAMENT_1 "Unload filament 1" +#define(length=17) MSG_UNLOAD_FILAMENT_2 "Unload filament 2" +#define(length=17) MSG_UNLOAD_FILAMENT_3 "Unload filament 3" +#define(length=17) MSG_UNLOAD_FILAMENT_4 "Unload filament 4" +#define(length=17) MSG_UNLOAD_ALL "Unload all" +#define(length=17) MSG_LOAD_ALL "Load all" #define MSG_RECTRACT "Rectract" @@ -91,7 +91,7 @@ #define MSG_YES "Yes" #define MSG_NO "No" #define(length=19) MSG_NOT_LOADED "Filament not loaded" -#define(length=20) MSG_NOT_COLOR "Color not clear" +#define(length=18) MSG_NOT_COLOR "Color not clear" #define(length=20) MSG_LOADING_FILAMENT "Loading filament" #define(length=20) MSG_PLEASE_WAIT "Please wait" #define MSG_LOADING_COLOR "Loading color" @@ -103,6 +103,7 @@ #define MSG_SILENT_MODE_ON "Mode [silent]" #define MSG_SILENT_MODE_OFF "Mode [high power]" +#define MSG_AUTO_MODE_ON "Mode [auto power]" #define(length=20) MSG_REBOOT "Reboot the printer" #define(length=20, lines=2) MSG_TAKE_EFFECT " for take effect" @@ -164,12 +165,12 @@ #define MSG_PRUSA3D_FORUM "forum.prusa3d.com" #define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" -#define(length=20) MSG_SELFTEST_ERROR "Selftest error !" +#define(length=19) MSG_SELFTEST_ERROR "Selftest error !" #define MSG_SELFTEST_PLEASECHECK "Please check :" -#define(length=20) MSG_SELFTEST_NOTCONNECTED "Not connected" +#define(length=19) MSG_SELFTEST_NOTCONNECTED "Not connected" #define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" #define MSG_SELFTEST_BEDHEATER "Bed / Heater" -#define(length=20) MSG_SELFTEST_WIRINGERROR "Wiring error" +#define(length=18) MSG_SELFTEST_WIRINGERROR "Wiring error" #define MSG_SELFTEST_ENDSTOPS "Endstops" #define MSG_SELFTEST_MOTOR "Motor" #define MSG_SELFTEST_ENDSTOP "Endstop" @@ -181,7 +182,7 @@ #define(length=20) MSG_SELFTEST_COOLING_FAN "Front print fan?"; #define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Left hotend fan?"; #define MSG_SELFTEST_FAN_YES "Spinning"; -#define(length=20) MSG_SELFTEST_FAN_NO "Not spinning"; +#define(length=18) MSG_SELFTEST_FAN_NO "Not spinning"; #define(length=20) MSG_STATS_TOTALFILAMENT "Total filament :" #define(length=20) MSG_STATS_TOTALPRINTTIME "Total print time :" @@ -203,7 +204,7 @@ #define MSG_HOMEYZ_PROGRESS "Calibrating Z" #define MSG_HOMEYZ_DONE "Calibration done" -#define(length=20,lines=1) MSG_SHOW_END_STOPS "Show end stops" +#define(length=19) MSG_SHOW_END_STOPS "Show end stops" #define MSG_CALIBRATE_BED "Calibrate XYZ" #define MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." @@ -264,28 +265,28 @@ #define(length=20) MSG_UNLOADING_FILAMENT "Unloading filament" #define(length=20, lines=10) MSG_PAPER "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -#define(length=20) MSG_BED_CORRECTION_MENU "Bed level correct" +#define(length=18) MSG_BED_CORRECTION_MENU "Bed level correct" #define(length=14,lines=1) MSG_BED_CORRECTION_LEFT "Left side [um]" #define(length=14,lines=1) MSG_BED_CORRECTION_RIGHT "Right side[um]" #define(length=14,lines=1) MSG_BED_CORRECTION_FRONT "Front side[um]" #define(length=14,lines=1) MSG_BED_CORRECTION_REAR "Rear side [um]" -#define(length=20) MSG_BED_CORRECTION_RESET "Reset" +#define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" #define MSG_MENU_CALIBRATION "Calibration" -#define(length=20, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" -#define(length=20, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" #define(length=20, lines=1) MSG_PRINTER_DISCONNECTED "Printer disconnected" #define(length=20, lines=1) MSG_FINISHING_MOVEMENTS "Finishing movements" #define(length=20, lines=1) MSG_PRINT_PAUSED "Print paused" #define(length=20, lines=1) MSG_RESUMING_PRINT "Resuming print" -#define(length=20, lines=1) MSG_PID_EXTRUDER "PID calibration" -#define(length=20, lines=1) MSG_SET_TEMPERATURE "Set temperature:" -#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. finished " -#define(length=20, lines=1) MSG_PID_RUNNING "PID cal. " +#define(length=17, lines=1) MSG_PID_EXTRUDER "PID calibration" +#define(length=19, lines=1) MSG_SET_TEMPERATURE "Set temperature:" +#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. finished" +#define(length=20, lines=1) MSG_PID_RUNNING "PID cal. " -#define(length=20, lines=1) MSG_CALIBRATE_PINDA "Calibrate" -#define(length=20, lines=1) MSG_CALIBRATION_PINDA_MENU "Temp. calibration" +#define(length=17, lines=1) MSG_CALIBRATE_PINDA "Calibrate" +#define(length=17, lines=1) MSG_CALIBRATION_PINDA_MENU "Temp. calibration" #define(length=20, lines=4) MSG_PINDA_NOT_CALIBRATED "Temperature calibration has not been run yet" #define(length=20, lines=1) MSG_PINDA_PREHEAT "PINDA Heating" #define(length=20, lines=1) MSG_TEMP_CALIBRATION "Temp. cal. " @@ -316,28 +317,28 @@ #define(length=17, lines=1) MSG_SORT_ALPHA "Sort: [Alphabet]" #define(length=17, lines=1) MSG_SORT_NONE "Sort: [None]" #define(length=20, lines=1) MSG_SORTING "Sorting files" -#define MSG_FILE_INCOMPLETE "File incomplete. Continue anyway?" +#define(length=20, lines=3) MSG_FILE_INCOMPLETE "File incomplete. Continue anyway?" #define(length=17, lines=1) MSG_WIZARD "Wizard" -#define MSG_WIZARD_LANGUAGE "Please choose your language" -#define MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" -#define MSG_WIZARD_QUIT "You can always resume the Wizard from Calibration -> Wizard." -#define MSG_WIZARD_SELFTEST "First, I will run the selftest to check most common assembly problems." -#define MSG_WIZARD_CALIBRATION_FAILED "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." -#define MSG_WIZARD_XYZ_CAL "I will run xyz calibration now. It will take approx. 12 mins." -#define MSG_WIZARD_FILAMENT_LOADED "Is filament loaded?" -#define MSG_WIZARD_Z_CAL "I will run z calibration now." -#define MSG_WIZARD_WILL_PREHEAT "Now I will preheat nozzle for PLA." -#define MSG_WIZARD_HEATING "Preheating nozzle. Please wait." -#define MSG_WIZARD_V2_CAL "Now I will calibrate distance between tip of the nozzle and heatbed surface." -#define MSG_WIZARD_V2_CAL_2 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +#define(length=20, lines=2) MSG_WIZARD_LANGUAGE "Please choose your language" +#define(length=20, lines=6) MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +#define(length=20, lines=5) MSG_WIZARD_QUIT "You can always resume the Wizard from Calibration -> Wizard." +#define(length=20, lines=6) MSG_WIZARD_SELFTEST "First, I will run the selftest to check most common assembly problems." +#define(length=20, lines=6) MSG_WIZARD_CALIBRATION_FAILED "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +#define(length=20, lines=4) MSG_WIZARD_XYZ_CAL "I will run xyz calibration now. It will take approx. 12 mins." +#define(length=20) MSG_WIZARD_FILAMENT_LOADED "Is filament loaded?" +#define(length=20, lines=2) MSG_WIZARD_Z_CAL "I will run z calibration now." +#define(length=20, lines=2) MSG_WIZARD_WILL_PREHEAT "Now I will preheat nozzle for PLA." +#define(length=20, lines=2) MSG_WIZARD_HEATING "Preheating nozzle. Please wait." +#define(length=20, lines=4) MSG_WIZARD_V2_CAL "Now I will calibrate distance between tip of the nozzle and heatbed surface." +#define(length=20, lines=10) MSG_WIZARD_V2_CAL_2 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." #define MSG_V2_CALIBRATION "First layer cal." -#define MSG_WIZARD_DONE "All is done. Happy printing!" -#define MSG_WIZARD_LOAD_FILAMENT "Please insert PLA filament to the extruder, then press knob to load it." -#define MSG_WIZARD_RERUN "Running Wizard will delete current calibration results and start from the beginning. Continue?" -#define MSG_WIZARD_REPEAT_V2_CAL "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -#define MSG_WIZARD_CLEAN_HEATBED "Please clean heatbed and then press the knob." -#define MSG_WIZARD_PLA_FILAMENT "Is it PLA filament?" -#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." -#define MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" -#define MSG_PLEASE_LOAD_PLA "Please load PLA filament first." -======= \ No newline at end of file +#define(length=20, lines=2) MSG_WIZARD_DONE "All is done. Happy printing!" +#define(length=20, lines=8) MSG_WIZARD_LOAD_FILAMENT "Please insert PLA filament to the extruder, then press knob to load it." +#define(length=20, lines=6) MSG_WIZARD_RERUN "Running Wizard will delete current calibration results and start from the beginning. Continue?" +#define(length=20, lines=6) MSG_WIZARD_REPEAT_V2_CAL "Do you want to repeat last step to readjust distance between nozzle and heatbed?" +#define(length=20, lines=3) MSG_WIZARD_CLEAN_HEATBED "Please clean heatbed and then press the knob." +#define(length=20) MSG_WIZARD_PLA_FILAMENT "Is it PLA filament?" +#define(length=20, lines=5) MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." +#define(length=20, lines=2) MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" +#define(length=20, lines=2) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." +#define(length=20, lines=5) MSG_FILE_CNT "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." \ No newline at end of file diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 1528f46f1..53bc7f5a5 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1156,10 +1156,9 @@ void EEPROM_read_st(int pos, uint8_t* value, uint8_t size) void digipot_init() //Initialize Digipot Motor Current -{ - +{ EEPROM_read_st(EEPROM_SILENT,(uint8_t*)&SilentMode,sizeof(SilentMode)); - + SilentModeMenu = SilentMode; #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 if(SilentMode == 0){ const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT_LOUD; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 35136f853..a8fabe7d2 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -100,6 +100,10 @@ int8_t SilentModeMenu = 0; uint8_t snmm_extruder = 0; #endif +#ifdef SDCARD_SORT_ALPHA +bool presort_flag = false; +#endif + int lcd_commands_type=LCD_COMMAND_IDLE; int lcd_commands_step=0; bool isPrintPaused = false; @@ -560,10 +564,16 @@ void lcd_commands() strcpy(cmd1, "G1 Z"); strcat(cmd1, ftostr32(pause_lastpos[Z_AXIS])); enquecommand(cmd1); - if (axis_relative_modes[3] == true) enquecommand_P(PSTR("M83")); // set extruder to relative mode. - else enquecommand_P(PSTR("M82")); // set extruder to absolute mode - enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract - enquecommand_P(PSTR("G90")); //absolute positioning + + if (axis_relative_modes[3] == false) { + enquecommand_P(PSTR("M83")); // set extruder to relative mode + enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract + enquecommand_P(PSTR("M82")); // set extruder to absolute mode + } + else { + enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract + } + lcd_commands_step = 1; } if (lcd_commands_step == 3 && !blocks_queued()) { //wait for nozzle to reach target temp @@ -578,7 +588,7 @@ void lcd_commands() strcpy(cmd1, "M104 S"); strcat(cmd1, ftostr3(HotendTempBckp)); enquecommand(cmd1); - + enquecommand_P(PSTR("G90")); //absolute positioning strcpy(cmd1, "G1 X"); strcat(cmd1, ftostr32(pause_lastpos[X_AXIS])); strcat(cmd1, " Y"); @@ -620,9 +630,9 @@ void lcd_commands() { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); - enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0)); - nquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0)); - enquecommand_P(PSTR("G1 Z0.200 F7200.000)); + enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); + enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); + enquecommand_P(PSTR("G1 Z0.200 F7200.000")); enquecommand_P(PSTR("G1 X220.0 E13 F1000.0")); enquecommand_P(PSTR("G1 X240.0 E0 F1000.0")); enquecommand_P(PSTR("G92 E0.0")); @@ -2737,7 +2747,6 @@ void EEPROM_read(int pos, uint8_t* value, uint8_t size) #ifdef SDCARD_SORT_ALPHA static void lcd_sort_type_set() { uint8_t sdSort; - EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); switch (sdSort) { case SD_SORT_TIME: sdSort = SD_SORT_ALPHA; break; @@ -2745,16 +2754,18 @@ static void lcd_sort_type_set() { default: sdSort = SD_SORT_TIME; } eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort); - lcd_goto_menu(lcd_sdcard_menu, 1); - //lcd_update(2); - //delay(1000); - - card.presort(); + presort_flag = true; + lcd_goto_menu(lcd_settings_menu, 8); } #endif //SDCARD_SORT_ALPHA static void lcd_silent_mode_set() { - SilentModeMenu = !SilentModeMenu; + switch (SilentModeMenu) { + case 0: SilentModeMenu = 1; break; + case 1: SilentModeMenu = 2; break; + case 2: SilentModeMenu = 0; break; + default: SilentModeMenu = 0; break; + } eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); digipot_init(); lcd_goto_menu(lcd_settings_menu, 7); @@ -2770,8 +2781,8 @@ static void lcd_set_lang(unsigned char lang) { } #if !SDSORT_USES_RAM -void lcd_set_arrows() { - void lcd_set_custom_characters_arrows(); +void lcd_set_degree() { + lcd_set_custom_characters_degree(); } void lcd_set_progress() { @@ -3157,11 +3168,14 @@ static void lcd_settings_menu() { MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); } - - if ((SilentModeMenu == 0) || (farm_mode) ) { - MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); - } else { - MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); + + if (!farm_mode) { //dont show in menu if we are in farm mode + switch (SilentModeMenu) { + case 0: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + case 1: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; + case 2: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; + default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + } } if (!isPrintPaused && !homing_flag) @@ -3175,6 +3189,17 @@ static void lcd_settings_menu() } else { MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF, lcd_toshiba_flash_air_compatibility_toggle); } +#ifdef SDCARD_SORT_ALPHA + if (!farm_mode) { + uint8_t sdSort; + EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); + switch (sdSort) { + case SD_SORT_TIME: MENU_ITEM(function, MSG_SORT_TIME, lcd_sort_type_set); break; + case SD_SORT_ALPHA: MENU_ITEM(function, MSG_SORT_ALPHA, lcd_sort_type_set); break; + default: MENU_ITEM(function, MSG_SORT_NONE, lcd_sort_type_set); + } + } +#endif // SDCARD_SORT_ALPHA if (farm_mode) { @@ -3804,12 +3829,10 @@ void change_extr(int extr) { //switches multiplexer for extruders case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - break; case 3: WRITE(E_MUX0_PIN, HIGH); @@ -3821,7 +3844,7 @@ void change_extr(int extr) { //switches multiplexer for extruders WRITE(E_MUX1_PIN, LOW); break; - } + } delay(100); } @@ -4496,8 +4519,13 @@ static void lcd_autostart_sd() static void lcd_silent_mode_set_tune() { - SilentModeMenu = !SilentModeMenu; - eeprom_update_byte((unsigned char*)EEPROM_SILENT, SilentModeMenu); + switch (SilentModeMenu) { + case 0: SilentModeMenu = 1; break; + case 1: SilentModeMenu = 2; break; + case 2: SilentModeMenu = 0; break; + default: SilentModeMenu = 0; break; + } + eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); digipot_init(); lcd_goto_menu(lcd_tune_menu, 9); } @@ -4532,10 +4560,13 @@ static void lcd_tune_menu() MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif - if (SilentModeMenu == 0) { - MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set_tune); - } else { - MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set_tune); + if (!farm_mode) { //dont show in menu if we are in farm mode + switch (SilentModeMenu) { + case 0: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + case 1: MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set); break; + case 2: MENU_ITEM(function, MSG_AUTO_MODE_ON, lcd_silent_mode_set); break; + default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); break; + } } END_MENU(); } @@ -4691,8 +4722,13 @@ void getFileDescription(char *name, char *description) { void lcd_sdcard_menu() { - uint8_t sdSort; + uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); + int tempScrool = 0; + if (presort_flag == true) { + presort_flag = false; + card.presort(); + } if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) //delay(100); return; // nothing to do (so don't thrash the SD card) @@ -4700,16 +4736,6 @@ void lcd_sdcard_menu() START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); - if (!farm_mode) { -#ifdef SDCARD_SORT_ALPHA - EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort)); - switch (sdSort) { - case SD_SORT_TIME: MENU_ITEM(function, MSG_SORT_TIME, lcd_sort_type_set); break; - case SD_SORT_ALPHA: MENU_ITEM(function, MSG_SORT_ALPHA, lcd_sort_type_set); break; - default: MENU_ITEM(function, MSG_SORT_NONE, lcd_sort_type_set); - } -#endif // SDCARD_SORT_ALPHA - } card.getWorkDirName(); if (card.filename[0] == '/') { @@ -4724,14 +4750,8 @@ void lcd_sdcard_menu() { if (_menuItemNr == _lineNr) { - const uint16_t nr = ((sdSort == SD_SORT_NONE) || farm_mode) ? (fileCnt - 1 - i) : i; + uint16_t nr = ((sdSort == SD_SORT_NONE) || farm_mode || (sdSort == SD_SORT_TIME)) ? (fileCnt - 1 - i) : i; - /* #ifdef SDCARD_RATHERRECENTFIRST - #ifndef SDCARD_SORT_ALPHA - fileCnt - 1 - - #endif - #endif - i;*/ #ifdef SDCARD_SORT_ALPHA if (sdSort == SD_SORT_NONE) card.getfilename(nr); else card.getfilename_sorted(nr); @@ -4750,17 +4770,6 @@ void lcd_sdcard_menu() END_MENU(); } -//char description [10] [31]; - -/*void get_description() { - uint16_t fileCnt = card.getnrfilenames(); - for (uint16_t i = 0; i < fileCnt; i++) - { - card.getfilename(fileCnt - 1 - i); - getFileDescription(card.filename, description[i]); - } -}*/ - /*void lcd_farm_sdcard_menu() { static int i = 0; @@ -5767,6 +5776,7 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) (*currentMenu)(); menuExiting = false; } + lcd_implementation_clear(); lcd_return_to_status(); lcdDrawUpdate = 2; } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 7ff4ab805..bc3f9606c 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -75,7 +75,7 @@ void lcd_mylang(); #define LCD_ALERTMESSAGERPGM(x) lcd_setalertstatuspgm((x)) #define LCD_UPDATE_INTERVAL 100 - #define LCD_TIMEOUT_TO_STATUS 15000 + #define LCD_TIMEOUT_TO_STATUS 30000 #ifdef ULTIPANEL void lcd_buttons_update(); @@ -105,6 +105,7 @@ void lcd_mylang(); extern int farm_no; extern int farm_timer; extern int farm_status; + extern int8_t SilentModeMenu; #ifdef SNMM extern uint8_t snmm_extruder; @@ -265,7 +266,7 @@ void display_loading(); void lcd_service_mode_show_result(); #if !SDSORT_USES_RAM -void lcd_set_arrows(); +void lcd_set_degree(); void lcd_set_progress(); #endif diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index f880da88c..4f91947cc 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -498,6 +498,7 @@ void lcd_set_custom_characters_nextpage() B10110, B11100, B01000, + B00000, B00000 }; From da7be0c0ee3905451faa7a0e346555532f8947c5 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d-gussner@users.noreply.github.com> Date: Wed, 4 Oct 2017 02:41:32 +0200 Subject: [PATCH 23/29] Merge to 3.0.12-9 --- .../variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h | 818 +++++++++--------- .../variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h | 818 +++++++++--------- ...5mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h | 812 ++++++++--------- ...5mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h | 816 ++++++++--------- .../variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 812 ++++++++--------- .../variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 816 ++++++++--------- 6 files changed, 2452 insertions(+), 2440 deletions(-) diff --git a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h index 27bece70c..5dd4ab196 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h @@ -1,408 +1,410 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK1" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK1" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 - -// MK1 back port -#define MK1BP - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,174.2} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 0.25 - -// Travel limits after homing -#define X_MAX_POS 214 -#define X_MIN_POS 0 -#define Y_MAX_POS 198 -#define Y_MIN_POS 0 -#define Z_MAX_POS 201 -#define Z_MIN_POS 0.23 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 240, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 240, 60} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 190 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - - - - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.0a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define PAUSE_RETRACT 1 - -#define DEFAULT_PID_TEMP 210 - -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK1" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK1" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 + +// MK1 back port +#define MK1BP + +// Prusa Single extruder multiple material suport +//#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,174.2} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0.25 + +// Travel limits after homing +#define X_MAX_POS 214 +#define X_MIN_POS 0 +#define Y_MAX_POS 198 +#define Y_MIN_POS 0 +#define Z_MAX_POS 201 +#define Z_MIN_POS 0.23 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 240, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 240, 60} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 190 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + + + + + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.0a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define PAUSE_RETRACT 1 + +#define DEFAULT_PID_TEMP 210 + +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h index e372831c4..7345f4b52 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h @@ -1,408 +1,410 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK1" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK1" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 - -// MK1 back port -#define MK1BP - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,174.2} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 0.25 - -// Travel limits after homing -#define X_MAX_POS 214 -#define X_MIN_POS 0 -#define Y_MAX_POS 198 -#define Y_MIN_POS 0 -#define Z_MAX_POS 201 -#define Z_MIN_POS 0.23 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 240, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 240, 60} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 190 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - - - - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define PAUSE_RETRACT 1 - -#define DEFAULT_PID_TEMP 210 - -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK1" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK1" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 + +// MK1 back port +#define MK1BP + +// Prusa Single extruder multiple material suport +//#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/0.8,174.2} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0.25 + +// Travel limits after homing +#define X_MAX_POS 214 +#define X_MIN_POS 0 +#define Y_MAX_POS 198 +#define Y_MIN_POS 0 +#define Z_MAX_POS 201 +#define Z_MIN_POS 0.23 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 240, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 240, 60} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 190 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + + + + + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define PAUSE_RETRACT 1 + +#define DEFAULT_PID_TEMP 210 + +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h index 6093f8ac5..7d90c541b 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h @@ -1,405 +1,407 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2_MM" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 - -// Prusa Single extruder multiple material suport -#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -// Prusa Single extruder multiple material suport -//#define SNMM - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is Pt100 with 4k7 pullup and no PT100 Amplifier (in case type 147 doesn't work) -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK2_MM" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 + +// Prusa Single extruder multiple material suport +#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.15 + +// Travel limits after homing +#define X_MAX_POS 250 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS -2.2 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 130 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + +// Prusa Single extruder multiple material suport +//#define SNMM + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is Pt100 with 4k7 pullup and no PT100 Amplifier (in case type 147 doesn't work) +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#ifdef SNMM +#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print +#else +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print +#endif + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h index 06ea61f83..16faf402f 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h @@ -1,407 +1,409 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2_MM" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 - -// Prusa Single extruder multiple material suport -#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - - - - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK2_MM" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 + +// Prusa Single extruder multiple material suport +#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.15 + +// Travel limits after homing +#define X_MAX_POS 250 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS -2.2 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 130 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + + + + + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#ifdef SNMM +#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print +#else +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print +#endif + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index fc89c0656..418864e71 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -1,405 +1,407 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -// Prusa Single extruder multiple material suport -//#define SNMM - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is Pt100 with 4k7 pullup and no PT100 Amplifier (in case type 147 doesn't work) -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK2" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 + +// Prusa Single extruder multiple material suport +//#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.15 + +// Travel limits after homing +#define X_MAX_POS 250 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS -2.2 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 130 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + +// Prusa Single extruder multiple material suport +//#define SNMM + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is Pt100 with 4k7 pullup and no PT100 Amplifier (in case type 147 doesn't work) +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#ifdef SNMM +#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print +#else +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print +#endif + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index 5307ede95..840a17ebf 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -1,407 +1,409 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - - - - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s -#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring -#define NC_BUTTON_LONG_PRESS 15 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete - -#endif //__CONFIGURATION_PRUSA_H +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK2" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 + +// Prusa Single extruder multiple material suport +//#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.15 + +// Travel limits after homing +#define X_MAX_POS 250 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS -2.2 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 130 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + + + + + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 102 || MOTHERBOARD == 302 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#ifdef SNMM +#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print +#else +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print +#endif + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#endif //__CONFIGURATION_PRUSA_H From 558c1b8546908797801abf700e0c90931611df7f Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 4 Oct 2017 09:31:18 +0200 Subject: [PATCH 24/29] Minor translation and typos changes --- Firmware/language_de.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Firmware/language_de.h b/Firmware/language_de.h index d49d64f97..bac9be730 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -335,22 +335,22 @@ #define MSG_WIZARD_WELCOME "Hallo, ich bin Dein Original Prusa i3 Drucker. Sollen wir mit dem Setup-Prozess beginnen?" #define MSG_WIZARD_QUIT "Du kannst den Assistenten immer aus Kalibrierung -> Assistent wider aufnehmen." #define MSG_WIZARD_SELFTEST "Zuerst werden wir den Selbsttest durchfuehren um haeufige Montageprobleme zu ueberpruefen." -#define MSG_WIZARD_CALIBRATION_FAILED "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und den Assisenten wieder aufnehmen." +#define MSG_WIZARD_CALIBRATION_FAILED "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und mit dem Assisenten weitermachen." #define MSG_WIZARD_XYZ_CAL "Starte jetzt die XYZ-Kalibrierung. Es wird ca. 12 min. dauern." #define MSG_WIZARD_FILAMENT_LOADED "Filament geladen?" #define MSG_WIZARD_Z_CAL "Starte jetzt die Z-Kalibrierung." -#define MSG_WIZARD_WILL_PREHEAT "Wareme die Duese fuer PLA vor." +#define MSG_WIZARD_WILL_PREHEAT "Waerme die Duese fuer PLA vor." #define MSG_WIZARD_HEATING "Vorwaermen der Duese. Bitte warten." #define MSG_WIZARD_V2_CAL "Starte mit der Kalibrierung zwischen der Duese und Bett." #define MSG_WIZARD_V2_CAL_2 "Starte die Kal.-Linie zu drucken, bitte drehe am Knopf bis Du die optimale Hoehe erreichst. Schaue im Handbuch unter Calibration nach." -#define MSG_V2_CALIBRATION "Erste layer Kal." +#define MSG_V2_CALIBRATION "Erste Layer Kal." #define MSG_WIZARD_DONE "Fertig. Happy printing!" #define MSG_WIZARD_LOAD_FILAMENT "Fuehre PLA Filament in den Extruder und drueck den Knopf um dies zu laden." -#define MSG_WIZARD_RERUN "Starten vom Assistenten loest die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?" +#define MSG_WIZARD_RERUN "Starten vom Assistenten loescht die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?" #define MSG_WIZARD_REPEAT_V2_CAL "Willst Du den letzten Schritt widerholen um den Abstand zwischen Duese und Bett erneut einzustellen?" #define MSG_WIZARD_CLEAN_HEATBED "Bitte reinige das Bett und druecke den Knopf." #define MSG_WIZARD_PLA_FILAMENT "Ist es PLA Filament?" -#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten frotzusetzten." +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten fortzusetzen." #define MSG_PLA_FILAMENT_LOADED "Ist PLA Filament geladen?" #define MSG_PLEASE_LOAD_PLA "Bitte lade erst PLA filament." #define MSG_FILE_CNT "Einige Dateien werden nicht sortiert, da das max. 100 Dateien pro Ordner ist." \ No newline at end of file From 2b9b639b6fc7c4657e40eb136e2d4a53212e4633 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 4 Oct 2017 09:58:50 +0200 Subject: [PATCH 25/29] Minor translation/typos and missed MSGs --- Firmware/language_all.cpp | 30 +++++++++++++++++++++--------- Firmware/language_all.h | 8 ++++---- Firmware/language_de.h | 4 +++- Firmware/language_en.h | 2 +- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 6f8b30218..827f85db6 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -64,8 +64,14 @@ const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_AUTO_MODE_ON_EN[] PROGMEM = "Mode [auto power]"; -const char * const MSG_AUTO_MODE_ON_LANG_TABLE[1] PROGMEM = { - MSG_AUTO_MODE_ON_EN +const char MSG_AUTO_MODE_ON_DE[] PROGMEM = "Mode[Automatisch]"; +const char * const MSG_AUTO_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_AUTO_MODE_ON_EN, + MSG_AUTO_MODE_ON_EN, + MSG_AUTO_MODE_ON_EN, + MSG_AUTO_MODE_ON_EN, + MSG_AUTO_MODE_ON_EN, + MSG_AUTO_MODE_ON_DE }; const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; @@ -3065,8 +3071,14 @@ const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; -const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { - MSG_STACK_ERROR_EN +const char MSG_STACK_ERROR_DE[] PROGMEM = "Error - EEPROM wurde ueberschrieben"; +const char * const MSG_STACK_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_STACK_ERROR_EN, + MSG_STACK_ERROR_EN, + MSG_STACK_ERROR_EN, + MSG_STACK_ERROR_EN, + MSG_STACK_ERROR_EN, + MSG_STACK_ERROR_DE }; const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; @@ -3504,7 +3516,7 @@ const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_V2_CALIBRATION_EN[] PROGMEM = "First layer cal."; -const char MSG_V2_CALIBRATION_DE[] PROGMEM = "Erste layer Kal."; +const char MSG_V2_CALIBRATION_DE[] PROGMEM = "Erste Layer Kal."; const char * const MSG_V2_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_V2_CALIBRATION_EN, MSG_V2_CALIBRATION_EN, @@ -3581,7 +3593,7 @@ const char * const MSG_WIZARD_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."; -const char MSG_WIZARD_CALIBRATION_FAILED_DE[] PROGMEM = "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und den Assisenten wieder aufnehmen."; +const char MSG_WIZARD_CALIBRATION_FAILED_DE[] PROGMEM = "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und mit dem Assisenten fortzusetzen."; const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_CALIBRATION_FAILED_EN, MSG_WIZARD_CALIBRATION_FAILED_EN, @@ -3636,7 +3648,7 @@ const char * const MSG_WIZARD_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN[] PROGMEM = "Please load PLA filament and then resume Wizard by rebooting the printer."; -const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE[] PROGMEM = "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten frotzusetzten."; +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE[] PROGMEM = "Bitte lade PLA Filament und starte den Drucker neu um den Assistenten fortzusetzen."; const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, @@ -3702,7 +3714,7 @@ const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_WIZARD_RERUN_EN[] PROGMEM = "Running Wizard will delete current calibration results and start from the beginning. Continue?"; -const char MSG_WIZARD_RERUN_DE[] PROGMEM = "Starten vom Assistenten loest die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?"; +const char MSG_WIZARD_RERUN_DE[] PROGMEM = "Starten vom Assistenten loescht die aktuelle Kalibrierung und beginnt von vorne. Fortsetzen?"; const char * const MSG_WIZARD_RERUN_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_RERUN_EN, MSG_WIZARD_RERUN_EN, @@ -3757,7 +3769,7 @@ const char * const MSG_WIZARD_WELCOME_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_WIZARD_WILL_PREHEAT_EN[] PROGMEM = "Now I will preheat nozzle for PLA."; -const char MSG_WIZARD_WILL_PREHEAT_DE[] PROGMEM = "Wareme die Duese fuer PLA vor."; +const char MSG_WIZARD_WILL_PREHEAT_DE[] PROGMEM = "Waerme die Duese fuer PLA vor."; const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_WIZARD_WILL_PREHEAT_EN, MSG_WIZARD_WILL_PREHEAT_EN, diff --git a/Firmware/language_all.h b/Firmware/language_all.h index ac9ffa2dc..62faf1315 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -38,8 +38,8 @@ extern const char* const MSG_AUTHOR_LANG_TABLE[1]; #define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; #define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) -extern const char* const MSG_AUTO_MODE_ON_LANG_TABLE[1]; -#define MSG_AUTO_MODE_ON LANG_TABLE_SELECT_EXPLICIT(MSG_AUTO_MODE_ON_LANG_TABLE, 0) +extern const char* const MSG_AUTO_MODE_ON_LANG_TABLE[LANG_NUM]; +#define MSG_AUTO_MODE_ON LANG_TABLE_SELECT(MSG_AUTO_MODE_ON_LANG_TABLE) extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; #define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; @@ -570,8 +570,8 @@ extern const char* const MSG_SORT_TIME_LANG_TABLE[LANG_NUM]; #define MSG_SORT_TIME LANG_TABLE_SELECT(MSG_SORT_TIME_LANG_TABLE) extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; #define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) -extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; -#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) +extern const char* const MSG_STACK_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_STACK_ERROR LANG_TABLE_SELECT(MSG_STACK_ERROR_LANG_TABLE) extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; #define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_de.h b/Firmware/language_de.h index bac9be730..86b917bbd 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -102,6 +102,7 @@ #define MSG_SILENT_MODE_ON "Mode [leise]" #define MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" +#define MSG_AUTO_MODE_ON "Mode[Automatisch]" #define MSG_REBOOT "Reboot den Drucker" #define MSG_TAKE_EFFECT " um wirksam zu werden" @@ -249,6 +250,7 @@ #define MSG_FIL_ADJUSTING "Einstellen Filament. Bitte warten." #define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber." +#define MSG_STACK_ERROR "Error - EEPROM wurde ueberschrieben" #define MSG_CALIBRATE_E "Kalibriere E" //#define MSG_RESET_CALIBRATE_E "Reset E Cal." @@ -335,7 +337,7 @@ #define MSG_WIZARD_WELCOME "Hallo, ich bin Dein Original Prusa i3 Drucker. Sollen wir mit dem Setup-Prozess beginnen?" #define MSG_WIZARD_QUIT "Du kannst den Assistenten immer aus Kalibrierung -> Assistent wider aufnehmen." #define MSG_WIZARD_SELFTEST "Zuerst werden wir den Selbsttest durchfuehren um haeufige Montageprobleme zu ueberpruefen." -#define MSG_WIZARD_CALIBRATION_FAILED "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und mit dem Assisenten weitermachen." +#define MSG_WIZARD_CALIBRATION_FAILED "Lese das Handbuch um das Problem zu beheben. Danach den Drucker neustarten und mit dem Assisenten fortzusetzen." #define MSG_WIZARD_XYZ_CAL "Starte jetzt die XYZ-Kalibrierung. Es wird ca. 12 min. dauern." #define MSG_WIZARD_FILAMENT_LOADED "Filament geladen?" #define MSG_WIZARD_Z_CAL "Starte jetzt die Z-Kalibrierung." diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 03e3314b2..bab0b3963 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -323,7 +323,7 @@ #define(length=20, lines=6) MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" #define(length=20, lines=5) MSG_WIZARD_QUIT "You can always resume the Wizard from Calibration -> Wizard." #define(length=20, lines=6) MSG_WIZARD_SELFTEST "First, I will run the selftest to check most common assembly problems." -#define(length=20, lines=6) MSG_WIZARD_CALIBRATION_FAILED "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +#define(length=20, lines=7) MSG_WIZARD_CALIBRATION_FAILED "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." #define(length=20, lines=4) MSG_WIZARD_XYZ_CAL "I will run xyz calibration now. It will take approx. 12 mins." #define(length=20) MSG_WIZARD_FILAMENT_LOADED "Is filament loaded?" #define(length=20, lines=2) MSG_WIZARD_Z_CAL "I will run z calibration now." From e8c467750653c88eb19d4f7678a83528b994c21c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 4 Oct 2017 14:48:16 +0200 Subject: [PATCH 26/29] rectangular object enlarged, counting E improved --- Firmware/ultralcd.cpp | 271 +++++++++++++++++++++++++++++++++++------- Firmware/ultralcd.h | 1 + 2 files changed, 232 insertions(+), 40 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 574a57b3b..570baf481 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -602,12 +602,18 @@ void lcd_commands() #ifdef SNMM if (lcd_commands_type == LCD_COMMAND_V2_CAL) { + char cmd1[30]; + float width = 0.4; + float length = 20 - width; + float extr = count_e(0.2, width, length); + float extr_short_segment = count_e(0.2, width, width); + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; if (lcd_commands_step == 0) { - lcd_commands_step = 7; + lcd_commands_step = 10; } - if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 10 && !blocks_queued() && cmd_buffer_empty()) { enquecommand_P(PSTR("M107")); enquecommand_P(PSTR("M104 S210")); @@ -624,9 +630,9 @@ void lcd_commands() enquecommand_P(PSTR("G92 E0")); enquecommand_P(PSTR("M203 E100")); enquecommand_P(PSTR("M92 E140")); - lcd_commands_step = 6; + lcd_commands_step = 9; } - if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); @@ -648,9 +654,9 @@ void lcd_commands() lcd_goto_menu(lcd_babystep_z, 0, false); - lcd_commands_step = 5; + lcd_commands_step = 8; } - if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) //draw meander + if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) //draw meander { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; @@ -672,36 +678,123 @@ void lcd_commands() enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); + lcd_commands_step = 7; + } + + if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 4; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 6; + } + + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 4; i < 8; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 5; + } + + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 8; i < 12; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + lcd_commands_step = 4; } if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) { - char cmd1[30]; - float width = 0.4; - float extr = 0.5; // for 20mm - lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - strcpy(cmd1, "G1 X50 Y35 E"); - strcat(cmd1, ftostr32(extr)); - enquecommand(cmd1); - - for (int i = 0; i < 5; i++) { + for (int i = 12; i < 16; i++) { strcpy(cmd1, "G1 X70 Y"); strcat(cmd1, ftostr32(35 - i*width * 2)); strcat(cmd1, " E"); - strcat(cmd1, ftostr32(extr)); + strcat(cmd1, ftostr43(extr)); enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); strcat(cmd1, " E"); - strcat(cmd1, ftostr32(extr)); + strcat(cmd1, ftostr43(extr)); enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -772,15 +865,19 @@ void lcd_commands() #else //if not SNMM - if (lcd_commands_type == LCD_COMMAND_V2_CAL) { + char cmd1[30]; + float width = 0.4; + float length = 20 - width; + float extr = count_e(0.2, width, length); + float extr_short_segment = count_e(0.2, width, width); lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; if (lcd_commands_step == 0) { - lcd_commands_step = 6; + lcd_commands_step = 9; } - if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty()) { enquecommand_P(PSTR("M107")); enquecommand_P(PSTR("M104 S210")); @@ -791,9 +888,9 @@ void lcd_commands() enquecommand_P(PSTR("G87")); //sets calibration status enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G92 E0.0")); - lcd_commands_step = 5; + lcd_commands_step = 8; } - if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) { lcd_implementation_clear(); @@ -808,9 +905,9 @@ void lcd_commands() enquecommand_P(PSTR("G1 Z0.150 F7200.000")); enquecommand_P(PSTR("M204 S1000")); //set acceleration enquecommand_P(PSTR("G1 F4000")); - lcd_commands_step = 4; + lcd_commands_step = 7; } - if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) //draw meander + if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) //draw meander { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; @@ -850,39 +947,127 @@ void lcd_commands() enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); + lcd_commands_step = 6; + } + + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + { + + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 4; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 5; + } + + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 4; i < 8; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 4; + } + + if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 8; i < 12; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + lcd_commands_step = 3; } if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) { - char cmd1[30]; - float width = 0.4; - float extr = 0.5; // for 20mm - lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - strcpy(cmd1, "G1 X50 Y35 E"); - strcat(cmd1, ftostr32(extr)); - enquecommand(cmd1); - - for (int i = 0; i < 5; i++) { + for (int i = 12; i < 16; i++) { strcpy(cmd1, "G1 X70 Y"); - strcat(cmd1, ftostr32(35 - i*width*2)); + strcat(cmd1, ftostr32(35 - i*width * 2)); strcat(cmd1, " E"); - strcat(cmd1, ftostr32(extr)); + strcat(cmd1, ftostr43(extr)); enquecommand(cmd1); strcpy(cmd1, "G1 Y"); - strcat(cmd1, ftostr32(35 - (2*i+1)*width)); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); - strcat(cmd1, ftostr32(35 - (2*i+1)*width)); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); strcat(cmd1, " E"); - strcat(cmd1, ftostr32(extr)); + strcat(cmd1, ftostr43(extr)); enquecommand(cmd1); strcpy(cmd1, "G1 Y"); - strcat(cmd1, ftostr32(35 - (i + 1)*width*2)); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } - + lcd_commands_step = 2; } @@ -1098,6 +1283,12 @@ void lcd_commands() } +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length) { + //returns filament length in mm which needs to be extrude to form line with extrusion_length * extrusion_width * layer heigth dimensions + float extr = extrusion_length * layer_heigth * extrusion_width / (M_PI * pow(1.75, 2) / 4); + return extr; +} + static void lcd_return_to_status() { lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index bc3f9606c..8aad71932 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -234,6 +234,7 @@ static void lcd_babystep_z(); #ifdef SDCARD_SORT_ALPHA static void lcd_sort_type_set(); #endif +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); void stack_error(); static void lcd_ping_allert(); void lcd_printer_connected(); From 4297d90309e6b8caca406269454500426e76435b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 4 Oct 2017 20:54:17 +0200 Subject: [PATCH 27/29] version changed --- Firmware/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 1a8f86b73..7b224861a 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-9" +#define FW_version "3.1.0-RC1" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 From a74d445cfa6d459682dbb4b10cd9d1ab219cbb32 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 5 Oct 2017 00:21:32 +0200 Subject: [PATCH 28/29] Default EN --- Firmware/langtool.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/langtool.pl b/Firmware/langtool.pl index ac9dee72d..14b191091 100644 --- a/Firmware/langtool.pl +++ b/Firmware/langtool.pl @@ -198,7 +198,7 @@ print $fh < Date: Sun, 8 Oct 2017 10:11:48 +0200 Subject: [PATCH 29/29] Thess warning cleanup --- Firmware/ConfigurationStore.h | 2 +- Firmware/MarlinSerial.cpp | 8 +- Firmware/MarlinSerial.h | 9 +- Firmware/Marlin_main.cpp | 152 ++++++----- Firmware/SdFatUtil.cpp | 2 +- Firmware/cardreader.cpp | 25 +- Firmware/language_all.h | 2 +- Firmware/mesh_bed_calibration.cpp | 20 +- Firmware/pins.h | 78 +++--- Firmware/planner.cpp | 12 +- Firmware/stepper.cpp | 27 +- Firmware/temperature.cpp | 14 +- Firmware/temperature.h | 5 - Firmware/ultralcd.cpp | 240 ++++++++---------- Firmware/ultralcd.h | 39 +-- .../ultralcd_implementation_hitachi_HD44780.h | 17 +- .../variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h | 2 +- ...5mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h | 2 +- ...5mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 2 +- .../variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 2 +- 22 files changed, 309 insertions(+), 355 deletions(-) diff --git a/Firmware/ConfigurationStore.h b/Firmware/ConfigurationStore.h index f3254318a..d0c609e7d 100644 --- a/Firmware/ConfigurationStore.h +++ b/Firmware/ConfigurationStore.h @@ -21,7 +21,7 @@ FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_Prin #endif inline uint8_t calibration_status() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS); } -inline uint8_t calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } +inline void calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } inline bool calibration_status_pinda() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA); } #endif//CONFIG_STORE_H diff --git a/Firmware/MarlinSerial.cpp b/Firmware/MarlinSerial.cpp index 8baab6dd3..a879b0648 100644 --- a/Firmware/MarlinSerial.cpp +++ b/Firmware/MarlinSerial.cpp @@ -56,8 +56,8 @@ FORCE_INLINE void store_char(unsigned char c) // Test for a framing error. if (M_UCSRxA & (1< 0 && millis()-_usb_timer > 1000) { is_usb_printing = true; @@ -1413,43 +1408,43 @@ void loop() get_command(); - #ifdef SDSUPPORT - card.checkautostart(false); - #endif - if(buflen) - { - #ifdef SDSUPPORT - if(card.saving) - { - // Saving a G-code file onto an SD-card is in progress. - // Saving starts with M28, saving until M29 is seen. - if(strstr_P(CMDBUFFER_CURRENT_STRING, PSTR("M29")) == NULL) { - card.write_command(CMDBUFFER_CURRENT_STRING); - if(card.logging) - process_commands(); - else - SERIAL_PROTOCOLLNRPGM(MSG_OK); - } else { - card.closefile(); - SERIAL_PROTOCOLLNRPGM(MSG_FILE_SAVED); - } - } else { - process_commands(); - } - #else - process_commands(); - #endif //SDSUPPORT - if (! cmdbuffer_front_already_processed) - cmdqueue_pop_front(); - cmdbuffer_front_already_processed = false; + #ifdef SDSUPPORT + card.checkautostart(false); + #endif + if(buflen) + { + #ifdef SDSUPPORT + if(card.saving) + { + // Saving a G-code file onto an SD-card is in progress. + // Saving starts with M28, saving until M29 is seen. + if(strstr_P(CMDBUFFER_CURRENT_STRING, PSTR("M29")) == NULL) { + card.write_command(CMDBUFFER_CURRENT_STRING); + if(card.logging) + process_commands(); + else + SERIAL_PROTOCOLLNRPGM(MSG_OK); + } else { + card.closefile(); + SERIAL_PROTOCOLLNRPGM(MSG_FILE_SAVED); + } + } else { + process_commands(); + } + #else + process_commands(); + #endif //SDSUPPORT + if (! cmdbuffer_front_already_processed) + cmdqueue_pop_front(); + cmdbuffer_front_already_processed = false; host_keepalive(); - } -} - //check heater every n milliseconds - manage_heater(); - isPrintPaused ? manage_inactivity(true) : manage_inactivity(false); - checkHitEndstops(); - lcd_update(); + } + } + //check heater every n milliseconds + manage_heater(); + isPrintPaused ? manage_inactivity(true) : manage_inactivity(false); + checkHitEndstops(); + lcd_update(); } void proc_commands() { @@ -2646,10 +2641,10 @@ void process_commands() if( !(code_seen('X') || code_seen('Y') || code_seen('Z')) && code_seen('E')) { float echange=destination[E_AXIS]-current_position[E_AXIS]; - if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover + if((echange<-MIN_RETRACT && !retracted[active_extruder]) || (echange>MIN_RETRACT && retracted[active_extruder])) { //move appears to be an attempt to retract or recover current_position[E_AXIS] = destination[E_AXIS]; //hide the slicer-generated retract/recover from calculations plan_set_e_position(current_position[E_AXIS]); //AND from the planner - retract(!retracted); + retract(!retracted[active_extruder]); return; } @@ -3383,7 +3378,6 @@ void process_commands() int iy = 0; int XY_AXIS_FEEDRATE = homing_feedrate[X_AXIS] / 20; - int Z_PROBE_FEEDRATE = homing_feedrate[Z_AXIS] / 60; int Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 40; bool has_z = is_bed_z_jitter_data_valid(); //checks if we have data from Z calibration (offsets of the Z heiths of the 8 calibration points from the first point) if (verbosity_level >= 1) { @@ -4771,7 +4765,6 @@ Sigma_Exit: } } - float area = .0; if(code_seen('D')) { float diameter = (float)code_value(); if (diameter == 0.0) { @@ -5353,7 +5346,6 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } feedmultiplyBckp=feedmultiply; - int8_t TooLowZ = 0; target[X_AXIS]=current_position[X_AXIS]; target[Y_AXIS]=current_position[Y_AXIS]; @@ -5386,11 +5378,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp { #ifdef FILAMENTCHANGE_ZADD target[Z_AXIS]+= FILAMENTCHANGE_ZADD ; + // XXX: Removed unused var 'TooLowZ' if(target[Z_AXIS] < 10){ target[Z_AXIS]+= 10 ; - TooLowZ = 1; - }else{ - TooLowZ = 0; } #endif @@ -5842,6 +5832,14 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp SERIAL_ECHOLNRPGM(MSG_INVALID_EXTRUDER); } else { +#if EXTRUDERS == 1 + if (code_seen('F')) { + next_feedrate = code_value(); + if (next_feedrate > 0.0) { + feedrate = next_feedrate; + } + } +#else boolean make_move = false; if (code_seen('F')) { make_move = true; @@ -5850,7 +5848,6 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp feedrate = next_feedrate; } } -#if EXTRUDERS > 1 if (tmp_extruder != active_extruder) { // Save current position to return to after applying extruder offset memcpy(destination, current_position, sizeof(destination)); @@ -5964,7 +5961,7 @@ void ClearToSend() SERIAL_PROTOCOLLNRPGM(MSG_OK); } -update_currents() { +void update_currents() { float current_high[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD; float current_low[3] = DEFAULT_PWM_MOTOR_CURRENT; float tmp_motor[3]; @@ -6003,12 +6000,13 @@ update_currents() { void get_coordinates() { - bool seen[4]={false,false,false,false}; + // XXX: Unused var (set but not ref) + // bool seen[4]={false,false,false,false}; for(int8_t i=0; i < NUM_AXIS; i++) { if(code_seen(axis_codes[i])) { destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; - seen[i]=true; + // seen[i]=true; if (i == Z_AXIS && SilentModeMenu == 2) update_currents(); } else destination[i] = current_position[i]; //Are these else lines really needed? @@ -6683,7 +6681,6 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_ plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder); int XY_AXIS_FEEDRATE = homing_feedrate[X_AXIS] / 20; - int Z_PROBE_FEEDRATE = homing_feedrate[Z_AXIS] / 60; int Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 40; setup_for_endstop_move(false); @@ -6850,7 +6847,6 @@ void temp_compensation_start() { void temp_compensation_apply() { int i_add; - int compensation_value; int z_shift = 0; float z_shift_mm; @@ -6879,7 +6875,7 @@ float temp_comp_interpolation(float inp_temperature) { //cubic spline interpolation - int n, i, j, k; + int n, i, j; float h[10], a, b, c, d, sum, s[10] = { 0 }, x[10], F[10], f[10], m[10][10] = { 0 }, temp; int shift[10]; int temp_C[10]; diff --git a/Firmware/SdFatUtil.cpp b/Firmware/SdFatUtil.cpp index 371627f2d..2474b795e 100644 --- a/Firmware/SdFatUtil.cpp +++ b/Firmware/SdFatUtil.cpp @@ -46,7 +46,7 @@ int SdFatUtil::FreeRam() { void SdFatUtil::set_stack_guard() { - char i = 0; + //char i = 0; uint32_t *stack_guard; stack_guard = (uint32_t*)&__bss_end; diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 5a676c3b0..db7e9d509 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -61,7 +61,6 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters void CardReader::lsDive_pointer(const char *prepend, SdFile parent, const char * const match) { dir_t p; - uint8_t cnt = 0; //parent.seekSet = // Read the next entry from a directory @@ -73,17 +72,12 @@ void CardReader::lsDive_pointer(const char *prepend, SdFile parent, const char * //pom = parent.curPosition(); //MYSERIAL.println(pom, 10); - uint8_t pn0 = p.name[0]; + filenameIsDir = DIR_IS_SUBDIR(&p); - filenameIsDir = DIR_IS_SUBDIR(&p); + createFilename(filename, p); + creationDate = p.creationDate; + creationTime = p.creationTime; - - - - createFilename(filename, p); - creationDate = p.creationDate; - creationTime = p.creationTime; - } /** @@ -363,12 +357,12 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) if(name[0]=='/') { dirname_start=strchr(name,'/')+1; - while(dirname_start>0) + while(dirname_start) { dirname_end=strchr(dirname_start,'/'); //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name)); //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name)); - if(dirname_end>0 && dirname_end>dirname_start) + if(dirname_end && dirname_end>dirname_start) { char subdirname[13]; strncpy(subdirname, dirname_start, dirname_end-dirname_start); @@ -461,12 +455,12 @@ void CardReader::removeFile(char* name) if(name[0]=='/') { dirname_start=strchr(name,'/')+1; - while(dirname_start>0) + while(dirname_start) { dirname_end=strchr(dirname_start,'/'); //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name)); //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name)); - if(dirname_end>0 && dirname_end>dirname_start) + if(dirname_end && dirname_end>dirname_start) { char subdirname[13]; strncpy(subdirname, dirname_start, dirname_end-dirname_start); @@ -710,8 +704,7 @@ void CardReader::updir() { --workDirDepth; workDir = workDirParents[0]; - int d; - for (int d = 0; d < workDirDepth; d++) + for (uint8_t d = 0; d < workDirDepth; d++) workDirParents[d] = workDirParents[d+1]; } } diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 62faf1315..402cc2e43 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -15,7 +15,7 @@ #define LANG_ID_UNDEFINED 255 // Default language ID, if no language is selected. -#define LANG_ID_DEFAULT LANG_ID_CZ +#define LANG_ID_DEFAULT LANG_ID_EN // Number of languages available in the language table. #define LANG_NUM 6 diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index e4888819d..98bf918f8 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -1599,7 +1599,6 @@ inline void scan_bed_induction_sensor_point() float x1 = center_old_x + IMPROVE_BED_INDUCTION_SENSOR_POINT3_SEARCH_RADIUS; float y0 = center_old_y - IMPROVE_BED_INDUCTION_SENSOR_POINT3_SEARCH_RADIUS; float y1 = center_old_y + IMPROVE_BED_INDUCTION_SENSOR_POINT3_SEARCH_RADIUS; - float y = y0; if (x0 < X_MIN_POS) x0 = X_MIN_POS; @@ -2271,11 +2270,11 @@ bool sample_mesh_and_store_reference() { // Verify the span of the Z values. float zmin = mbl.z_values[0][0]; - float zmax = zmax; + float zmax = zmin; for (int8_t j = 0; j < 3; ++ j) for (int8_t i = 0; i < 3; ++ i) { zmin = min(zmin, mbl.z_values[j][i]); - zmax = min(zmax, mbl.z_values[j][i]); + zmax = max(zmax, mbl.z_values[j][i]); } if (zmax - zmin > 3.f) { // The span of the Z offsets is extreme. Give up. @@ -2446,7 +2445,7 @@ void babystep_reset() } void count_xyz_details() { - float a1, a2; + //float a1, a2; float cntr[2] = { eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 0)), eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER + 4)) @@ -2474,14 +2473,15 @@ void count_xyz_details() { SERIAL_ECHOPGM("Calibration status:"); MYSERIAL.println(int(calibration_status())); - a2 = -1 * asin(vec_y[0] / MACHINE_AXIS_SCALE_Y); -/* SERIAL_ECHOLNPGM("par:"); +/* a2 = -1 * asin(vec_y[0] / MACHINE_AXIS_SCALE_Y); + SERIAL_ECHOLNPGM("par:"); MYSERIAL.println(vec_y[0]); - MYSERIAL.println(a2);*/ + MYSERIAL.println(a2); a1 = asin(vec_x[1] / MACHINE_AXIS_SCALE_X); -/* MYSERIAL.println(vec_x[1]); - MYSERIAL.println(a1);*/ - //angleDiff = fabs(a2 - a1); + MYSERIAL.println(vec_x[1]); + MYSERIAL.println(a1); + angleDiff = fabs(a2 - a1); +*/ for (uint8_t mesh_point = 0; mesh_point < 3; ++mesh_point) { float y = vec_x[1] * pgm_read_float(bed_ref_points + mesh_point * 2) + vec_y[1] * pgm_read_float(bed_ref_points + mesh_point * 2 + 1) + cntr[1]; distance_from_min[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH); diff --git a/Firmware/pins.h b/Firmware/pins.h index 68375db79..cfd673397 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -3,20 +3,6 @@ #include "boards.h" -#if !MB(5DPRINT) -#define X_MS1_PIN -1 -#define X_MS2_PIN -1 -#define Y_MS1_PIN -1 -#define Y_MS2_PIN -1 -#define Z_MS1_PIN -1 -#define Z_MS2_PIN -1 -#define E0_MS1_PIN -1 -#define E0_MS2_PIN -1 -#define E1_MS1_PIN -1 -#define E1_MS2_PIN -1 -#define DIGIPOTSS_PIN -1 -#endif - #define LARGE_FLASH true /***************************************************************** @@ -38,22 +24,16 @@ #define X_STEP_PIN 37 #define X_DIR_PIN 48 - #define X_MIN_PIN 12 - #define X_MAX_PIN 30 #define X_ENABLE_PIN 29 #define X_MS1_PIN 40 #define X_MS2_PIN 41 #define Y_STEP_PIN 36 #define Y_DIR_PIN 49 - #define Y_MIN_PIN 11 - #define Y_MAX_PIN 24 #define Y_ENABLE_PIN 28 #define Y_MS1_PIN 69 #define Y_MS2_PIN 39 #define Z_STEP_PIN 35 #define Z_DIR_PIN 47 - #define Z_MIN_PIN 10 - #define Z_MAX_PIN 23 #define Z_ENABLE_PIN 27 #define Z_MS1_PIN 68 #define Z_MS2_PIN 67 @@ -63,6 +43,27 @@ #define TEMP_1_PIN 1 #define TEMP_2_PIN -1 +#ifndef DISABLE_MAX_ENDSTOPS + #define X_MAX_PIN 30 + #define Z_MAX_PIN 23 + #define Y_MAX_PIN 24 +#else + #define X_MAX_PIN -1 + #define Y_MAX_PIN -1 + #define Z_MAX_PIN -1 +#endif + +#ifndef DISABLE_MIN_ENDSTOPS + #define X_MIN_PIN 12 + #define Y_MIN_PIN 11 + #define Z_MIN_PIN 10 +#else + #define X_MIN_PIN -1 + #define Y_MIN_PIN -1 + #define Z_MIN_PIN -1 +#endif + + #ifdef SNMM #define E_MUX0_PIN 17 @@ -234,22 +235,16 @@ #define LARGE_FLASH true #define X_STEP_PIN 37 #define X_DIR_PIN 48 - #define X_MIN_PIN 12 - #define X_MAX_PIN 30 #define X_ENABLE_PIN 29 #define X_MS1_PIN 40 #define X_MS2_PIN 41 #define Y_STEP_PIN 36 #define Y_DIR_PIN 49 - #define Y_MIN_PIN 11 - #define Y_MAX_PIN 24 #define Y_ENABLE_PIN 28 #define Y_MS1_PIN 69 #define Y_MS2_PIN 39 #define Z_STEP_PIN 35 #define Z_DIR_PIN 47 - #define Z_MIN_PIN 10 - #define Z_MAX_PIN 23 #define Z_ENABLE_PIN 27 #define Z_MS1_PIN 68 #define Z_MS2_PIN 67 @@ -259,6 +254,26 @@ #define TEMP_1_PIN 1 #define TEMP_2_PIN -1 +#ifndef DISABLE_MAX_ENDSTOPS + #define X_MAX_PIN 30 + #define Z_MAX_PIN 23 + #define Y_MAX_PIN 24 +#else + #define X_MAX_PIN -1 + #define Y_MAX_PIN -1 + #define Z_MAX_PIN -1 +#endif + +#ifndef DISABLE_MIN_ENDSTOPS + #define X_MIN_PIN 12 + #define Y_MIN_PIN 11 + #define Z_MIN_PIN 10 +#else + #define X_MIN_PIN -1 + #define Y_MIN_PIN -1 + #define Z_MIN_PIN -1 +#endif + // The SDSS pin uses a different pin mapping from file Sd2PinMap.h #define SDSS 53 @@ -364,17 +379,6 @@ #endif #endif -#ifdef DISABLE_MAX_ENDSTOPS -#define X_MAX_PIN -1 -#define Y_MAX_PIN -1 -#define Z_MAX_PIN -1 -#endif - -#ifdef DISABLE_MIN_ENDSTOPS -#define X_MIN_PIN -1 -#define Y_MIN_PIN -1 -#define Z_MIN_PIN -1 -#endif #define SENSITIVE_PINS {0, 1, X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, PS_ON_PIN, \ HEATER_BED_PIN, FAN_PIN, \ diff --git a/Firmware/planner.cpp b/Firmware/planner.cpp index 2a6573fa9..d6d70fb4c 100644 --- a/Firmware/planner.cpp +++ b/Firmware/planner.cpp @@ -1029,16 +1029,20 @@ Having the real displacement of the head, we can calculate the total movement le // Acceleration of the segment, in mm/sec^2 block->acceleration = block->acceleration_st / steps_per_mm; -#if 1 +#if 0 // Oversample diagonal movements by a power of 2 up to 8x // to achieve more accurate diagonal movements. uint8_t bresenham_oversample = 1; for (uint8_t i = 0; i < 3; ++ i) { if (block->nominal_rate >= 5000) // 5kHz break; - block->nominal_rate << 1; - bresenham_oversample << 1; - block->step_event_count << 1; + // The following statements in their original form did nothing (missing =). + // In effect, this entire block under the conditional was doing nothing. + // Adding the syntax correction did not produce good movement results therefore + // it has been disabled (above) + block->nominal_rate <<= 1; + bresenham_oversample <<= 1; + block->step_event_count <<= 1; } if (bresenham_oversample > 1) // Lower the acceleration steps/sec^2 to account for the oversampling. diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 53bc7f5a5..0f3f65aaa 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -74,11 +74,18 @@ bool abort_on_endstop_hit = false; #endif static bool old_x_min_endstop=false; -static bool old_x_max_endstop=false; static bool old_y_min_endstop=false; -static bool old_y_max_endstop=false; static bool old_z_min_endstop=false; + +#if defined(X_MAX_PIN) && (X_MAX_PIN > -1) +static bool old_x_max_endstop=false; +#endif +#if defined(Y_MAX_PIN) && (Y_MAX_PIN > -1) +static bool old_y_max_endstop=false; +#endif +#if defined(Z_MAX_PIN) && (Z_MAX_PIN > -1) static bool old_z_max_endstop=false; +#endif static bool check_endstops = true; static bool check_z_endstop = false; @@ -1066,9 +1073,7 @@ void babystep(const uint8_t axis,const bool direction) //perform step WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); - { - volatile float x=1./float(axis+1)/float(axis+2); //wait a tiny bit - } + delayMicroseconds(3); WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); //get old pin state back. @@ -1085,9 +1090,7 @@ void babystep(const uint8_t axis,const bool direction) //perform step WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); - { - volatile float x=1./float(axis+1)/float(axis+2); //wait a tiny bit - } + delayMicroseconds(3); WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); //get old pin state back. @@ -1109,11 +1112,11 @@ void babystep(const uint8_t axis,const bool direction) WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); #ifdef Z_DUAL_STEPPER_DRIVERS WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN); + delayMicroseconds(2); + #else + delayMicroseconds(3); #endif - //wait a tiny bit - { - volatile float x=1./float(axis+1); //absolutely useless - } + WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); #ifdef Z_DUAL_STEPPER_DRIVERS WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN); diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 2d9c815e7..7c2037d03 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -182,6 +182,14 @@ unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0); #ifdef FILAMENT_SENSOR static int meas_shift_index; //used to point to a delayed sample in buffer for filament width sensor #endif + +#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0) +static float temp_runaway_status[4]; +static float temp_runaway_target[4]; +static float temp_runaway_timer[4]; +static int temp_runaway_error_counter[4]; +#endif + //=========================================================================== //============================= functions ============================ //=========================================================================== @@ -1417,7 +1425,9 @@ ISR(TIMER0_COMPB_vect) static unsigned char temp_count = 0; static unsigned long raw_temp_0_value = 0; static unsigned long raw_temp_1_value = 0; +#if defined(TEMP_2_PIN) && (TEMP_2_PIN > -1) static unsigned long raw_temp_2_value = 0; +#endif static unsigned long raw_temp_bed_value = 0; static unsigned char temp_state = 10; static unsigned char pwm_count = (1 << SOFT_PWM_SCALE); @@ -1857,7 +1867,7 @@ ISR(TIMER0_COMPB_vect) #ifdef TEMP_SENSOR_1_AS_REDUNDANT redundant_temperature_raw = raw_temp_1_value; #endif -#if EXTRUDERS > 2 +#if (EXTRUDERS > 2) && defined(TEMP_2_PIN) && (TEMP_2_PIN > -1) current_temperature_raw[2] = raw_temp_2_value; #endif current_temperature_bed_raw = raw_temp_bed_value; @@ -1873,7 +1883,9 @@ ISR(TIMER0_COMPB_vect) temp_count = 0; raw_temp_0_value = 0; raw_temp_1_value = 0; +#if defined(TEMP_2_PIN) && (TEMP_2_PIN > -1) raw_temp_2_value = 0; +#endif raw_temp_bed_value = 0; #if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP diff --git a/Firmware/temperature.h b/Firmware/temperature.h index 4daae539d..5e80a0b39 100644 --- a/Firmware/temperature.h +++ b/Firmware/temperature.h @@ -176,11 +176,6 @@ FORCE_INLINE bool isCoolingBed() { #endif #if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0) -static float temp_runaway_status[4]; -static float temp_runaway_target[4]; -static float temp_runaway_timer[4]; -static int temp_runaway_error_counter[4]; - void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed); void temp_runaway_stop(bool isPreheat, bool isBed); #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 570baf481..dc97c03d1 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -82,7 +82,7 @@ union MenuData // State of the currently active menu. // C Union manages sharing of the static memory by all the menus. -union MenuData menuData = { 0 }; +union MenuData menuData; union Data { @@ -111,7 +111,7 @@ uint8_t farm_mode = 0; int farm_no = 0; int farm_timer = 8; int farm_status = 0; -unsigned long allert_timer = millis(); +unsigned long alert_timer = millis(); bool printer_connected = true; unsigned long display_time; //just timer for showing pid finished message on lcd; @@ -119,7 +119,7 @@ float pid_temp = DEFAULT_PID_TEMP; bool long_press_active = false; long long_press_timer = millis(); -long button_blanking_time = millis(); +unsigned long button_blanking_time = millis(); bool button_pressed = false; bool menuExiting = false; @@ -139,6 +139,7 @@ char lcd_status_message[LCD_WIDTH + 1] = ""; //////WELCOME! unsigned char firstrun = 1; #ifdef DOGLCD +static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD #include "dogm_lcd_implementation.h" #else #include "ultralcd_implementation_hitachi_HD44780.h" @@ -155,16 +156,39 @@ static void lcd_status_screen(); extern bool powersupply; static void lcd_main_menu(); static void lcd_tune_menu(); -static void lcd_prepare_menu(); -static void lcd_move_menu(); static void lcd_settings_menu(); static void lcd_calibration_menu(); static void lcd_language_menu(); + static void lcd_control_temperature_menu(); -static void lcd_control_temperature_preheat_pla_settings_menu(); -static void lcd_control_temperature_preheat_abs_settings_menu(); -static void lcd_control_motion_menu(); -static void lcd_control_volumetric_menu(); + +static void lcd_babystep_z(); + +static bool lcd_selftest(); +static void lcd_selftest_v(); +static bool lcd_selfcheck_pulleys(int axis); +static bool lcd_selfcheck_endstops(); +static bool lcd_selfcheck_axis(int _axis, int _travel); +static bool lcd_selfcheck_check_heater(bool _isbed); +static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); +static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); +static bool lcd_selftest_fan_dialog(int _fan); +static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); + +static void lcd_colorprint_change(); +#ifdef SNMM +static void extr_adj_0(); +static void extr_adj_1(); +static void extr_adj_2(); +static void extr_adj_3(); +static void fil_load_menu(); +static void fil_unload_menu(); +static void extr_unload_0(); +static void extr_unload_1(); +static void extr_unload_2(); +static void extr_unload_3(); +#endif +static void lcd_disable_farm_mode(); static void prusa_stat_printerstatus(int _status); static void prusa_stat_farm_number(); @@ -172,10 +196,16 @@ static void prusa_stat_temperatures(); static void prusa_stat_printinfo(); static void lcd_farm_no(); +static void lcd_send_status(); +static void lcd_connect_printer(); + +static char snmm_stop_print_menu(); + +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); + #ifdef DOGLCD static void lcd_set_contrast(); #endif -static void lcd_control_retract_menu(); static void lcd_sdcard_menu(); #ifdef DELTA_CALIBRATION_MENU @@ -193,8 +223,9 @@ static void menu_action_function(menuFunc_t data); static void menu_action_setlang(unsigned char lang); static void menu_action_sdfile(const char* filename, char* longFilename); static void menu_action_sddirectory(const char* filename, char* longFilename); -static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); +#if 0 +static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float32(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float43(const char* pstr, float* ptr, float minValue, float maxValue); @@ -202,8 +233,9 @@ static void menu_action_setting_edit_float5(const char* pstr, float* ptr, float static void menu_action_setting_edit_float51(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float52(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue); +#endif -/* +#if 0 static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float3(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); @@ -213,7 +245,7 @@ static void menu_action_setting_edit_callback_float5(const char* pstr, float* pt static void menu_action_setting_edit_callback_float51(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float52(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue, menuFunc_t callbackFunc); -*/ +#endif #define ENCODER_FEEDRATE_DEADZONE 10 @@ -521,7 +553,6 @@ static void lcd_status_screen() void lcd_commands() { - char cmd1[25]; if (lcd_commands_type == LCD_COMMAND_LONG_PAUSE) { if(lcd_commands_step == 0) { @@ -1099,8 +1130,6 @@ void lcd_commands() if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print { - uint8_t stopped_extruder; - if (lcd_commands_step == 0) { lcd_commands_step = 6; @@ -2003,12 +2032,14 @@ static void _lcd_babystep(int axis, const char *msg) if (LCD_CLICKED) lcd_goto_menu(lcd_main_menu); } +#if 0 static void lcd_babystep_x() { _lcd_babystep(X_AXIS, (MSG_BABYSTEPPING_X)); } static void lcd_babystep_y() { _lcd_babystep(Y_AXIS, (MSG_BABYSTEPPING_Y)); } +#endif static void lcd_babystep_z() { _lcd_babystep(Z_AXIS, (MSG_BABYSTEPPING_Z)); } @@ -2226,7 +2257,6 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) // Until confirmed by the confirmation dialog. for (;;) { - unsigned long previous_millis_cmd = millis(); const char *msg = only_z ? MSG_MOVE_CARRIAGE_TO_THE_TOP_Z : MSG_MOVE_CARRIAGE_TO_THE_TOP; const char *msg_next = lcd_display_message_fullscreen_P(msg); const bool multi_screen = msg_next != NULL; @@ -2235,13 +2265,10 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z) encoderDiff = 0; encoderPosition = 0; for (;;) { -// if (millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) -// goto canceled; manage_heater(); manage_inactivity(true); if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { delay(50); - previous_millis_cmd = millis(); encoderPosition += abs(encoderDiff / ENCODER_PULSES_PER_STEP); encoderDiff = 0; if (! planner_queue_full()) { @@ -2567,7 +2594,7 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui else if (point_too_far_mask == 2 || point_too_far_mask == 7) // Only the center point or all the three front points. msg = MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR; - else if (point_too_far_mask & 1 == 0) + else if ((point_too_far_mask & 1) == 0) // The right and maybe the center point out of reach. msg = MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR; else @@ -2579,7 +2606,7 @@ void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, ui if (point_too_far_mask == 2 || point_too_far_mask == 7) // Only the center point or all the three front points. msg = MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR; - else if (point_too_far_mask & 1 == 0) + else if ((point_too_far_mask & 1) == 0) // The right and maybe the center point out of reach. msg = MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR; else @@ -2612,11 +2639,11 @@ static void lcd_show_end_stops() { lcd.setCursor(0, 0); lcd_printPGM((PSTR("End stops diag"))); lcd.setCursor(0, 1); - lcd_printPGM((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? (PSTR("X1")) : (PSTR("X0"))); + lcd_printPGM(((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ? (PSTR("X1")) : (PSTR("X0"))); lcd.setCursor(0, 2); - lcd_printPGM((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? (PSTR("Y1")) : (PSTR("Y0"))); + lcd_printPGM(((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) ? (PSTR("Y1")) : (PSTR("Y0"))); lcd.setCursor(0, 3); - lcd_printPGM((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) ? (PSTR("Z1")) : (PSTR("Z0"))); + lcd_printPGM(((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) ? (PSTR("Z1")) : (PSTR("Z0"))); } static void menu_show_end_stops() { @@ -2629,7 +2656,6 @@ static void menu_show_end_stops() { // Otherwise the Z calibration is not changed and false is returned. void lcd_diag_show_end_stops() { - int enc_dif = encoderDiff; lcd_implementation_clear(); for (;;) { manage_heater(); @@ -3475,7 +3501,7 @@ static void lcd_calibration_menu() if (!isPrintPaused) { MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 W")); - MENU_ITEM(function, MSG_SELFTEST, lcd_selftest); + MENU_ITEM(function, MSG_SELFTEST, lcd_selftest_v); #ifdef MK1BP // MK1 // "Calibrate Z" @@ -3511,49 +3537,6 @@ static void lcd_calibration_menu() END_MENU(); } -/* -void lcd_mylang_top(int hlaska) { - lcd.setCursor(0,0); - lcd.print(" "); - lcd.setCursor(0,0); - lcd_printPGM(MSG_ALL[hlaska-1][LANGUAGE_SELECT]); -} - -void lcd_mylang_drawmenu(int cursor) { - int first = 0; - if (cursor>2) first = cursor-2; - if (cursor==LANG_NUM) first = LANG_NUM-3; - lcd.setCursor(0, 1); - lcd.print(" "); - lcd.setCursor(1, 1); - lcd_printPGM(MSG_ALL[first][LANGUAGE_NAME]); - - lcd.setCursor(0, 2); - lcd.print(" "); - lcd.setCursor(1, 2); - lcd_printPGM(MSG_ALL[first+1][LANGUAGE_NAME]); - - lcd.setCursor(0, 3); - lcd.print(" "); - lcd.setCursor(1, 3); - lcd_printPGM(MSG_ALL[first+2][LANGUAGE_NAME]); - - if (cursor==1) lcd.setCursor(0, 1); - if (cursor>1 && cursor"); - - if (cursor2) { - lcd.setCursor(19,1); - lcd.print("^"); - } -} -*/ void lcd_mylang_drawmenu(int cursor) { int first = 0; @@ -3618,13 +3601,10 @@ void lcd_mylang() { int enc_dif = 0; int cursor_pos = 1; lang_selected=255; - int hlaska=1; - int counter=0; lcd_set_custom_characters_arrows(); lcd_implementation_clear(); - //lcd_mylang_top(hlaska); lcd_mylang_drawmenu(cursor_pos); @@ -3638,7 +3618,6 @@ void lcd_mylang() { if ( abs((enc_dif - encoderDiff)) > 4 ) { - //if ( (abs(enc_dif - encoderDiff)) > 1 ) { if (enc_dif > encoderDiff ) { cursor_pos --; } @@ -3658,7 +3637,6 @@ void lcd_mylang() { lcd_mylang_drawmenu(cursor_pos); enc_dif = encoderDiff; delay(100); - //} } else delay(20); @@ -3669,16 +3647,7 @@ void lcd_mylang() { delay(500); } - /* - if (++counter == 80) { - hlaska++; - if(hlaska>LANG_NUM) hlaska=1; - lcd_mylang_top(hlaska); - lcd_mylang_drawcursor(cursor_pos); - counter=0; - } - */ - }; + } if(MYSERIAL.available() > 1){ lang_selected = 0; @@ -4043,9 +4012,10 @@ static void lcd_disable_farm_mode() { } -static void lcd_ping_allert() { - if ((abs(millis() - allert_timer)*0.001) > PING_ALLERT_PERIOD) { - allert_timer = millis(); +#if 0 +static void lcd_ping_alert() { + if ((abs(millis() - alert_timer)*0.001) > PING_ALERT_PERIOD) { + alert_timer = millis(); SET_OUTPUT(BEEPER); for (int i = 0; i < 2; i++) { WRITE(BEEPER, HIGH); @@ -4056,7 +4026,7 @@ static void lcd_ping_allert() { } }; - +#endif #ifdef SNMM @@ -4076,9 +4046,7 @@ void change_extr(int extr) { //switches multiplexer for extruders disable_e1(); disable_e2(); -#ifdef SNMM snmm_extruder = extr; -#endif pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); @@ -4106,7 +4074,7 @@ void change_extr(int extr) { //switches multiplexer for extruders delay(100); } -static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) +int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } @@ -4122,10 +4090,10 @@ void display_loading() { void extr_adj(int extruder) //loading filament for SNMM { - bool correct; + //bool correct; max_feedrate[E_AXIS] =80; //max_feedrate[E_AXIS] = 50; - START: + //START: lcd_implementation_clear(); lcd.setCursor(0, 0); switch (extruder) { @@ -4625,8 +4593,6 @@ static void lcd_main_menu() MENU_ITEM(back, MSG_WATCH, lcd_status_screen); /* if (farm_mode && !IS_SD_PRINTING ) { - - int tempScrool = 0; if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) //delay(100); return; // nothing to do (so don't thrash the SD card) @@ -4765,15 +4731,14 @@ void stack_error() { while (1) delay_keep_alive(1000); } -#ifdef SDSUPPORT +#if 0 +//#ifdef SDSUPPORT static void lcd_autostart_sd() { card.lastnr = 0; card.setroot(); card.checkautostart(true); } -#endif - static void lcd_silent_mode_set_tune() { @@ -4787,6 +4752,7 @@ static void lcd_silent_mode_set_tune() { digipot_init(); lcd_goto_menu(lcd_tune_menu, 9); } +#endif static void lcd_colorprint_change() { @@ -4830,13 +4796,13 @@ static void lcd_tune_menu() } - - +#if 0 static void lcd_move_menu_01mm() { move_menu_scale = 0.1; lcd_move_menu_axis(); } +#endif static void lcd_control_temperature_menu() { @@ -4982,7 +4948,6 @@ void lcd_sdcard_menu() { uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT); - int tempScrool = 0; if (presort_flag == true) { presort_flag = false; card.presort(); @@ -5037,7 +5002,6 @@ void lcd_sdcard_menu() } //int j; //char description[31]; - int tempScrool = 0; if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) //delay(100); return; // nothing to do (so don't thrash the SD card) @@ -5132,13 +5096,22 @@ void lcd_sdcard_menu() */ menu_edit_type(int, int3, itostr3, 1) +#if defined(AUTOTEMP) menu_edit_type(float, float3, ftostr3, 1) menu_edit_type(float, float32, ftostr32, 100) +#endif +#if 0 menu_edit_type(float, float43, ftostr43, 1000) menu_edit_type(float, float5, ftostr5, 0.01) menu_edit_type(float, float51, ftostr51, 10) menu_edit_type(float, float52, ftostr52, 100) menu_edit_type(unsigned long, long5, ftostr5, 0.01) +#endif + +static void lcd_selftest_v() +{ + (void)lcd_selftest(); +} static bool lcd_selftest() { @@ -5254,24 +5227,26 @@ static bool lcd_selfcheck_axis(int _axis, int _travel) plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); st_synchronize(); - if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1 || READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1 || READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) + if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1)) { if (_axis == 0) { - _stepresult = (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? true : false; - _err_endstop = (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? 1 : 2; + _stepresult = ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ? true : false; + _err_endstop = ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) ? 1 : 2; } if (_axis == 1) { - _stepresult = (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? true : false; - _err_endstop = (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? 0 : 2; + _stepresult = ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) ? true : false; + _err_endstop = ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ? 0 : 2; } if (_axis == 2) { - _stepresult = (READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) ? true : false; - _err_endstop = (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? 0 : 1; + _stepresult = ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) ? true : false; + _err_endstop = ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ? 0 : 1; /*disable_x(); disable_y(); disable_z();*/ @@ -5334,7 +5309,6 @@ static bool lcd_selfcheck_pulleys(int axis) float current_position_init; float move; bool endstop_triggered = false; - bool result = true; int i; unsigned long timeout_counter; refresh_cmd_timeout(); @@ -5358,7 +5332,8 @@ static bool lcd_selfcheck_pulleys(int axis) current_position[axis] = current_position[axis] - move; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder); st_synchronize(); - if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) || (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1)) { + if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) { lcd_selftest_error(8, (axis == 0) ? "X" : "Y", ""); return(false); } @@ -5367,7 +5342,8 @@ static bool lcd_selfcheck_pulleys(int axis) endstop_triggered = false; manage_inactivity(true); while (!endstop_triggered) { - if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) || (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1)) { + if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) { endstop_triggered = true; if (current_position_init - 1 <= current_position[axis] && current_position_init + 1 >= current_position[axis]) { current_position[axis] += 15; @@ -5390,28 +5366,33 @@ static bool lcd_selfcheck_pulleys(int axis) } } } + return(true); } static bool lcd_selfcheck_endstops() { bool _result = true; - if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1 || READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1 || READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) + if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1)) { - current_position[0] = (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? current_position[0] = current_position[0] + 10 : current_position[0]; - current_position[1] = (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? current_position[1] = current_position[1] + 10 : current_position[1]; - current_position[2] = (READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) ? current_position[2] = current_position[2] + 10 : current_position[2]; + if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) current_position[0] += 10; + if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) current_position[1] += 10; + if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) current_position[2] += 10; } plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[0] / 60, active_extruder); delay(500); - if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1 || READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1 || READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) + if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) || + ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1)) { _result = false; char _error[4] = ""; - if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) strcat(_error, "X"); - if (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) strcat(_error, "Y"); - if (READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) strcat(_error, "Z"); + if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "X"); + if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "Y"); + if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "Z"); lcd_selftest_error(3, _error, ""); } manage_heater(); @@ -5666,8 +5647,7 @@ static bool lcd_selftest_fan_dialog(int _fan) if (!_result) { - const char *_err; - lcd_selftest_error(_errno, _err, _err); + lcd_selftest_error(_errno, "", ""); } return _result; @@ -5677,7 +5657,7 @@ static bool lcd_selftest_fan_dialog(int _fan) static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay) { - lcd_next_update_millis = millis() + (LCD_UPDATE_INTERVAL * 10000); + lcd_next_update_millis = millis() + (LCD_UPDATE_INTERVAL * 10000L); int _step_block = 0; const char *_indicator = (_progress > _progress_scale) ? "-" : "|"; @@ -5778,7 +5758,7 @@ static void menu_action_function(menuFunc_t data) { static bool check_file(const char* filename) { bool result = false; uint32_t filesize; - card.openFile(filename, true); + card.openFile((char *)filename, true); filesize = card.getFileSize(); if (filesize > END_FILE_SECTION) { card.setIndex(filesize - END_FILE_SECTION); @@ -5818,17 +5798,18 @@ static void menu_action_sddirectory(const char* filename, char* longFilename) card.chdir(filename); encoderPosition = 0; } +#if 0 static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) { *ptr = !(*ptr); } -/* + static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback) { menu_action_setting_edit_bool(pstr, ptr); (*callback)(); } -*/ +#endif #endif//ULTIPANEL /** LCD API **/ @@ -6066,7 +6047,6 @@ static void lcd_connect_printer() { lcd_update_enable(false); lcd_implementation_clear(); - bool pressed = false; int i = 0; int t = 0; lcd_set_custom_characters_progress(); @@ -6103,7 +6083,7 @@ void lcd_ping() { //chceck if printer is connected to monitoring when in farm mo //if there are comamnds in buffer, some long gcodes can delay execution of ping command //therefore longer period is used printer_connected = false; - //lcd_ping_allert(); //acustic signals + //lcd_ping_alert(); //acustic signals } else { lcd_printer_connected(); @@ -6632,4 +6612,4 @@ void copy_and_scalePID_d() } */ -#endif //ULTRA_LCD \ No newline at end of file +#endif //ULTRA_LCD diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 8aad71932..511ba6ae1 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -29,20 +29,11 @@ void prusa_statistics(int _message, uint8_t _col_nr = 0); void lcd_confirm_print(); unsigned char lcd_choose_color(); -void lcd_mylang(); + void lcd_mylang(); bool lcd_detected(void); - static bool lcd_selftest(); - static bool lcd_selfcheck_endstops(); - static bool lcd_selfcheck_axis(int _axis, int _travel); - static bool lcd_selfcheck_check_heater(bool _isbed); - static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); - static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); - static bool lcd_selftest_fan_dialog(int _fan); - static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); void lcd_menu_statistics(); - static bool lcd_selfcheck_pulleys(int axis); extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); @@ -67,8 +58,6 @@ void lcd_mylang(); void lcd_setcontrast(uint8_t value); #endif - static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD - #define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x)) #define LCD_ALERTMESSAGEPGM(x) lcd_setalertstatuspgm(PSTR(x)) #define LCD_MESSAGERPGM(x) lcd_setstatuspgm((x)) @@ -212,31 +201,12 @@ extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str); void change_extr(int extr); -static void lcd_colorprint_change(); -static int get_ext_nr(); +int get_ext_nr(); void extr_adj(int extruder); -static void extr_adj_0(); -static void extr_adj_1(); -static void extr_adj_2(); -static void extr_adj_3(); -static void fil_load_menu(); -static void fil_unload_menu(); -static void extr_unload_0(); -static void extr_unload_1(); -static void extr_unload_2(); -static void extr_unload_3(); -static void lcd_disable_farm_mode(); void extr_unload_all(); void extr_unload_used(); void extr_unload(); -static char snmm_stop_print_menu(); -static void lcd_babystep_z(); -#ifdef SDCARD_SORT_ALPHA -static void lcd_sort_type_set(); -#endif -static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); void stack_error(); -static void lcd_ping_allert(); void lcd_printer_connected(); void lcd_ping(); @@ -271,10 +241,7 @@ void lcd_set_degree(); void lcd_set_progress(); #endif -static void lcd_send_status(); -static void lcd_connect_printer(); - void lcd_wizard(); void lcd_wizard(int state); -#endif //ULTRALCD_H \ No newline at end of file +#endif //ULTRALCD_H diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index 4f91947cc..9a28c6f2c 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -360,6 +360,7 @@ static void lcd_set_custom_characters( B00000 }; //thanks Sonny Mounicou +#if 0 // Unused byte arrup[8] = { B00100, B01110, @@ -381,6 +382,7 @@ static void lcd_set_custom_characters( B01010, B00100 }; +#endif #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) @@ -603,16 +605,15 @@ static void lcd_implementation_init_noclear( } -static void lcd_implementation_nodisplay() +inline void lcd_implementation_nodisplay() { lcd.noDisplay(); } -static void lcd_implementation_display() +inline void lcd_implementation_display() { lcd.display(); } - -void lcd_implementation_clear() +inline void lcd_implementation_clear() { lcd.clear(); } @@ -901,7 +902,7 @@ static void lcd_implementation_status_screen() lcd.setCursor(7, 3); lcd_printPGM(PSTR(" ")); - for (int dots = 0; dots < heating_status_counter; dots++) + for (uint16_t dots = 0; dots < heating_status_counter; dots++) { lcd.setCursor(7 + dots, 3); lcd.print('.'); @@ -1103,6 +1104,7 @@ static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const lcd.print(' '); lcd.print(data); } +#if 0 static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, const char* pstr, char pre_char, const char* data) { char c; @@ -1125,6 +1127,7 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons lcd.print(' '); lcd_printPGM(data); } +#endif #define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) @@ -1229,8 +1232,8 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* if(LCD_CLICKED || ( enc_dif != encoderDiff )){ longFilenameTMP = longFilename; *(longFilenameTMP + LCD_WIDTH - 2) = '\0'; - int i = 1; - int j = 0; + i = 1; + j = 0; break; }else{ if (j == 1) delay(3); //wait around 1.2 s to start scrolling text diff --git a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h index f0157dfe4..8b18e5a77 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h @@ -392,7 +392,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s diff --git a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h index 03c99f601..28d3a1d6c 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h @@ -392,7 +392,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h index b7475feaf..6be324ae1 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h @@ -387,7 +387,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h index 4985099a8..42fa832c3 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h @@ -389,7 +389,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index 381a0b637..8779b7578 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -387,7 +387,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index bfa787d51..39b9ceace 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -389,7 +389,7 @@ THERMISTORS SETTINGS #define PING_TIME 60 //time in s #define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s +#define PING_ALERT_PERIOD 60 //time in s #define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring #define NC_BUTTON_LONG_PRESS 15 //time in s