Update:
Project electronics and hardware are completed and working well.
My huge problem was the control program, and despite all the help given here and time spent trying to decipher the suggested sketch approaches, I gave up. Just can't break through on the C++ stuff.
But I can use Excel very well...ha...lightbulb went on. Wrote the whole thing in a spreadsheet with copy and paste, cumulative time and event time tracking, cascading autofill, etc. Even used columns to generate proper sketch format. Easy for me vs a complex sketch.
Ugly, but works perfectly.
All I need to do now for any future timing changes is update one gun on the spreadsheet and everything auto-fills and recalculates automatically. Then just copy and paste for Arduino. The actual output sketch is abysmal...mishmash use of delays, repetitive code lines, etc...but works for me.
Thank you again for your help. Sorry, just couldn't grasp the sketch approach.
The sketch, as copied from the spreadsheet, is attached for your chuckles.
//Syren 9 e-Gun Sequential Firing
//Ver 21.04.17 New for Mega 2560 Pro Mini
//System activation: 12V power "on" by R/C Tx, start sketch by 7.5V power "on" to board, end sequence by board power "off", 12V power "off"
//Sketch includes 7.6hr delay at end to essentially terminate operation, since max system use time is 3 -4hrs.
// Sketch restarted as desired by re-powering board.
//A spreadsheet is formatted to change total sketch sequence by changing only Gun 1 variables.
//Spreadsheet is formatted to copy directly into sketch format (sloppy, but correct)
void setup()
{
pinMode(2, OUTPUT); //HEAT for gun #1, pins 2-10 (gun heat 1-9)
pinMode(3, OUTPUT); //gun #2
pinMode(4, OUTPUT); //gun #3 etc
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT); //LED flash for gun #1, pins 22-30(LED flash 1-9)
pinMode(13, OUTPUT); // Note: board LED flash on startup will flash Gun 2 LED - will indicate sequence start
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT); // Main valve to air manifold
pinMode(22, OUTPUT); //AIR for gun #1, pins 12-20 (air burst 1-9)
pinMode(23, OUTPUT);
pinMode(24, OUTPUT);
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
pinMode(28, OUTPUT);
pinMode(29, OUTPUT);
pinMode(30, OUTPUT);
}
void loop()
{
//external power to board (7.5VDC) switched "on" by R/C to start the following sketch sequence
digitalWrite (21, HIGH); // turn on main air solenoid to manifold
// Guns 1-4 pre-heat
digitalWrite(2, HIGH); // heat 1 on
delay (1800) ; //change only this line for event start interval
digitalWrite(3, HIGH); //heat 2 on
delay (1800) ;
digitalWrite(4, HIGH); //heat 3 on
delay (1800) ;
digitalWrite(5, HIGH); //heat 4 on
// Gun 1
delay (1600) ; //preheat timing trimmer
digitalWrite(22, HIGH); //air 1 on
delay (100) ; //change this line only for air burst time trim
digitalWrite(2, LOW); // heat 1 off
digitalWrite(12, HIGH); //flash sequence 1 begins
delay (100) ;
digitalWrite(6, HIGH); //heat 5 on
digitalWrite(12, LOW);
delay (40) ; //change only gun 1 flash times to effect all guns
digitalWrite(12, HIGH);
delay (75) ;
digitalWrite(12, LOW);
delay (30) ;
digitalWrite(12, HIGH);
delay (75) ;
digitalWrite(12, LOW); //flash seq. ends
delay (200) ;
digitalWrite(22, LOW); // air 1 off
// Gun 2
delay (1180) ; //auto generated timing trimmer, guns 2-9
digitalWrite(23, HIGH); //air 2 on
delay (100) ;
digitalWrite(3, LOW); // heat 2 off
digitalWrite(13, HIGH); //flash sequence 2 begins
delay (100) ;
digitalWrite(7, HIGH); // heat 6 on
digitalWrite(13, LOW);
delay (40) ;
digitalWrite(13, HIGH);
delay (75) ;
digitalWrite(13, LOW);
delay (30) ;
digitalWrite(13, HIGH);
delay (75) ;
digitalWrite(13, LOW); //flash seq. ends
delay (200) ;
digitalWrite(23, LOW); // air 2 off
// Gun3
delay (1180) ;
digitalWrite(24, HIGH); //air 3 on
delay (100) ;
digitalWrite(4, LOW); // heat 3 off
digitalWrite(14, HIGH); //flash sequence3 begins
delay (100) ;
digitalWrite(8, HIGH); // heat 7 on
digitalWrite(14, LOW);
delay (40) ;
digitalWrite(14, HIGH);
delay (75) ;
digitalWrite(14, LOW);
delay (30) ;
digitalWrite(14, HIGH);
delay (75) ;
digitalWrite(14, LOW); //flash seq. ends
delay (200) ;
digitalWrite(24, LOW); // air 3 off
// Gun 4
delay (1180) ;
digitalWrite(25, HIGH); //air4 on
delay (100) ;
digitalWrite(5, LOW); // heat 4 off
digitalWrite(15, HIGH); //flash sequence 4 begins
delay (100) ;
digitalWrite(9, HIGH); // heat 8 on
digitalWrite(15, LOW);
delay (40) ;
digitalWrite(15, HIGH);
delay (75) ;
digitalWrite(15, LOW);
delay (30) ;
digitalWrite(15, HIGH);
delay (75) ;
digitalWrite(15, LOW); //flash seq. ends
delay (200) ;
digitalWrite(25, LOW); // air 4 off
// Gun 5
delay (1180) ;
digitalWrite(26, HIGH); //air 5 on
delay (100) ;
digitalWrite(6, LOW); // heat 5 off
digitalWrite(16, HIGH); //flash sequence 5 begins
delay (100) ;
digitalWrite(10, HIGH); // heat 9 on
digitalWrite(16, LOW);
delay (40) ;
digitalWrite(16, HIGH);
delay (75) ;
digitalWrite(16, LOW);
delay (30) ;
digitalWrite(16, HIGH);
delay (75) ;
digitalWrite(16, LOW); //flash seq. ends
delay (200) ;
digitalWrite(26, LOW); // air 5 off
// Gun 6
delay (1180) ;
digitalWrite(27, HIGH); //air6 on
delay (100) ;
digitalWrite(7, LOW); // heat 6 off
digitalWrite(17, HIGH); //flash sequence 6 begins
delay (100) ;
digitalWrite(17, LOW);
delay (40) ;
digitalWrite(17, HIGH);
delay (75) ;
digitalWrite(17, LOW);
delay (30) ;
digitalWrite(17, HIGH);
delay (75) ;
digitalWrite(17, LOW); //flash seq. ends
delay (200) ;
digitalWrite(27, LOW); // air 6 off
// Gun 7
delay (1180) ;
digitalWrite(28, HIGH); //air 7 on
delay (100) ;
digitalWrite(8, LOW); // heat 7 off
digitalWrite(18, HIGH); //flash sequence 7 begins
delay (100) ;
digitalWrite(18, LOW);
delay (40) ;
digitalWrite(18, HIGH);
delay (75) ;
digitalWrite(18, LOW);
delay (30) ;
digitalWrite(18, HIGH);
delay (75) ;
digitalWrite(18, LOW); //flash seq. ends
delay (200) ;
digitalWrite(28, LOW); // air 7 off
// Gun 8
delay (1180) ;
digitalWrite(29, HIGH); //air 8 on
delay (100) ;
digitalWrite(9, LOW); // heat 8 off
digitalWrite(19, HIGH); //flash sequence 8 begins
delay (100) ;
digitalWrite(19, LOW);
delay (40) ;
digitalWrite(19, HIGH);
delay (75) ;
digitalWrite(19, LOW);
delay (30) ;
digitalWrite(19, HIGH);
delay (75) ;
digitalWrite(19, LOW); //flash seq. ends
delay (200) ;
digitalWrite(29, LOW); // air 8 off
// Gun 9
delay (1180) ;
digitalWrite(30, HIGH); //air9 on
delay (100) ;
digitalWrite(10, LOW); // heat 9 off
digitalWrite(20, HIGH); //flash sequence 9 begins
delay (100) ;
digitalWrite(20, LOW);
delay (40) ;
digitalWrite(20, HIGH);
delay (75) ;
digitalWrite(20, LOW);
delay (30) ;
digitalWrite(20, HIGH);
delay (75) ;
digitalWrite(20, LOW); //flash seq. ends
delay (200) ;
digitalWrite(30, LOW); // air 9 off
delay (1000) ;
digitalWrite (21, LOW); // air manifold off
delay(120000UL*200); // Final delay allows 6.7 hrs before firing loop begins again. (120sec*200=24,000*1hr/3600sec=6.7hrs)
// Essentially ends sketch repitition, since total sailing time is much less than 6.7hrs
}
// To repeat firing sequence:
// - turn off board power with R/C switch
// - re-power board with R/C switch