From 7f57f28ccc2c5ea7965aa53a8d137b87d506e9be Mon Sep 17 00:00:00 2001 From: Robert F-C Date: Mon, 29 Apr 2013 21:50:52 +1000 Subject: [PATCH] Add lcd_buzz function to ultralcd.h so that non-LCD code can make use of lcd's buzzer. Argument order of lcd_buzz was set to mirror that on tone(). Change default M300 frequency to something audible. --- Marlin/Marlin_main.cpp | 20 +++++++++++++------- Marlin/ultralcd.cpp | 7 +++++++ Marlin/ultralcd.h | 3 +++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 875795f7df..abe27d32b3 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 dafd2502aa..2dae90a5d4 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 d84c948bbf..ed9c10978a 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)