water change build

Do you have a question on how to do something.
Ask in here.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: water change build

Post 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);
    }

  }
Roberto.
tyson_mitchell_88
Posts: 80
Joined: Thu Nov 05, 2015 2:45 pm
Location: Australia

Re: water change build

Post 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;
      }
    }
Image
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: water change build

Post 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 :)
Post Reply