New to programing need help with arduino uno based cycle timer relay box

Hi guys, I have a project enclosure with 8 power outlets. inside is a sainsmart 8 relay module and an arduino uno. Hardware works now i am stuck on the sketch. Now i don't have an RTC yet. but i was wandering if there is a way around this if I were to wright on off cycles for each relay channel in a 24 hour schedule and just made the loop 24 hours. I just need to be able to schedule timed on off cycles in seconds, minutes, hours. For each of the 8 relay channels. Here is my first attempt at writing code. It is one 4 hour cycle. It works fine but when i copy and paste to make it a 24 hour day it does all sorts of unplanned events. also what seem like freezes and glitches causing the power in the channels to go off schedule.

// 8-channel Relay Board
// This board is active HIGH 

/*-----( Import needed libraries )-----*/
/*-----( Declare Constants )-----*/
#define RELAY_ON 0
#define RELAY_OFF 1

#define PpkPumps  4  // Arduino Digital I/O pin number
#define Air  5
#define Purge  6
#define CircFan  7
#define Lights  8  
#define PurgeFan  9
#define Relay_7  10
#define Relay_8  11
/*-----( Declare objects )-----*/
/*-----( Declare Variables )-----*/
int waittime; // Delay between changes
void setup()   /****** SETUP: RUNS ONCE ******/
{
  waittime = 1000;
//-------( Initialize Pins so relays are inactive at reset)----
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);  
  digitalWrite(Lights, RELAY_OFF);
  digitalWrite(PurgeFan, RELAY_OFF);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);  
  
  
//---( THEN set pins as outputs )----  
  pinMode(PpkPumps, OUTPUT);   
  pinMode(Air, OUTPUT);  
  pinMode(Purge, OUTPUT);  
  pinMode(CircFan, OUTPUT);    
  pinMode(Lights, OUTPUT);   
  pinMode(PurgeFan, OUTPUT);  
  pinMode(Relay_7, OUTPUT);  
  pinMode(Relay_8, OUTPUT);
  delay(1000); //Check that all relays are inactive at Reset

}//--(end setup )---


void loop()   
{
  //          1
  
  digitalWrite(PpkPumps, RELAY_ON);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(80000); //80 seconds ppk fill
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000);// 20 min just air
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_ON);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000); //20 min air and circfan
  
  digitalWrite(PpkPumps, RELAY_ON);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(80000); //80 seconds ppk fill
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000);// 20 min just air
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_ON);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000); //20 min air and circfan
  
  digitalWrite(PpkPumps, RELAY_ON);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(80000); //100 seconds ppk fill
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000);// 20 min just air
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_ON);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000); //20 min air and circfan
  
  digitalWrite(PpkPumps, RELAY_ON);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(80000); //100 seconds ppk fill
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000);// 20 min just air
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_ON);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000); //20 min air and circfan
  
  digitalWrite(PpkPumps, RELAY_ON);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(80000); //100 seconds ppk fill
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000);// 20 min just air
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_ON);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1200000); //20 min air and circfan
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_OFF);
  digitalWrite(Purge, RELAY_ON);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(600000); // 10 min purge ppk
  
  digitalWrite(PpkPumps, RELAY_OFF);
  digitalWrite(Air, RELAY_ON);
  digitalWrite(Purge, RELAY_OFF);
  digitalWrite(CircFan, RELAY_OFF);
  digitalWrite(Lights, RELAY_ON);
  digitalWrite(PurgeFan, RELAY_ON);
  digitalWrite(Relay_7, RELAY_OFF);
  digitalWrite(Relay_8, RELAY_OFF);
  delay(1400000);// 21.6 min just air

but i was wandering if there is a way around this if I were to wright on off cycles for each relay channel in a 24 hour schedule and just made the loop 24 hours.

You can use the Time library to know what time it is relative to some defined time (or time obtained from some external source, like a PC).

Do NOT even consider making loop() take 24 hours to complete. On each iteration of loop(), see if it is time to do something. If so, do it and move on. If not, just move on.

Sorry if i sound ignorant (I'm new to this). But, do you think you could give me an example as it pertains to my application. I don't exactly know how to setup() that. Thanks in advance for any guidance.

Sorry if i sound ignorant (I'm new to this)

There are plenty of examples delivered with the Time library. Surely one of them provided some hints, at least.

How will you tell the Arduino what time it is now (each time it starts up), so that it can keep track of passing time and determine the correct time sometime later?

So looking at the Time and TimeAlarm libraries. Can I set an Alarm.alarmRepeat for an "ON" time and another for an "OFF" time, for each Relay channel? So can i say every 40 minutes turn this channel on for 1 min 20 seconds? While simultaneously doing similar schedules for each of the other channels without them interfering. After of course setting the "now" time at power up.

Can I set an Alarm.alarmRepeat for an "ON" time and another for an "OFF" time, for each Relay channel?

Without changing the library, you can only have 6 alarms. With some changes, if you have enough memory, yes, you could.

So can i say every 40 minutes turn this channel on for 1 min 20 seconds?

You need to turn it off, too. That could be done by setting a flag and recording the on time, and then, using the blink without delay philosophy, determining when it is time to turn it off, and then doing so.

After of course setting the "now" time at power up.

That is going to be the hardest part.

I would suggest you read up on the lovely millis() function.

You will have greater accuracy and reliability using millis() instead of delay().

Using delay() has a (usually not intended) sideeffect - the Arduino does nothing for that while.
To get two or more "actions" to run independent of each other, you can not use delay().

http://playground.arduino.cc/Code/AvoidDelay

Happy Programming!