#define ena 6
#define pulse1 2
#define pulse2 3
#define pulse3 4
#define pulse4 5
#define manual_1 8
#define manual_2 9
#define manual_3 10
#define manual_4 11
#define Enable 13
#define Disable 12
#define k1 7
int uSec = 1250;
long pulPerDose_1 = 2000;
long pulPerDose_2 = 2000;
long pulPerDose_3 = 2000;
long pulPerDose_4 = 2000;
int seq;
void setup() {
// Sets the two pins as Outputs
pinMode(ena,OUTPUT);
pinMode(pulse1,OUTPUT);
pinMode(pulse2,OUTPUT);
pinMode(pulse3,OUTPUT);
pinMode(pulse4,OUTPUT);
pinMode(k1,OUTPUT);
pinMode(Enable, INPUT_PULLUP);
pinMode(Disable, INPUT_PULLUP);
pinMode(manual_1, INPUT);
pinMode(manual_2, INPUT);
pinMode(manual_3, INPUT);
pinMode(manual_4, INPUT);
digitalWrite(k1, LOW);
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
delay(1000);
digitalWrite(ena, HIGH);
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
digitalWrite(16, HIGH);
delay(1000);
seq = 6;
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
delay(1000);
}
void loop() {
// Dissable
while(seq == 0) {
digitalWrite(ena, HIGH);
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
digitalWrite(k1, HIGH);
if(digitalRead(Enable) == LOW) {
seq = 5;
delay(1000);
}
}
// Dosing pump 1
while(seq == 1) {
delay(1000);
digitalWrite(ena, LOW);
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(k1, HIGH);
for(long x = 0; x < pulPerDose_1; x++) {
digitalWrite(pulse1,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse1,LOW);
delayMicroseconds(uSec);
if(digitalRead(Disable) == LOW) {
digitalWrite(ena, HIGH);
seq = 0;
delay(10);
break;
}
}
delay(500);
digitalWrite(ena, HIGH);
if(seq == 0) {
seq = 0;
}
else {
seq = 2;
}
}
// Dosing pump 2
while(seq == 2) {
delay(1000);
digitalWrite(ena, LOW);
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(k1, HIGH);
for(long x = 0; x < pulPerDose_2; x++) {
digitalWrite(pulse2,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse2,LOW);
delayMicroseconds(uSec);
if(digitalRead(Disable) == LOW) {
digitalWrite(ena, HIGH);
seq = 0;
delay(10);
break;
}
}
delay(500);
digitalWrite(ena, HIGH);
if(seq == 0) {
seq = 0;
}
else {
seq = 3;
}
}
// Dosing pump 3
while(seq == 3) {
delay(1000);
digitalWrite(ena, LOW);
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(k1, HIGH);
for(long x = 0; x < pulPerDose_3; x++) {
digitalWrite(pulse3,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse3,LOW);
delayMicroseconds(uSec);
if(digitalRead(Disable) == LOW) {
digitalWrite(ena, HIGH);
seq = 0;
delay(10);
break;
}
}
delay(500);
digitalWrite(ena, HIGH);
if(seq == 0) {
seq = 0;
}
else {
seq = 4;
}
}
// Dosing pump 4
while(seq == 4) {
delay(1000);
digitalWrite(ena, LOW);
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(k1, HIGH);
for(long x = 0; x < pulPerDose_4; x++) {
digitalWrite(pulse4,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse4,LOW);
delayMicroseconds(uSec);
if(digitalRead(Disable) == LOW) {
digitalWrite(ena, HIGH);
seq = 0;
delay(10);
break;
}
}
delay(500);
digitalWrite(ena, HIGH);
if(seq == 0) {
seq = 0;
}
else {
seq = 5;
}
}
// Enable hold
while(seq == 5) {
digitalWrite(14, LOW);
digitalWrite(15, LOW);
digitalWrite(16, HIGH);
digitalWrite(k1, LOW);
if(digitalRead(Enable) == LOW) {
seq = 5;
}
else if(digitalRead(Enable) == HIGH) {
seq = 6;
delay(1000);
}
}
// Manual
if(seq == 6) {
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(k1, LOW);
if(digitalRead(Enable) == LOW) {
seq = 1;
}
delay(20);
if(digitalRead(Disable) == LOW) {
seq = 0;
}
delay(20);
while(digitalRead(manual_1) == HIGH) {
digitalWrite(ena, LOW);
delay(10);
for(long x = 0; x < 25; x++) {
digitalWrite(pulse1,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse1,LOW);
delayMicroseconds(uSec);
}
}
if(digitalRead(manual_1) == LOW) {
digitalWrite(ena, HIGH);
}
while(digitalRead(manual_2) == HIGH) {
digitalWrite(ena, LOW);
delay(10);
for(long x = 0; x < 25; x++) {
digitalWrite(pulse2,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse2,LOW);
delayMicroseconds(uSec);
}
}
if(digitalRead(manual_2) == LOW) {
digitalWrite(ena, HIGH);
}
while(digitalRead(manual_3) == HIGH) {
digitalWrite(ena, LOW);
delay(10);
for(long x = 0; x < 25; x++) {
digitalWrite(pulse3,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse3,LOW);
delayMicroseconds(uSec);
}
}
if(digitalRead(manual_3) == LOW) {
digitalWrite(ena, HIGH);
}
while(digitalRead(manual_4) == HIGH) {
digitalWrite(ena, LOW);
delay(10);
for(long x = 0; x < 25; x++) {
digitalWrite(pulse4,HIGH);
delayMicroseconds(uSec);
digitalWrite(pulse4,LOW);
delayMicroseconds(uSec);
}
}
if(digitalRead(manual_4) == LOW) {
digitalWrite(ena, HIGH);
}
}
}