From 389a4d3a1844aff03dd23e2b81bcb05c4a42657a Mon Sep 17 00:00:00 2001 From: narno2202 Date: Fri, 16 Jan 2026 14:38:49 +0100 Subject: [PATCH] Change MSG_FTM resonance test text to MSG_ resonance text, minor changes to ResonanceGenerator class, move resonance menu outside FT_MOTION conditional in menu_motion.cpp --- .../feature/resonance/resonance_generator.cpp | 4 +- .../feature/resonance/resonance_generator.h | 1 + Marlin/src/lcd/language/language_en.h | 18 ++--- Marlin/src/lcd/language/language_it.h | 14 ++-- Marlin/src/lcd/menu/menu_motion.cpp | 81 ++++++++++--------- 5 files changed, 61 insertions(+), 57 deletions(-) diff --git a/Marlin/src/feature/resonance/resonance_generator.cpp b/Marlin/src/feature/resonance/resonance_generator.cpp index 37d63a9e41..6c396bf40d 100644 --- a/Marlin/src/feature/resonance/resonance_generator.cpp +++ b/Marlin/src/feature/resonance/resonance_generator.cpp @@ -38,6 +38,7 @@ float ResonanceGenerator::rt_time = FTM_TS; // Resonance test float ResonanceGenerator::timeline = 0.0f; float ResonanceGenerator::amplitude_precalc; float ResonanceGenerator::freq_mul; +xyze_float_t ResonanceGenerator:: traj_coords; ResonanceGenerator rtg; @@ -54,6 +55,7 @@ void ResonanceGenerator::start() { do_blocking_move_to_xy(X_CENTER, Y_CENTER, Z_CLEARANCE_FOR_HOMING); rt_params.start_pos = current_position; + traj_coords = rt_params.start_pos; rt_time = FTM_TS; active = true; done = false; @@ -98,7 +100,7 @@ float ResonanceGenerator::fast_sin(float x) { } void ResonanceGenerator::fill_stepper_plan_buffer() { - xyze_float_t traj_coords = rt_params.start_pos; + //xyze_float_t traj_coords = rt_params.start_pos; while (!ftMotion.stepping.is_full()) { // Calculate current frequency diff --git a/Marlin/src/feature/resonance/resonance_generator.h b/Marlin/src/feature/resonance/resonance_generator.h index 0cbd4b366b..9bce6944cc 100644 --- a/Marlin/src/feature/resonance/resonance_generator.h +++ b/Marlin/src/feature/resonance/resonance_generator.h @@ -80,6 +80,7 @@ class ResonanceGenerator { static float freq_mul; // Frequency multiplier for sine sweeping static float amplitude_precalc; // Precalculated part of amplitude formula float current_freq; // Current frequency being generated in sinusoidal motion + static xyze_float_t traj_coords; static bool active; // Resonance test active static bool done; // Resonance test done }; diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index ba5228a1f1..155fa35f00 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -950,13 +950,13 @@ namespace LanguageNarrow_en { LSTR MSG_FTM_POLY6_OVERSHOOT = _UxGT("@ Poly6 Overshoot"); LSTR MSG_FTM_CONFIGURE_AXIS_N = _UxGT("Configure @ Axis"); - LSTR MSG_FTM_RESONANCE_TEST = _UxGT("Resonance Test"); - LSTR MSG_FTM_RT_RUNNING = _UxGT("Res. Test Running..."); - LSTR MSG_FTM_RT_START_N = _UxGT("Start @ Axis Test"); - LSTR MSG_FTM_RT_STOP = _UxGT("Abort Test"); - LSTR MSG_FTM_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); - LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Resonance Freq."); - LSTR MSG_FTM_TIMELINE_FREQ = _UxGT("Timeline (s)"); + LSTR MSG_RESONANCE_TEST = _UxGT("Resonance Test"); + LSTR MSG_RT_RUNNING = _UxGT("Res. Test Running..."); + LSTR MSG_RT_START_N = _UxGT("Start @ Axis Test"); + LSTR MSG_RT_STOP = _UxGT("Abort Test"); + LSTR MSG_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); + LSTR MSG_RESONANCE_FREQ = _UxGT("Resonance Freq."); + LSTR MSG_TIMELINE_FREQ = _UxGT("Timeline (s)"); LSTR MSG_LEVEL_X_AXIS = _UxGT("Level X Axis"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate"); @@ -1173,8 +1173,8 @@ namespace LanguageWide_en { LSTR MSG_HOMING_FEEDRATE_Y = _UxGT("Y Homing Feedrate"); LSTR MSG_HOMING_FEEDRATE_Z = _UxGT("Z Homing Feedrate"); LSTR MSG_EEPROM_INITIALIZED = _UxGT("Default Settings Restored"); - LSTR MSG_FTM_RT_RUNNING = _UxGT("Resonance Test Running..."); - LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Resonance frequency"); + LSTR MSG_RT_RUNNING = _UxGT("Resonance Test Running..."); + LSTR MSG_RESONANCE_FREQ = _UxGT("Resonance frequency"); #endif } diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 3f45c44156..c4688eed90 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -907,13 +907,13 @@ namespace LanguageNarrow_it { LSTR MSG_FTM_SMOOTH_TIME_N = _UxGT("@ Tempo smorzamento"); LSTR MSG_FTM_POLY6_OVERSHOOT = _UxGT("@ Overshoot Poly6"); - LSTR MSG_FTM_RESONANCE_TEST = _UxGT("Test risonanza"); - LSTR MSG_FTM_RT_RUNNING = _UxGT("Test ris.in corso..."); - LSTR MSG_FTM_RT_START_N = _UxGT("Avvia Test Asse @"); - LSTR MSG_FTM_RT_STOP = _UxGT("Annulla Test"); - LSTR MSG_FTM_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); - LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Freq.Risonanza"); - LSTR MSG_FTM_TIMELINE_FREQ = _UxGT("Cronologia (s)"); + LSTR MSG_RESONANCE_TEST = _UxGT("Test risonanza"); + LSTR MSG_RT_RUNNING = _UxGT("Test ris.in corso..."); + LSTR MSG_RT_START_N = _UxGT("Avvia Test Asse @"); + LSTR MSG_RT_STOP = _UxGT("Annulla Test"); + LSTR MSG_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); + LSTR MSG_RESONANCE_FREQ = _UxGT("Freq.Risonanza"); + LSTR MSG_TIMELINE_FREQ = _UxGT("Cronologia (s)"); LSTR MSG_LEVEL_X_AXIS = _UxGT("Livello asse X"); LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibra"); diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 8abeaeee10..464ac21f26 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -308,6 +308,46 @@ void menu_move() { } #endif +#if ENABLED(RESONANCE_TEST) + #include "../../feature/resonance/resonance_generator.h" + + void menu_resonance_freq() { + START_MENU(); + BACK_ITEM(MSG_RESONANCE_TEST); + + STATIC_ITEM(MSG_RETRIEVE_FREQ); + EDIT_ITEM(float62, MSG_TIMELINE_FREQ, &rtg.timeline, 0.0f, 600.0f); + PSTRING_ITEM(MSG_RESONANCE_FREQ, ftostr53_63(rtg.getFrequencyFromTimeline()), SS_FULL); + + END_MENU(); + } + + void menu_resonance_test() { + START_MENU(); + BACK_ITEM(MSG_FIXED_TIME_MOTION); + + if (rtg.isActive() && !rtg.isDone()) { + STATIC_ITEM(MSG_RT_RUNNING); + GCODES_ITEM(MSG_RT_STOP, F("M496")); + } + else { + #if HAS_X_AXIS + GCODES_ITEM_N(X_AXIS, MSG_RT_START_N, F("M495 X S")); + #endif + #if HAS_Y_AXIS + GCODES_ITEM_N(Y_AXIS, MSG_RT_START_N, F("M495 Y S")); + #endif + #if HAS_Z_AXIS + GCODES_ITEM_N(Z_AXIS, MSG_RT_START_N, F("M495 Z S")); + #endif + SUBMENU(MSG_RETRIEVE_FREQ, menu_resonance_freq); + } + + END_MENU(); + } + +#endif // RESONANCE_TEST + #if ENABLED(FT_MOTION_MENU) #include "../../module/ft_motion.h" @@ -405,45 +445,6 @@ void menu_move() { #endif // FTM_POLYS - #if ENABLED(RESONANCE_TEST) - - void menu_resonance_freq() { - START_MENU(); - BACK_ITEM(MSG_FTM_RESONANCE_TEST); - - STATIC_ITEM(MSG_FTM_RETRIEVE_FREQ); - EDIT_ITEM(float62, MSG_FTM_TIMELINE_FREQ, &rtg.timeline, 0.0f, 600.0f); - PSTRING_ITEM(MSG_FTM_RESONANCE_FREQ, ftostr53_63(rtg.getFrequencyFromTimeline()), SS_FULL); - - END_MENU(); - } - - void menu_resonance_test() { - START_MENU(); - BACK_ITEM(MSG_FIXED_TIME_MOTION); - - if (rtg.isActive() && !rtg.isDone()) { - STATIC_ITEM(MSG_FTM_RT_RUNNING); - GCODES_ITEM(MSG_FTM_RT_STOP, F("M496")); - } - else { - #if HAS_X_AXIS - GCODES_ITEM_N(X_AXIS, MSG_FTM_RT_START_N, F("M495 X S")); - #endif - #if HAS_Y_AXIS - GCODES_ITEM_N(Y_AXIS, MSG_FTM_RT_START_N, F("M495 Y S")); - #endif - #if HAS_Z_AXIS - GCODES_ITEM_N(Z_AXIS, MSG_FTM_RT_START_N, F("M495 Z S")); - #endif - SUBMENU(MSG_FTM_RETRIEVE_FREQ, menu_resonance_freq); - } - - END_MENU(); - } - - #endif // RESONANCE_TEST - #if HAS_DYNAMIC_FREQ void menu_ftm_dyn_mode() { @@ -560,7 +561,7 @@ void menu_move() { }); #if ENABLED(RESONANCE_TEST) - SUBMENU(MSG_FTM_RESONANCE_TEST, menu_resonance_test); + SUBMENU(MSG_RESONANCE_TEST, menu_resonance_test); #endif }