diff --git a/libraries/beeper/beeper.cpp b/libraries/beeper/beeper.cpp index 8eef1c5..0a70ae9 100644 --- a/libraries/beeper/beeper.cpp +++ b/libraries/beeper/beeper.cpp @@ -157,6 +157,7 @@ void beeper::setVelocity(double velocity) { if( (beepTypeChange && !bst_isset(CLIMBING_ALARM) && !bst_isset(SINKING_ALARM) ) || (startAlarm) ) { beepStartTime = millis(); + beepFreqUpdatePosition = beepStartTime; beepPaternBasePosition = 0.0; beepPaternPosition = 0.0; bst_set(BEEP_NEW_FREQ); //force changing freq @@ -217,6 +218,10 @@ void beeper::setBeepPaternPosition(double velocity) { if( currentLength + beepPaternBasePosition > beepPaternPosition ) { beepPaternPosition = currentLength + beepPaternBasePosition; } + if (currentTime > beepFreqUpdatePosition + CLIMBING_BEEP_FREQ_UPDATE && CLIMBING_BEEP_FREQ_UPDATE > 0) { + bst_set(BEEP_NEW_FREQ); + beepFreqUpdatePosition = currentTime; + } } else { beepPaternPosition = currentLength; } diff --git a/libraries/beeper/beeper.h b/libraries/beeper/beeper.h index 270e641..8a7f5b8 100644 --- a/libraries/beeper/beeper.h +++ b/libraries/beeper/beeper.h @@ -46,6 +46,7 @@ /* climbing beep sound freq computation : BEEP_FREQ_COEFF * velocity + BEEP_BASE_FREQ */ #define CLIMBING_BEEP_BASE_FREQ 386.0 #define CLIMBING_BEEP_FREQ_COEFF 141.0 +#define CLIMBING_BEEP_FREQ_UPDATE 1 // update climbing beep frequency(pitch) after X milliseconds. 0 = monotonous beep, do not update frequency while beep is playing. 1 = pitch changes smoothly every 1ms. more than 1 = pitch changed in steps every X milliseconds. /* climbing beep velocity filter */ /* filteredVelocity = beepVelocity * BEEP_VELOCITY_FILTER_COEFF + BEEP_VELOCITY_FILTER_BASE */ @@ -141,6 +142,7 @@ class beeper { double beepClimbingThreshold; uint8_t volume; unsigned long beepStartTime; + unsigned long beepFreqUpdatePosition; double beepVelocity; double beepFreq; double beepPaternBasePosition;