mir fehlt die Erfahrung, wie man hier am besten postet, sry.
Wenn ich nun in meinem *.cpp File Variablen statisch definieren will, also so, dass der Wert über einen Programmverlauf behalten wird, wie gehe ich nun vor?
*.h File:
#ifndef SystemTools_h
#define SystemTools_h
#include <Arduino.h>
class SystemTools{
private:
unsigned long _onOffCountB;
unsigned long _onOffCountB_Tmp;
unsigned long _ET;
bool _startTmp;
unsigned long _onOffCountP;
unsigned long _onOffCountP_Tmp;
public:
SystemTools()
{
bool R_Trigg(bool start);
bool TimerOnDelay (bool start, unsigned long PT,unsigned long TimeStamp);
bool Blink (unsigned long PtHalf,unsigned long TimeStamp);
bool BlinkPulse (unsigned long PtHalf,unsigned long TimeStamp);
};
// ++++++++++++++++++ raising edge ++++++++++++++++++++++++++++
bool R_Trigg(bool start);
// +++++++++++++++++++++++++ Timer On Delay +++++++++++++++++++++++
bool TimerOnDelay (bool start, unsigned long PT,unsigned long TimeStamp);
// +++++++++++++++++++++++++ Blink +++++++++++++++++++++++
bool Blink (unsigned long PtHalf,unsigned long TimeStamp);
// +++++++++++++++++++++++++ Blink Pulse+++++++++++++++++++++++
bool BlinkPulse (unsigned long PtHalf,unsigned long TimeStamp);
};
#endif
*.cpp File
#include <Arduino.h>
#include <SystemTools.h>
// ++++++++++++++++++ Constructor ++++++++++++++++++++++++++++
//SystemTools::SystemTools();
// ++++++++++++++++++ raising edge ++++++++++++++++++++++++++++
bool SystemTools::R_Trigg(bool start)
{
if (!start){
_startTmp = false;
return false;
}
if (start &! _startTmp){
_startTmp = true;
return true;
}
else
{
return false;
}
}
// +++++++++++++++++++++++++ Timer On Delay +++++++++++++++++++++++
bool SystemTools::TimerOnDelay (bool start, unsigned long PT,unsigned long TimeStamp){
if (R_Trigg(start)){
_ET = TimeStamp;
}
if(!start) {return false;}
return ( (_ET+PT) < (TimeStamp) ) ? true : false;
}
// +++++++++++++++++++++++++ Blink +++++++++++++++++++++++
bool SystemTools::Blink (unsigned long PtHalf,unsigned long TimeStamp){
if (TimerOnDelay(_onOffCountB == _onOffCountB_Tmp, PtHalf/2, TimeStamp ) )
{
_onOffCountB++;
}
else{
_onOffCountB_Tmp = _onOffCountB;
}
if(_onOffCountB%2){
return true;
}
return false;
}
// +++++++++++++++++++++++++ Blink Pulse+++++++++++++++++++++++
bool SystemTools::BlinkPulse (unsigned long PtHalf,unsigned long TimeStamp){
if (TimerOnDelay(_onOffCountP == _onOffCountP_Tmp, PtHalf/2, TimeStamp ) )
{
_onOffCountP_Tmp++;
}
else{
_onOffCountP_Tmp = _onOffCountP;
return true;
}
return false;
}
ich hoffe so ist es nun plausibler.