Page 3 of 3

Re: water change build

Posted: Mon Feb 01, 2016 8:33 pm
by rimai
Try this:

Code: Select all

  static byte stage=255;
  static int LastDisplayedMenu=-1;
  static time_t lastHighATOActive=0;

  if (LastDisplayedMenu!=WATERCHANGE_MODE && ReefAngel.DisplayedMenu==WATERCHANGE_MODE) stage=0;
  LastDisplayedMenu=ReefAngel.DisplayedMenu;
  if (ReefAngel.DisplayedMenu==WATERCHANGE_MODE)
  {   
    if (stage==0)
    {
      ReefAngel.Relay.On(Box1_Port4);
      ReefAngel.Relay.Off(Box1_Port7);
      ReefAngel.Relay.Off(Box1_Port8);
      if (ReefAngel.HighATO.IsActive()) lastHighATOActive=now();
      if (now()-lastHighATOActive>6)
      {
        ReefAngel.Relay.Off(Box1_Port4);
        stage=1;
      }
    }
    if (stage==1)
    {
      ReefAngel.Relay.On(Box1_Port7);
      ReefAngel.Relay.On(Box1_Port8);
      ReefAngel.Relay.On(Box1_Port1);
      if (!ReefAngel.HighATO.IsActive()) lastHighATOActive=now();

      if (now()-lastHighATOActive>6)
      {
        ReefAngel.Relay.Off(Box1_Port1);
        ButtonPress++;
        stage=255;
      }
    }


    int highatostatus=now()-lastHighATOActive;
    ReefAngel.LCD.DrawText(0,255,10,60,"high ato:");
    ReefAngel.LCD.DrawText(0,255,70,60,highatostatus);
    ReefAngel.LCD.DrawText(0,255,10,70,"stage:");
    ReefAngel.LCD.DrawText(0,255,70,70,stage);
    static byte OldTempRelay=0;
    byte TempRelay = ReefAngel.Relay.RelayData;
    TempRelay &= ReefAngel.Relay.RelayMaskOff;
    TempRelay |= ReefAngel.Relay.RelayMaskOn;
    if (TempRelay!=OldTempRelay)
    {
      OldTempRelay=TempRelay;
      ReefAngel.LCD.DrawOutletBox(12, 80, TempRelay);
    }

    TempRelay = ReefAngel.Relay.RelayDataE[0];
    TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
    TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
    if (TempRelay!=OldTempRelay)
    {
      OldTempRelay=TempRelay;
      ReefAngel.LCD.DrawOutletBox(12, 93, TempRelay);
    }

  }

Re: water change build

Posted: Tue Feb 02, 2016 8:41 pm
by tyson_mitchell_88
This is working perfectly for me now, thanks mate.

Thanks lee for all your help too.

Code: Select all

//Waterchange Mode    
   
  static byte stage=255;
  static int LastDisplayedMenu=-1;
  static time_t lastHighATOActive=0;

  if (LastDisplayedMenu!=WATERCHANGE_MODE && ReefAngel.DisplayedMenu==WATERCHANGE_MODE) stage=1;
  LastDisplayedMenu=ReefAngel.DisplayedMenu;
  if (ReefAngel.DisplayedMenu==WATERCHANGE_MODE)
  {   
        
    if (stage==1)
    { 
      ReefAngel.Relay.Off(Box1_Port7);
      ReefAngel.Relay.Off(Box1_Port8);
      ReefAngel.Relay.On(Box1_Port4);      
      if (!ReefAngel.HighATO.IsActive()) 
        ReefAngel.Relay.Off(Box1_Port4);
      if (ReefAngel.HighATO.IsActive()) lastHighATOActive=now();
      if (now()-lastHighATOActive>10)
      {
        ReefAngel.Relay.Off(Box1_Port4);
        stage=2;
      }
    }
  
     if (stage==2)
     { 
      ReefAngel.Relay.On(Box1_Port1);
      if (ReefAngel.HighATO.IsActive()) 
       ReefAngel.Relay.Off(Box1_Port1);
      if (!ReefAngel.HighATO.IsActive()) lastHighATOActive=now(); 
           
      if (now()-lastHighATOActive>30)
      {
        ReefAngel.Relay.Off(Box1_Port1);
        ButtonPress++;
        stage=255;
      }
    }

Re: water change build

Posted: Tue Feb 02, 2016 10:09 pm
by lnevo
Sorry it took so long. Thanks for being a sport and working through it. I'm glad Roberto was able to step in with an elegant solution :)