From 1c7a280fafb8af73f911654d021ad61708a1bb5f Mon Sep 17 00:00:00 2001 From: MRprusa3d Date: Mon, 8 Apr 2019 21:57:41 +0200 Subject: [PATCH 1/3] Sound @ MK2 step 1 --- Firmware/Configuration.h | 52 +---- Firmware/Marlin_main.cpp | 9 +- Firmware/eeprom.h | 182 ++++++++++++++++++ Firmware/language_all.cpp | 50 +++-- Firmware/language_all.h | 8 + Firmware/language_en.h | 15 +- Firmware/sound.cpp | 105 ++++++++++ Firmware/sound.h | 28 +++ Firmware/ultralcd.cpp | 25 +++ .../ultralcd_implementation_hitachi_HD44780.h | 5 + 10 files changed, 410 insertions(+), 69 deletions(-) create mode 100644 Firmware/eeprom.h create mode 100644 Firmware/sound.cpp create mode 100644 Firmware/sound.h diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index b363912ae..7e5f2c719 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -9,58 +9,8 @@ #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 -// The total size of the EEPROM is -// 4096 for the Atmega2560 -#define EEPROM_TOP 4096 -#define EEPROM_SILENT 4095 -#define EEPROM_LANG 4094 -#define EEPROM_BABYSTEP_X 4092 -#define EEPROM_BABYSTEP_Y 4090 -#define EEPROM_BABYSTEP_Z 4088 -#define EEPROM_CALIBRATION_STATUS 4087 -#define EEPROM_BABYSTEP_Z0 4085 -#define EEPROM_FILAMENTUSED 4081 -// uint32_t -#define EEPROM_TOTALTIME 4077 - -#define EEPROM_BED_CALIBRATION_CENTER (EEPROM_TOTALTIME-2*4) -#define EEPROM_BED_CALIBRATION_VEC_X (EEPROM_BED_CALIBRATION_CENTER-2*4) -#define EEPROM_BED_CALIBRATION_VEC_Y (EEPROM_BED_CALIBRATION_VEC_X-2*4) - -// Offsets of the Z heiths of the calibration points from the first point. -// The offsets are saved as 16bit signed int, scaled to tenths of microns. -#define EEPROM_BED_CALIBRATION_Z_JITTER (EEPROM_BED_CALIBRATION_VEC_Y-2*8) -#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1) -#define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3) - -// Correction of the bed leveling, in micrometers. -// Maximum 50 micrometers allowed. -// Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid. -#define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_NUMBER-1) -#define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1) -#define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1) -#define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1) -#define EEPROM_BED_CORRECTION_REAR (EEPROM_BED_CORRECTION_FRONT-1) -#define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1) -#define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1) -#define EEPROM_PROBE_TEMP_SHIFT (EEPROM_PRINT_FLAG - 2*5) //5 x int for storing pinda probe temp shift relative to 50 C; unit: motor steps -#define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1) -#define EEPROM_BOWDEN_LENGTH (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int for bowden lengths for multimaterial -#define EEPROM_CALIBRATION_STATUS_PINDA (EEPROM_BOWDEN_LENGTH - 1) //0 - not calibrated; 1 - calibrated -#define EEPROM_SD_SORT (EEPROM_CALIBRATION_STATUS_PINDA - 1) //0 -time, 1-alpha, 2-none -#define EEPROM_XYZ_CAL_SKEW (EEPROM_SD_SORT - 4) -#define EEPROM_WIZARD_ACTIVE (EEPROM_XYZ_CAL_SKEW - 1) - -// Currently running firmware, each digit stored as uint16_t. -// The flavor differentiates a dev, alpha, beta, release candidate or a release version. -#define EEPROM_FIRMWARE_VERSION_END (FW_PRUSA3D_MAGIC_LEN+8) -#define EEPROM_FIRMWARE_VERSION_FLAVOR (FW_PRUSA3D_MAGIC_LEN+6) -#define EEPROM_FIRMWARE_VERSION_REVISION (FW_PRUSA3D_MAGIC_LEN+4) -#define EEPROM_FIRMWARE_VERSION_MINOR (FW_PRUSA3D_MAGIC_LEN+2) -#define EEPROM_FIRMWARE_VERSION_MAJOR FW_PRUSA3D_MAGIC_LEN -// Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware. -#define EEPROM_FIRMWARE_PRUSA_MAGIC 0 +#include "eeprom.h" // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 32e1d34e1..b43a8f937 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -78,6 +78,7 @@ #include "ultralcd.h" +#include "sound.h" // Macros for bit masks #define BIT(b) (1<<(b)) @@ -1021,6 +1022,7 @@ void factory_reset(char level, bool quiet) void setup() { lcd_init(); + Sound_Init(); lcd_print_at_PGM(0, 1, PSTR(" Original Prusa ")); lcd_print_at_PGM(0, 2, PSTR(" 3D Printers ")); setup_killpin(); @@ -5476,6 +5478,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp lcd_wait_interact(); load_filament_time = millis(); KEEPALIVE_STATE(PAUSED_FOR_USER); + bool bFirst=true; while(!lcd_clicked()){ cnt++; @@ -5496,7 +5499,11 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } SET_OUTPUT(BEEPER); if (counterBeep== 0){ - WRITE(BEEPER,HIGH); + if((eSoundMode==e_SOUND_MODE_LOUD)||((eSoundMode==e_SOUND_MODE_ONCE)&&bFirst)) + { + bFirst=false; + WRITE(BEEPER, HIGH); + } } if (counterBeep== 20){ WRITE(BEEPER,LOW); diff --git a/Firmware/eeprom.h b/Firmware/eeprom.h new file mode 100644 index 000000000..f6af7037e --- /dev/null +++ b/Firmware/eeprom.h @@ -0,0 +1,182 @@ +#ifndef EEPROM_H +#define EEPROM_H + +// The total size of the EEPROM is +// 4096 for the Atmega2560 +#define EEPROM_TOP 4096 +#define EEPROM_SILENT 4095 +#define EEPROM_LANG 4094 +#define EEPROM_BABYSTEP_X 4092 +#define EEPROM_BABYSTEP_Y 4090 +#define EEPROM_BABYSTEP_Z 4088 +#define EEPROM_CALIBRATION_STATUS 4087 +#define EEPROM_BABYSTEP_Z0 4085 +#define EEPROM_FILAMENTUSED 4081 +// uint32_t +#define EEPROM_TOTALTIME 4077 + +#define EEPROM_BED_CALIBRATION_CENTER (EEPROM_TOTALTIME-2*4) +#define EEPROM_BED_CALIBRATION_VEC_X (EEPROM_BED_CALIBRATION_CENTER-2*4) +#define EEPROM_BED_CALIBRATION_VEC_Y (EEPROM_BED_CALIBRATION_VEC_X-2*4) + +// Offsets of the Z heiths of the calibration points from the first point. +// The offsets are saved as 16bit signed int, scaled to tenths of microns. +#define EEPROM_BED_CALIBRATION_Z_JITTER (EEPROM_BED_CALIBRATION_VEC_Y-2*8) +#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1) +#define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3) + +// Correction of the bed leveling, in micrometers. +// Maximum 50 micrometers allowed. +// Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid. +#define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_NUMBER-1) +#define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1) +#define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1) +#define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1) +#define EEPROM_BED_CORRECTION_REAR (EEPROM_BED_CORRECTION_FRONT-1) +#define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1) +#define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1) +#define EEPROM_PROBE_TEMP_SHIFT (EEPROM_PRINT_FLAG - 2*5) //5 x int for storing pinda probe temp shift relative to 50 C; unit: motor steps +#define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1) +#define EEPROM_BOWDEN_LENGTH (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int for bowden lengths for multimaterial +#define EEPROM_CALIBRATION_STATUS_PINDA (EEPROM_BOWDEN_LENGTH - 1) //0 - not calibrated; 1 - calibrated +#define EEPROM_UVLO (EEPROM_CALIBRATION_STATUS_PINDA - 1) //1 - uvlo during print +#define EEPROM_UVLO_CURRENT_POSITION (EEPROM_UVLO-2*4) // 2 x float for current_position in X and Y axes +#define EEPROM_FILENAME (EEPROM_UVLO_CURRENT_POSITION - 8) //8chars to store filename without extension +#define EEPROM_FILE_POSITION (EEPROM_FILENAME - 4) //32 bit for uint32_t file position +#define EEPROM_UVLO_CURRENT_POSITION_Z (EEPROM_FILE_POSITION - 4) //float for current position in Z +#define EEPROM_UVLO_TARGET_HOTEND (EEPROM_UVLO_CURRENT_POSITION_Z - 1) +#define EEPROM_UVLO_TARGET_BED (EEPROM_UVLO_TARGET_HOTEND - 1) +#define EEPROM_UVLO_FEEDRATE (EEPROM_UVLO_TARGET_BED - 2) +#define EEPROM_UVLO_FAN_SPEED (EEPROM_UVLO_FEEDRATE - 1) +#define EEPROM_FAN_CHECK_ENABLED (EEPROM_UVLO_FAN_SPEED - 1) +#define EEPROM_UVLO_MESH_BED_LEVELING (EEPROM_FAN_CHECK_ENABLED - 9*2) + +#define EEPROM_UVLO_Z_MICROSTEPS (EEPROM_UVLO_MESH_BED_LEVELING - 2) +#define EEPROM_UVLO_E_ABS (EEPROM_UVLO_Z_MICROSTEPS - 1) +#define EEPROM_UVLO_CURRENT_POSITION_E (EEPROM_UVLO_E_ABS - 4) //float for current position in E + +// Crash detection mode EEPROM setting +#define EEPROM_CRASH_DET (EEPROM_UVLO_CURRENT_POSITION_E - 5) // float (orig EEPROM_UVLO_MESH_BED_LEVELING-12) +// Crash detection counter Y (last print) +#define EEPROM_CRASH_COUNT_Y (EEPROM_CRASH_DET - 1) // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-15) +// Filament sensor on/off EEPROM setting +#define EEPROM_FSENSOR (EEPROM_CRASH_COUNT_Y - 1) // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-14) +// Crash detection counter X (last print) +#define EEPROM_CRASH_COUNT_X (EEPROM_FSENSOR - 1) // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-15) +// Filament runout/error coutner (last print) +#define EEPROM_FERROR_COUNT (EEPROM_CRASH_COUNT_X - 1) // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-16) +// Power loss errors (last print) +#define EEPROM_POWER_COUNT (EEPROM_FERROR_COUNT - 1) // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-17) + +#define EEPROM_XYZ_CAL_SKEW (EEPROM_POWER_COUNT - 4) // float for skew backup +#define EEPROM_WIZARD_ACTIVE (EEPROM_XYZ_CAL_SKEW - 1) +#define EEPROM_BELTSTATUS_X (EEPROM_WIZARD_ACTIVE - 2) // uint16 +#define EEPROM_BELTSTATUS_Y (EEPROM_BELTSTATUS_X - 2) // uint16 + +#define EEPROM_DIR_DEPTH (EEPROM_BELTSTATUS_Y-1) +#define EEPROM_DIRS (EEPROM_DIR_DEPTH-80) //8 chars for each dir name, max 10 levels +#define EEPROM_SD_SORT (EEPROM_DIRS - 1) //0 -time, 1-alpha, 2-none +#define EEPROM_SECOND_SERIAL_ACTIVE (EEPROM_SD_SORT - 1) + +#define EEPROM_FSENS_AUTOLOAD_ENABLED (EEPROM_SECOND_SERIAL_ACTIVE - 1) + +// Crash detection counter X (total) +#define EEPROM_CRASH_COUNT_X_TOT (EEPROM_FSENS_AUTOLOAD_ENABLED - 2) // uint16 +// Crash detection counter Y (total) +#define EEPROM_CRASH_COUNT_Y_TOT (EEPROM_CRASH_COUNT_X_TOT - 2) // uint16 +// Filament runout/error coutner (total) +#define EEPROM_FERROR_COUNT_TOT (EEPROM_CRASH_COUNT_Y_TOT - 2) // uint16 +// Power loss errors (total) +#define EEPROM_POWER_COUNT_TOT (EEPROM_FERROR_COUNT_TOT - 2) // uint16 + +//////////////////////////////////////// +// TMC2130 Accurate sensorless homing + +// X-axis home origin (stepper phase in microsteps, 0..63 for 16ustep resolution) +#define EEPROM_TMC2130_HOME_X_ORIGIN (EEPROM_POWER_COUNT_TOT - 1) // uint8 +// X-axis home bsteps (number of microsteps backward) +#define EEPROM_TMC2130_HOME_X_BSTEPS (EEPROM_TMC2130_HOME_X_ORIGIN - 1) // uint8 +// X-axis home fsteps (number of microsteps forward) +#define EEPROM_TMC2130_HOME_X_FSTEPS (EEPROM_TMC2130_HOME_X_BSTEPS - 1) // uint8 +// Y-axis home origin (stepper phase in microsteps, 0..63 for 16ustep resolution) +#define EEPROM_TMC2130_HOME_Y_ORIGIN (EEPROM_TMC2130_HOME_X_FSTEPS - 1) // uint8 +// X-axis home bsteps (number of microsteps backward) +#define EEPROM_TMC2130_HOME_Y_BSTEPS (EEPROM_TMC2130_HOME_Y_ORIGIN - 1) // uint8 +// X-axis home fsteps (number of microsteps forward) +#define EEPROM_TMC2130_HOME_Y_FSTEPS (EEPROM_TMC2130_HOME_Y_BSTEPS - 1) // uint8 +// Accurate homing enabled +#define EEPROM_TMC2130_HOME_ENABLED (EEPROM_TMC2130_HOME_Y_FSTEPS - 1) // uint8 + + +//////////////////////////////////////// +// TMC2130 uStep linearity correction + +// Linearity correction factor (XYZE) +#define EEPROM_TMC2130_WAVE_X_FAC (EEPROM_TMC2130_HOME_ENABLED - 1) // uint8 +#define EEPROM_TMC2130_WAVE_Y_FAC (EEPROM_TMC2130_WAVE_X_FAC - 1) // uint8 +#define EEPROM_TMC2130_WAVE_Z_FAC (EEPROM_TMC2130_WAVE_Y_FAC - 1) // uint8 +#define EEPROM_TMC2130_WAVE_E_FAC (EEPROM_TMC2130_WAVE_Z_FAC - 1) // uint8 + + +//////////////////////////////////////// +// TMC2130 uStep resolution + +// microstep resolution (XYZE): usteps = (256 >> mres) +#define EEPROM_TMC2130_X_MRES (EEPROM_TMC2130_WAVE_E_FAC - 1) // uint8 +#define EEPROM_TMC2130_Y_MRES (EEPROM_TMC2130_X_MRES - 1) // uint8 +#define EEPROM_TMC2130_Z_MRES (EEPROM_TMC2130_Y_MRES - 1) // uint8 +#define EEPROM_TMC2130_E_MRES (EEPROM_TMC2130_Z_MRES - 1) // uint8 + +// HW +#define EEPROM_PRINTER_TYPE (EEPROM_TMC2130_E_MRES - 2) // uint16 +#define EEPROM_BOARD_TYPE (EEPROM_PRINTER_TYPE - 2) // uint16 + +// Extruder multiplier for power panic +#define EEPROM_EXTRUDER_MULTIPLIER_0 (EEPROM_BOARD_TYPE - 4) //float +#define EEPROM_EXTRUDER_MULTIPLIER_1 (EEPROM_EXTRUDER_MULTIPLIER_0 - 4) //float +#define EEPROM_EXTRUDER_MULTIPLIER_2 (EEPROM_EXTRUDER_MULTIPLIER_1 - 4) //float +#define EEPROM_EXTRUDEMULTIPLY (EEPROM_EXTRUDER_MULTIPLIER_2 - 2) // uint16 + +// Sound Mode +#define EEPROM_SOUND_MODE (EEPROM_EXTRUDEMULTIPLY-1) // uint8 + +// !!!!! +// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!! +// !!!!! + +//TMC2130 configuration +#define EEPROM_TMC_AXIS_SIZE //axis configuration block size +#define EEPROM_TMC_X (EEPROM_TMC + 0 * EEPROM_TMC_AXIS_SIZE) //X axis configuration blok +#define EEPROM_TMC_Y (EEPROM_TMC + 1 * EEPROM_TMC_AXIS_SIZE) //Y axis +#define EEPROM_TMC_Z (EEPROM_TMC + 2 * EEPROM_TMC_AXIS_SIZE) //Z axis +#define EEPROM_TMC_E (EEPROM_TMC + 3 * EEPROM_TMC_AXIS_SIZE) //E axis +//TMC2130 - X axis +#define EEPROM_TMC_X_USTEPS_INTPOL (EEPROM_TMC_X + 0) // 1byte, bit 0..4 USTEPS, bit 7 INTPOL +#define EEPROM_TMC_X_PWM_AMPL (EEPROM_TMC_X + 1) // 1byte (0..255) +#define EEPROM_TMC_X_PWM_GRAD_FREQ (EEPROM_TMC_X + 2) // 1byte, bit 0..3 GRAD, bit 4..5 FREQ +#define EEPROM_TMC_X_TCOOLTHRS (EEPROM_TMC_X + 3) // 2bytes (0..) +#define EEPROM_TMC_X_SG_THRS (EEPROM_TMC_X + 5) // 1byte, (-64..+63) +#define EEPROM_TMC_X_CURRENT_H (EEPROM_TMC_X + 6) // 1byte, (0..63) +#define EEPROM_TMC_X_CURRENT_R (EEPROM_TMC_X + 7) // 1byte, (0..63) +#define EEPROM_TMC_X_HOME_SG_THRS (EEPROM_TMC_X + 8) // 1byte, (-64..+63) +#define EEPROM_TMC_X_HOME_CURRENT_R (EEPROM_TMC_X + 9) // 1byte, (-64..+63) +#define EEPROM_TMC_X_HOME_DTCOOLTHRS (EEPROM_TMC_X + 10) // 1byte (-128..+127) +#define EEPROM_TMC_X_DTCOOLTHRS_LOW (EEPROM_TMC_X + 11) // 1byte (-128..+127) +#define EEPROM_TMC_X_DTCOOLTHRS_HIGH (EEPROM_TMC_X + 12) // 1byte (-128..+127) +#define EEPROM_TMC_X_SG_THRS_LOW (EEPROM_TMC_X + 13) // 1byte, (-64..+63) +#define EEPROM_TMC_X_SG_THRS_HIGH (EEPROM_TMC_X + 14) // 1byte, (-64..+63) + +// Currently running firmware, each digit stored as uint16_t. +// The flavor differentiates a dev, alpha, beta, release candidate or a release version. +#define EEPROM_FIRMWARE_VERSION_END (FW_PRUSA3D_MAGIC_LEN+8) +#define EEPROM_FIRMWARE_VERSION_FLAVOR (FW_PRUSA3D_MAGIC_LEN+6) +#define EEPROM_FIRMWARE_VERSION_REVISION (FW_PRUSA3D_MAGIC_LEN+4) +#define EEPROM_FIRMWARE_VERSION_MINOR (FW_PRUSA3D_MAGIC_LEN+2) +#define EEPROM_FIRMWARE_VERSION_MAJOR FW_PRUSA3D_MAGIC_LEN +// Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware. +#define EEPROM_FIRMWARE_PRUSA_MAGIC 0 + +#define EEPROM_OFFSET 20 //offset for storing settings using M500 +//#define EEPROM_OFFSET + +#endif // EEPROM_H diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 033982d7e..a141ed28a 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1458,7 +1458,7 @@ const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { 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_ES[] PROGMEM = "Cambiar 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 = { @@ -3075,7 +3075,7 @@ const char * const MSG_SORTING_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SORTING_DE }; -const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort: [Alphabet]"; +const char MSG_SORT_ALPHA_EN[] PROGMEM = "Sort [alphabet]"; const char MSG_SORT_ALPHA_CZ[] PROGMEM = "Trideni [Abeceda]"; const char MSG_SORT_ALPHA_IT[] PROGMEM = "Ordine:[Alfabeto]"; const char MSG_SORT_ALPHA_ES[] PROGMEM = "Ordenar:[Alfabet]"; @@ -3090,7 +3090,7 @@ const char * const MSG_SORT_ALPHA_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SORT_ALPHA_DE }; -const char MSG_SORT_NONE_EN[] PROGMEM = "Sort: [None]"; +const char MSG_SORT_NONE_EN[] PROGMEM = "Sort [none]"; const char MSG_SORT_NONE_CZ[] PROGMEM = "Trideni [Zadne]"; const char MSG_SORT_NONE_IT[] PROGMEM = "Ordine: [Nessuno]"; const char MSG_SORT_NONE_ES[] PROGMEM = "Ordenar:[Ninguno]"; @@ -3105,7 +3105,7 @@ const char * const MSG_SORT_NONE_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SORT_NONE_DE }; -const char MSG_SORT_TIME_EN[] PROGMEM = "Sort: [Time]"; +const char MSG_SORT_TIME_EN[] PROGMEM = "Sort [time]"; const char MSG_SORT_TIME_CZ[] PROGMEM = "Trideni [Cas]"; const char MSG_SORT_TIME_IT[] PROGMEM = "Ordine: [Tempo]"; const char MSG_SORT_TIME_ES[] PROGMEM = "Ordenar: [Tiempo]"; @@ -3120,6 +3120,26 @@ const char * const MSG_SORT_TIME_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SORT_TIME_DE }; +const char MSG_SOUND_MODE_LOUD_EN[] PROGMEM = "Sound [loud]"; +const char * const MSG_SOUND_MODE_LOUD_LANG_TABLE[1] PROGMEM = { + MSG_SOUND_MODE_LOUD_EN +}; + +const char MSG_SOUND_MODE_MUTE_EN[] PROGMEM = "Sound [mute]"; +const char * const MSG_SOUND_MODE_MUTE_LANG_TABLE[1] PROGMEM = { + MSG_SOUND_MODE_MUTE_EN +}; + +const char MSG_SOUND_MODE_ONCE_EN[] PROGMEM = "Sound [once]"; +const char * const MSG_SOUND_MODE_ONCE_LANG_TABLE[1] PROGMEM = { + MSG_SOUND_MODE_ONCE_EN +}; + +const char MSG_SOUND_MODE_SILENT_EN[] PROGMEM = "Sound [silent]"; +const char * const MSG_SOUND_MODE_SILENT_LANG_TABLE[1] PROGMEM = { + MSG_SOUND_MODE_SILENT_EN +}; + const char MSG_SPEED_EN[] PROGMEM = "Speed"; const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; const char MSG_SPEED_IT[] PROGMEM = "Velocita"; @@ -3382,26 +3402,32 @@ const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { 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_EN[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_CZ[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_IT[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_ES[] 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_CZ, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_IT, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_ES, 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_EN[] PROGMEM = "SD card [flshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_CZ[] PROGMEM = "SD card [FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_IT[] PROGMEM = "SD card [FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_ES[] 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_CZ, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_IT, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_ES, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE }; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 3982e6a19..3451253d6 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -570,6 +570,14 @@ 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_SOUND_MODE_LOUD_LANG_TABLE[1]; +#define MSG_SOUND_MODE_LOUD LANG_TABLE_SELECT_EXPLICIT(MSG_SOUND_MODE_LOUD_LANG_TABLE, 0) +extern const char* const MSG_SOUND_MODE_MUTE_LANG_TABLE[1]; +#define MSG_SOUND_MODE_MUTE LANG_TABLE_SELECT_EXPLICIT(MSG_SOUND_MODE_MUTE_LANG_TABLE, 0) +extern const char* const MSG_SOUND_MODE_ONCE_LANG_TABLE[1]; +#define MSG_SOUND_MODE_ONCE LANG_TABLE_SELECT_EXPLICIT(MSG_SOUND_MODE_ONCE_LANG_TABLE, 0) +extern const char* const MSG_SOUND_MODE_SILENT_LANG_TABLE[1]; +#define MSG_SOUND_MODE_SILENT LANG_TABLE_SELECT_EXPLICIT(MSG_SOUND_MODE_SILENT_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]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 166c05d51..b00afaf91 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -1,3 +1,4 @@ +/** /** * English * @@ -274,8 +275,8 @@ #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=17, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +#define(length=17, 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" @@ -313,10 +314,14 @@ #define(length=15, lines=1) MSG_SLIGHT_SKEW "Slight skew:" #define(length=15, lines=1) MSG_SEVERE_SKEW "Severe skew:" #define(length=20, lines=4) MSG_DEFAULT_SETTINGS_LOADED "Default settings loaded" -#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=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" +#define(length=17, lines=1) MSG_SOUND_MODE_LOUD "Sound [loud]" +#define(length=17, lines=1) MSG_SOUND_MODE_ONCE "Sound [once]" +#define(length=17, lines=1) MSG_SOUND_MODE_SILENT "Sound [silent]" +#define(length=17, lines=1) MSG_SOUND_MODE_MUTE "Sound [mute]" #define(length=20, lines=2) MSG_FILE_INCOMPLETE "File incomplete. Continue anyway?" #define(length=17, lines=1) MSG_WIZARD "Wizard" #define(length=20, lines=7) MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" diff --git a/Firmware/sound.cpp b/Firmware/sound.cpp new file mode 100644 index 000000000..90e6ab93e --- /dev/null +++ b/Firmware/sound.cpp @@ -0,0 +1,105 @@ +#include "sound.h" + +#include "Marlin.h" + +//#include +//#include +//#include "eeprom.h" + + +//eSOUND_MODE eSoundMode=e_SOUND_MODE_LOUD; +// nema vyznam, pokud se bude volat Sound_Init (tzn. poc. hodnota je v EEPROM) +// !?! eSOUND_MODE eSoundMode; v ultraldc.cpp :: cd_settings_menu() se takto jevi jako lokalni promenna +eSOUND_MODE eSoundMode; //=e_SOUND_MODE_DEFAULT; + + +static void Sound_SaveMode(void); +static void Sound_DoSound_Echo(void); +static void Sound_DoSound_Prompt(void); + + +void Sound_Init(void) +{ +eSoundMode=(eSOUND_MODE)eeprom_read_byte((uint8_t*)EEPROM_SOUND_MODE); +if(eSoundMode==e_SOUND_MODE_NULL) + Sound_Default(); // je potreba provest i ulozeni do EEPROM +} + +void Sound_Default(void) +{ +eSoundMode=e_SOUND_MODE_DEFAULT; +Sound_SaveMode(); +} + +void Sound_SaveMode(void) +{ +eeprom_update_byte((uint8_t*)EEPROM_SOUND_MODE,(uint8_t)eSoundMode); +} + +void Sound_CycleState(void) +{ +switch(eSoundMode) + { + case e_SOUND_MODE_LOUD: + eSoundMode=e_SOUND_MODE_ONCE; + break; + case e_SOUND_MODE_ONCE: + eSoundMode=e_SOUND_MODE_SILENT; + break; + case e_SOUND_MODE_SILENT: + eSoundMode=e_SOUND_MODE_MUTE; + break; + case e_SOUND_MODE_MUTE: + eSoundMode=e_SOUND_MODE_LOUD; + break; + default: + eSoundMode=e_SOUND_MODE_LOUD; + } +Sound_SaveMode(); +} + +void Sound_MakeSound(eSOUND_CLASS eSoundClass,eSOUND_TYPE eSoundType) +{ +switch(eSoundMode) + { + case e_SOUND_MODE_LOUD: + if(eSoundType==e_SOUND_TYPE_ButtonEcho) + Sound_DoSound_Echo(); + if(eSoundType==e_SOUND_TYPE_StandardPrompt) + Sound_DoSound_Prompt(); + break; + case e_SOUND_MODE_ONCE: + if(eSoundType==e_SOUND_TYPE_ButtonEcho) + Sound_DoSound_Echo(); + if(eSoundType==e_SOUND_TYPE_StandardPrompt) + Sound_DoSound_Prompt(); + break; + case e_SOUND_MODE_SILENT: + break; + case e_SOUND_MODE_MUTE: + break; + default: + ; + } +} + + +static void Sound_DoSound_Echo(void) +{ +uint8_t nI; + +for(nI=0;nI<10;nI++) + { + WRITE(BEEPER,HIGH); + delayMicroseconds(100); + WRITE(BEEPER,LOW); + delayMicroseconds(100); + } +} + +static void Sound_DoSound_Prompt(void) +{ +WRITE(BEEPER,HIGH); +delay_keep_alive(500); +WRITE(BEEPER,LOW); +} diff --git a/Firmware/sound.h b/Firmware/sound.h new file mode 100644 index 000000000..cab267358 --- /dev/null +++ b/Firmware/sound.h @@ -0,0 +1,28 @@ +#ifndef SOUND_H +#define SOUND_H + + +#define e_SOUND_MODE_NULL 0xFF +typedef enum + {e_SOUND_MODE_LOUD,e_SOUND_MODE_ONCE,e_SOUND_MODE_SILENT,e_SOUND_MODE_MUTE} eSOUND_MODE; +#define e_SOUND_MODE_DEFAULT e_SOUND_MODE_LOUD + +typedef enum + {e_SOUND_TYPE_ButtonEcho,e_SOUND_TYPE_EncoderEcho,e_SOUND_TYPE_StandardPrompt,e_SOUND_TYPE_StandardConfirm,e_SOUND_TYPE_StandardWarning,e_SOUND_TYPE_StandardAlert} eSOUND_TYPE; +typedef enum + {e_SOUND_CLASS_Echo,e_SOUND_CLASS_Prompt,e_SOUND_CLASS_Confirm,e_SOUND_CLASS_Warning,e_SOUND_CLASS_Alert} eSOUND_CLASS; + + +extern eSOUND_MODE eSoundMode; + + +extern void Sound_Init(void); +extern void Sound_Default(void); +extern void Sound_Save(void); +extern void Sound_CycleState(void); +extern void Sound_MakeSound(eSOUND_CLASS eSoundClass,eSOUND_TYPE eSoundType); + +//static void Sound_DoSound_Echo(void); +//static void Sound_DoSound_Prompt(void); + +#endif // SOUND_H diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7776b79d2..c2ca20456 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -15,6 +15,8 @@ #include "SdFatUtil.h" +#include "sound.h" + #define _STRINGIFY(s) #s @@ -3056,6 +3058,11 @@ static void lcd_sort_type_set() { } #endif //SDCARD_SORT_ALPHA +static void lcd_sound_state_set(void) +{ +Sound_CycleState(); +} + static void lcd_silent_mode_set() { switch (SilentModeMenu) { case 0: SilentModeMenu = 1; break; @@ -3514,6 +3521,24 @@ static void lcd_settings_menu() } } #endif // SDCARD_SORT_ALPHA + +switch(eSoundMode) + { + case e_SOUND_MODE_LOUD: + MENU_ITEM(function,MSG_SOUND_MODE_LOUD,lcd_sound_state_set); + break; + case e_SOUND_MODE_ONCE: + MENU_ITEM(function,MSG_SOUND_MODE_ONCE,lcd_sound_state_set); + break; + case e_SOUND_MODE_SILENT: + MENU_ITEM(function,MSG_SOUND_MODE_SILENT,lcd_sound_state_set); + break; + case e_SOUND_MODE_MUTE: + MENU_ITEM(function,MSG_SOUND_MODE_MUTE,lcd_sound_state_set); + break; + default: + MENU_ITEM(function,MSG_SOUND_MODE_LOUD,lcd_sound_state_set); + } if (farm_mode) { diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index 275c96d27..b96d343b4 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -7,6 +7,8 @@ char longFilenameOLD[LONG_FILENAME_LENGTH]; #include "Configuration_prusa.h" #include "Marlin.h" + +#include "sound.h" /** * Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays. * When selecting the Russian language, a slightly different LCD implementation is used to handle UTF8 characters. @@ -1325,6 +1327,8 @@ static void lcd_implementation_quick_feedback() #endif #elif defined(BEEPER) && BEEPER > -1 SET_OUTPUT(BEEPER); + Sound_MakeSound(e_SOUND_CLASS_Echo,e_SOUND_TYPE_ButtonEcho); +/* #if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) for(int8_t i=0;i<10;i++) { @@ -1342,6 +1346,7 @@ static void lcd_implementation_quick_feedback() delayMicroseconds(1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2); } #endif +*/ #endif } From a9f83f5ceafaf39a97ed35dfbcc8109590a4a538 Mon Sep 17 00:00:00 2001 From: MRprusa3d Date: Mon, 8 Apr 2019 23:02:48 +0200 Subject: [PATCH 2/3] Sound @ MK2 step 2 --- Firmware/Marlin_main.cpp | 6 ++++++ Firmware/temperature.cpp | 3 +++ Firmware/ultralcd.cpp | 1 + Firmware/util.cpp | 3 +++ 4 files changed, 13 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b43a8f937..732b9db6d 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -937,6 +937,7 @@ void factory_reset(char level, bool quiet) // Level 0: Language reset case 0: +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) WRITE(BEEPER, HIGH); _delay_ms(100); WRITE(BEEPER, LOW); @@ -946,6 +947,7 @@ void factory_reset(char level, bool quiet) //Level 1: Reset statistics case 1: +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) WRITE(BEEPER, HIGH); _delay_ms(100); WRITE(BEEPER, LOW); @@ -969,6 +971,7 @@ void factory_reset(char level, bool quiet) eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) WRITE(BEEPER, HIGH); _delay_ms(100); WRITE(BEEPER, LOW); @@ -981,6 +984,7 @@ void factory_reset(char level, bool quiet) lcd_printPGM(PSTR("Factory RESET")); lcd_print_at_PGM(1, 2, PSTR("ERASING all data")); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) WRITE(BEEPER, HIGH); _delay_ms(100); WRITE(BEEPER, LOW); @@ -1117,6 +1121,7 @@ void setup() SET_OUTPUT(BEEPER); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) WRITE(BEEPER, HIGH); while (!READ(BTN_ENC)); @@ -5076,6 +5081,7 @@ Sigma_Exit: if (beepS > 0) { #if BEEPER > 0 +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) tone(BEEPER, beepS); delay(beepP); noTone(BEEPER); diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 9e8fdd36d..7c98f7afd 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -31,6 +31,7 @@ #include "Marlin.h" #include "ultralcd.h" +#include "sound.h" #include "temperature.h" #include "watchdog.h" #include "cardreader.h" @@ -1239,6 +1240,7 @@ void temp_runaway_stop(bool isPreheat, bool isBed) disable_e2(); manage_heater(); lcd_update(); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT)) WRITE(BEEPER, HIGH); delayMicroseconds(500); WRITE(BEEPER, LOW); @@ -1324,6 +1326,7 @@ void max_temp_error(uint8_t e) { SET_OUTPUT(BEEPER); WRITE(FAN_PIN, 1); WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT)) WRITE(BEEPER, 1); // fanSpeed will consumed by the check_axes_activity() routine. fanSpeed=255; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c2ca20456..bd128abd2 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4779,6 +4779,7 @@ static void lcd_main_menu() void stack_error() { SET_OUTPUT(BEEPER); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT)) WRITE(BEEPER, HIGH); delay(1000); WRITE(BEEPER, LOW); diff --git a/Firmware/util.cpp b/Firmware/util.cpp index 8c575ca84..6de433eff 100644 --- a/Firmware/util.cpp +++ b/Firmware/util.cpp @@ -1,6 +1,7 @@ #include "Configuration.h" #include "ultralcd.h" +#include "sound.h" #include "language.h" #include "util.h" @@ -256,10 +257,12 @@ bool show_upgrade_dialog_if_version_newer(const char *version_string) for (const char *c = version_string; ! is_whitespace_or_nl_or_eol(*c); ++ c) lcd_implementation_write(*c); lcd_print_at_PGM(0, 3, MSG_NEW_FIRMWARE_PLEASE_UPGRADE); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) tone(BEEPER, 1000); delay_keep_alive(50); noTone(BEEPER); delay_keep_alive(500); +if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)) tone(BEEPER, 1000); delay_keep_alive(50); noTone(BEEPER); From de5fdac6a2c00ac56b5183c0bd906d6c2869a1c4 Mon Sep 17 00:00:00 2001 From: MRprusa3d Date: Mon, 8 Apr 2019 23:20:16 +0200 Subject: [PATCH 3/3] Sound @ MK2 step 3 --- Firmware/ultralcd.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index bd128abd2..c68b07bd3 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4838,6 +4838,25 @@ static void lcd_tune_menu() default: MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set_tune); break; } } + + switch(eSoundMode) + { + case e_SOUND_MODE_LOUD: + MENU_ITEM(function,MSG_SOUND_MODE_LOUD,lcd_sound_state_set); + break; + case e_SOUND_MODE_ONCE: + MENU_ITEM(function,MSG_SOUND_MODE_ONCE,lcd_sound_state_set); + break; + case e_SOUND_MODE_SILENT: + MENU_ITEM(function,MSG_SOUND_MODE_SILENT,lcd_sound_state_set); + break; + case e_SOUND_MODE_MUTE: + MENU_ITEM(function,MSG_SOUND_MODE_MUTE,lcd_sound_state_set); + break; + default: + MENU_ITEM(function,MSG_SOUND_MODE_LOUD,lcd_sound_state_set); + } + END_MENU(); }