breathColorMode.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *   http://www.apache.org/licenses/LICENSE-2.0
00009 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 
00018 #ifndef BREATHCOLORMODE_H
00019 #define BREATHCOLORMODE_H
00020 
00021 #include <mode.h>
00022 
00023 class BreathColorMode : public Mode
00024 {
00025 public:
00026         BreathColorMode(color::rgba color, int priority = 0, double freq = 0.25, int pulses = 0, double timeout = 0)
00027                 :Mode(priority, freq, pulses, timeout), _timer_inc(0.0)
00028         {
00029                 _color = color;
00030                 h = 0.0;
00031                 _inc = ((M_PI*2) / UPDATE_RATE_HZ) * _freq;
00032         }
00033 
00034         void execute()
00035         {
00036                 float r = 0;
00037                 float g = 0;
00038                 float b = 0;
00039 
00040                 color::Color::hsv2rgb(h, 1.0, 1.0, r, g, b);
00041 
00042                 h += 0.001;
00043                 if(h > 1.0) h = 0.0;
00044 
00045                 //double fV = (exp(sin(_timer_inc))-1.0/M_E)*(1.000/(M_E-1.0/M_E));
00046                 double fV = (exp(sin(_timer_inc))-0.36787944)*0.42545906411;
00047 
00048                 _timer_inc += _inc;
00049                 if(_timer_inc >= M_PI*2)
00050                 {
00051                         _timer_inc = 0.0;
00052                         _pulsed++;
00053                 }
00054 
00055                 color::rgba col;
00056                 col.r = r;
00057                 col.g = g;
00058                 col.b = b;
00059                 col.a = fV;
00060 
00061                 m_sigColorReady(col);
00062         }
00063 
00064         std::string getName(){ return std::string("BreathColorMode"); }
00065 
00066 private:
00067         double _timer_inc;
00068         double _inc;
00069         float h;
00070 };
00071 
00072 #endif


cob_light
Author(s): Benjamin Maidel
autogenerated on Sat Jun 8 2019 21:02:07