#include <elapsedMillis.h>
elapsedMillis timeElapsed; //declare global if you don't want it reset every time loop runs
elapsedMillis output1_timer;
elapsedMillis cycleElapsed;
//-----------------------------------------
int motor[6] = {13,12,11,10,9,8};
int cycle_count = 0;
//////////////door timing variable's /////////////////////
int doorOpening = 2;
int opening = doorOpening*1000;
int doorHoldOnOpen = 6;
int openHold = doorHoldOnOpen*1000;
int doorClosing = 2;
int closing = doorClosing*1000;
int first_door_timing = opening + openHold + closing;
int sub_door_timing = openHold + closing;
//////////////////////////////////////////////////////
//
unsigned long delayAfterCycle = 5000;
int motorDone = 0;
int motorSel = 1;
/////////////////////////////SETUP/////////////////////
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600);
for(int i = 0; i > 12; i++){
pinMode(motor[i], OUTPUT);
}
for(int i = 0; i > 12; i++){
analogWrite(motor[i], 0);
}
}
////////////////////////Main loop//////////////////////////
void loop() {
if(timeElapsed >= 1000){
char buffer[50];
sprintf(buffer, "TOutput Time: %d %d cycle timing %d %d cycle count %d", output1_timer/1000, cycleElapsed/1000,cycle_count);
Serial.println(buffer);
timeElapsed = 0;
}
if (output1_timer <= opening && motorDone == 0) {
digitalWrite(motor[motorDone], HIGH);
}
if (output1_timer >= opening && output1_timer <= (openHold+opening) && motorDone == 0) {
digitalWrite(motor[motorDone], LOW);
}
if (output1_timer >= (openHold+opening) && output1_timer <= ((openHold+opening)+closing) && motorDone == 0) {
digitalWrite(motor[motorDone], HIGH);
digitalWrite(motor[motorDone+1], HIGH);
//second door start opening when first start closing
}
////////////////////
if (output1_timer >= openHold && output1_timer <= (openHold+closing) && motorDone >= 1) {
digitalWrite(motor[motorDone], HIGH);
digitalWrite(motor[motorDone+1], HIGH);
//second door start opening when first start closing
}
//////////////////////////
if (output1_timer >= first_door_timing) {
digitalWrite(motor[motorDone], LOW);
digitalWrite(motor[motorDone+1], LOW);
//door 1 and 2 stop, door 1 is closed position, door 2 is on open position
motorDone++;
output1_timer = 0;
}
///////////////
if (output1_timer >= openHold+closing && motorDone >= 1) {
digitalWrite(motor[motorDone], LOW);
digitalWrite(motor[motorDone+1], LOW);
//door 1 and 2 stop, door 1 is closed position, door 2 is on open position
motorDone++;
output1_timer = 0;
}
//////////////////////////
if(motorDone >= motorSel){
output1_timer = 0;
}
int i;
i = motorSel - 1;
if(cycleElapsed >= (first_door_timing+(sub_door_timing * i))+delayAfterCycle){
motorDone = 0;
output1_timer = 0;
cycleElapsed = 0;
cycle_count++;
}
}