Kaynağa Gözat

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.
Robert F-C 12 yıl önce
ebeveyn
işleme
7f57f28ccc
3 değiştirilmiş dosya ile 23 ekleme ve 7 silme
  1. 13
    7
      Marlin/Marlin_main.cpp
  2. 7
    0
      Marlin/ultralcd.cpp
  3. 3
    0
      Marlin/ultralcd.h

+ 13
- 7
Marlin/Marlin_main.cpp Dosyayı Görüntüle

@@ -1446,16 +1446,20 @@ void process_commands()
1446 1446
     }
1447 1447
     break;
1448 1448
     
1449
-    #if defined(LARGE_FLASH) && LARGE_FLASH == true && defined(BEEPER) && BEEPER > -1
1449
+    #if defined(LARGE_FLASH) && LARGE_FLASH == true
1450 1450
     case 300: // M300
1451 1451
     {
1452
-      int beepS = 1;
1452
+      int beepS = 400;
1453 1453
       int beepP = 1000;
1454 1454
       if(code_seen('S')) beepS = code_value();
1455 1455
       if(code_seen('P')) beepP = code_value();
1456
-      tone(BEEPER, beepS);
1457
-      delay(beepP);
1458
-      noTone(BEEPER);
1456
+      #if defined(BEEPER) && BEEPER > -1
1457
+        tone(BEEPER, beepS);
1458
+        delay(beepP);
1459
+        noTone(BEEPER);
1460
+      #elif defined(ULTRALCD)
1461
+        lcd_buzz(beepS, beepP);
1462
+      #endif
1459 1463
     }
1460 1464
     break;
1461 1465
     #endif // M300
@@ -1672,17 +1676,19 @@ void process_commands()
1672 1676
           manage_inactivity();
1673 1677
           lcd_update();
1674 1678
           
1675
-          #if BEEPER > -1
1676 1679
           if(cnt==0)
1677 1680
           {
1681
+          #if defined(BEEPER) && BEEPER > -1
1678 1682
             SET_OUTPUT(BEEPER);
1679 1683
             
1680 1684
             WRITE(BEEPER,HIGH);
1681 1685
             delay(3);
1682 1686
             WRITE(BEEPER,LOW);
1683 1687
             delay(3);
1684
-          }
1688
+          #else 
1689
+            lcd_buzz(1000/6,100);
1685 1690
           #endif
1691
+          }
1686 1692
         }
1687 1693
         
1688 1694
         //return to normal

+ 7
- 0
Marlin/ultralcd.cpp Dosyayı Görüntüle

@@ -946,6 +946,13 @@ void lcd_buttons_update()
946 946
     lastEncoderBits = enc;
947 947
 }
948 948
 
949
+void lcd_buzz(long duration, uint16_t freq)
950
+{ 
951
+#ifdef LCD_USE_I2C_BUZZER
952
+  lcd.buzz(duration,freq);
953
+#endif   
954
+}
955
+
949 956
 bool lcd_clicked() 
950 957
 { 
951 958
   return LCD_CLICKED;

+ 3
- 0
Marlin/ultralcd.h Dosyayı Görüntüle

@@ -34,6 +34,8 @@
34 34
   extern int absPreheatHPBTemp;
35 35
   extern int absPreheatFanSpeed;
36 36
     
37
+  void lcd_buzz(long duration,uint16_t freq);
38
+
37 39
   bool lcd_clicked();
38 40
 
39 41
 #else //no lcd
@@ -42,6 +44,7 @@
42 44
   FORCE_INLINE void lcd_setstatus(const char* message) {}
43 45
   FORCE_INLINE void lcd_buttons_update() {}
44 46
   FORCE_INLINE void lcd_reset_alert_level() {}
47
+  FORCE_INLINE void lcd_buzz(long duration,uint16_t freq) {}
45 48
 
46 49
   #define LCD_MESSAGEPGM(x) 
47 50
   #define LCD_ALERTMESSAGEPGM(x) 

Loading…
İptal
Kaydet