diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 875795f7d..abe27d32b 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1446,16 +1446,20 @@ void process_commands() } break; - #if defined(LARGE_FLASH) && LARGE_FLASH == true && defined(BEEPER) && BEEPER > -1 + #if defined(LARGE_FLASH) && LARGE_FLASH == true case 300: // M300 { - int beepS = 1; + int beepS = 400; int beepP = 1000; if(code_seen('S')) beepS = code_value(); if(code_seen('P')) beepP = code_value(); - tone(BEEPER, beepS); - delay(beepP); - noTone(BEEPER); + #if defined(BEEPER) && BEEPER > -1 + tone(BEEPER, beepS); + delay(beepP); + noTone(BEEPER); + #elif defined(ULTRALCD) + lcd_buzz(beepS, beepP); + #endif } break; #endif // M300 @@ -1672,17 +1676,19 @@ void process_commands() manage_inactivity(); lcd_update(); - #if BEEPER > -1 if(cnt==0) { + #if defined(BEEPER) && BEEPER > -1 SET_OUTPUT(BEEPER); WRITE(BEEPER,HIGH); delay(3); WRITE(BEEPER,LOW); delay(3); - } + #else + lcd_buzz(1000/6,100); #endif + } } //return to normal diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index dafd2502a..2dae90a5d 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -946,6 +946,13 @@ void lcd_buttons_update() lastEncoderBits = enc; } +void lcd_buzz(long duration, uint16_t freq) +{ +#ifdef LCD_USE_I2C_BUZZER + lcd.buzz(duration,freq); +#endif +} + bool lcd_clicked() { return LCD_CLICKED; diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index d84c948bb..ed9c10978 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -34,6 +34,8 @@ extern int absPreheatHPBTemp; extern int absPreheatFanSpeed; + void lcd_buzz(long duration,uint16_t freq); + bool lcd_clicked(); #else //no lcd @@ -42,6 +44,7 @@ FORCE_INLINE void lcd_setstatus(const char* message) {} FORCE_INLINE void lcd_buttons_update() {} FORCE_INLINE void lcd_reset_alert_level() {} + FORCE_INLINE void lcd_buzz(long duration,uint16_t freq) {} #define LCD_MESSAGEPGM(x) #define LCD_ALERTMESSAGEPGM(x)