Funktion mit mehreren instanzen

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.