Sorry gfvalvo , I though I corrected actually I did not.
After replacing =with == inside my statement, the relay stay on all the time other than turning off at different time.
//this class is made to control relay on and off as timing based(non blocking delay methods)
// created on Jan14 2018 for use on my greenhouse control
class TimeRelay
//*************************************************time relay**************************************************************
{
private:
int _pinRelay;// which pin is used
bool _onState;// 0 for low level triggered, 1 for high level triggered
int _mode;// choose 1 for now for off delay(turn relay on for XX second and turn it off)
int _onTime;// duration in millisecond when powered on(receive 0 for low triggered and vise versa)
int _offTime;// not use for now
int _repeat;// 0 for 1 cycle,
unsigned long _currentMillis;
bool _relayPickedup ;
public:
TimeRelay(int pinRelay, bool onState, int mode, int onTime, int offTime, int repeat)
{
_pinRelay = pinRelay;
_onState = onState;
_mode = mode;
_onTime = onTime;
_offTime = offTime;
_repeat = repeat;
pinMode(_pinRelay, OUTPUT);
//digitalWrite(_pinRelay, !_onState);
// _relayPickedup = false;
}
int offDelay ()// return the countdown number in second for LCD display
{
// if relay has not been picked up then turn it on, until timeout(onTime)
//relay only needs to get energized up once during the onTime period;
if (_relayPickedup == false)
{
_currentMillis = millis();
digitalWrite(_pinRelay, _onState);
_relayPickedup == true;
}
// Serial.println(millis());
if (_onTime + _currentMillis >= millis())
{
/* if ( ((_currentMillis + _onTime ) - millis()) % 1000 == 0)
{
int a = (_onTime - ((_currentMillis + _onTime) - millis()) / 1000); // returns a countdown in second for lcd display
return a;
// Serial.println((a), '\n');
}
*/
}
else // timeout.
{
digitalWrite(_pinRelay, !_onState); //relay deenergized
}
}
};//end of class
TimeRelay k1(4, 0, 1, 10000, 10, 0);
TimeRelay k2(5, 0, 1, 8000, 10, 0);
TimeRelay k3(6, 0, 1, 6000, 10, 0);
TimeRelay k4(7, 0, 1, 11000, 10, 0);
//Flasher f1(13,100,100);
//Flasher f2(7,11100,3000);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // serial / USB port
}
void loop() {
// put your main code here, to run repeatedly:
k1.offDelay();
k2.offDelay();
k3.offDelay();
//k4.offDelay();
// f1.Update();
//f2.Update();
//Serial.println((a), '\n');
}