breathMode.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 #ifndef BREATHMODE_H
19 #define BREATHMODE_H
20 
21 #include <mode.h>
22 
23 class BreathMode : public Mode
24 {
25 public:
26  BreathMode(color::rgba color, int priority = 0, double freq = 0.25, int pulses = 0, double timeout = 0)
27  :Mode(priority, freq, pulses, timeout), _timer_inc(0.0)
28  {
29  _color = color;
30  _init_color = color;
31  _inc = ((M_PI*2) / UPDATE_RATE_HZ) * _freq;
32  }
33 
34  void execute()
35  {
36  //double fV = (exp(sin(_timer_inc))-1.0/M_E)*(1.000/(M_E-1.0/M_E));
37  double fV = (exp(-cos(_timer_inc))-0.36787944)*0.42545906411;
38 
39  _timer_inc += _inc;
40  if(_timer_inc >= M_PI*2)
41  {
42  _timer_inc = 0.0;
43  _pulsed++;
44  }
45 
46  _color.a = fV * _init_color.a;
47  _color.a = _color.a > 1 ? 1 : _color.a < 0 ? 0 : _color.a;
48 
50  }
51 
52  std::string getName(){ return std::string("BreathMode"); }
53 
54 private:
55  double _timer_inc;
56  double _inc;
57 };
58 
59 #endif
color::rgba _color
Definition: mode.h:121
Definition: mode.h:26
int _pulsed
Definition: mode.h:119
static const unsigned int UPDATE_RATE_HZ
Definition: mode.h:126
double _inc
Definition: breathMode.h:56
void execute()
Definition: breathMode.h:34
color::rgba _init_color
Definition: mode.h:124
std::string getName()
Definition: breathMode.h:52
double _freq
Definition: mode.h:114
boost::signals2::signal< void(color::rgba color)> m_sigColorReady
Definition: mode.h:128
BreathMode(color::rgba color, int priority=0, double freq=0.25, int pulses=0, double timeout=0)
Definition: breathMode.h:26
double _timer_inc
Definition: breathMode.h:55


cob_light
Author(s): Benjamin Maidel
autogenerated on Wed Apr 7 2021 02:11:39