@ -13,6 +13,7 @@
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
*/
# include <math.h>
# include <avr/eeprom.h>
# include <avr/eeprom.h>
# include <avr/interrupt.h>
# include <avr/interrupt.h>
# include <util/delay.h>
# include <util/delay.h>
@ -465,13 +466,17 @@ void rgblight_task(void) {
void rgblight_effect_breathing ( uint8_t interval ) {
void rgblight_effect_breathing ( uint8_t interval ) {
static uint8_t pos = 0 ;
static uint8_t pos = 0 ;
static uint16_t last_timer = 0 ;
static uint16_t last_timer = 0 ;
float val ;
if ( timer_elapsed ( last_timer ) < pgm_read_byte ( & RGBLED_BREATHING_INTERVALS [ interval ] ) ) {
if ( timer_elapsed ( last_timer ) < pgm_read_byte ( & RGBLED_BREATHING_INTERVALS [ interval ] ) ) {
return ;
return ;
}
}
last_timer = timer_read ( ) ;
last_timer = timer_read ( ) ;
rgblight_sethsv_noeeprom ( rgblight_config . hue , rgblight_config . sat , pgm_read_byte ( & LED_BREATHING_TABLE [ pos ] ) ) ;
// http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/
val = ( exp ( sin ( ( pos / 255.0 ) * M_PI ) ) - RGBLIGHT_EFFECT_BREATHE_CENTER / M_E ) * ( RGBLIGHT_EFFECT_BREATHE_MAX / ( M_E - 1 / M_E ) ) ;
rgblight_sethsv_noeeprom ( rgblight_config . hue , rgblight_config . sat , val ) ;
pos = ( pos + 1 ) % 256 ;
pos = ( pos + 1 ) % 256 ;
}
}
void rgblight_effect_rainbow_mood ( uint8_t interval ) {
void rgblight_effect_rainbow_mood ( uint8_t interval ) {