hello,
I want to run my pumps and solenoid with multiple inputs given at a time for same pump. I want to store it as a buffer and run the next line after the program is finished with first line.
I already have a working program for running pumps and solenoid where after giving a line of input it executes completely then I have to give other line of input.
#include <RCA.h>
#include <textparser.h>
TextParser parser(","); // Delimiter is a comma.
RCA modone;
//modone.Pininit();
int s1 = 22;
int s2 = 23;
int s3 = 24;
int s4 = 25;
int s5 = 26;
int s6 = 27;
int s7 = 28;
int s8 = 29;
int c1 = 30;
int c2 = 31;
int c3 = 32;
int c4 = 33;
int c5 = 34;
int c6 = 35;
int s11 = 36;
int s22 = 37;
int s33 = 38;
int s44 = 39;
int s55 = 40;
int s66 = 41;
int s77 = 42;
int s88 = 43;
int c11 = 44;
int c22 = 45;
int c33 = 46;
int c44 = 47;
int c55 = 48;
int c66 = 49;
int pumpnum, pul, From_Solenoid, To_Solenoid;
unsigned long Delay;
byte pinS;
byte pinC;
byte pinS1;
byte pinC1;
byte on;
byte on1;
//char flag1,flag2;
unsigned long msecLst;
unsigned long interval;
unsigned long msecLst1;
unsigned long interval1;
unsigned long msec;
unsigned long msec1;
//enum { Off = LOW, On = HIGH };
void setup () {
Serial.begin (9600);
modone.PinSetup();
}
void pumpOff (){
if (on) {
if ((msec - msecLst) >= interval){
modone.line1_soff();
on= false;
modone.pump1_off();
modone.sgnled_off();
flag1 = 777;
Serial.println("777(line 1 is done)");
// Serial.println(flag1);
}
}
}
void pumpOff1 (){
if (on1) {
if ((msec1-msecLst1) >= interval1){
modone.line2_soff();
on1= false;
modone.pump2_off();
flag2 = 888;
Serial.println("888(Line 2 Is Done)");
// Serial.println(flag2);
}
}
}
void pumpOn (unsigned long msecTime, int value){
interval = msecTime;
on = true;
modone.pump1_on(value);
if (pinS)
digitalWrite (pinS, HIGH);
if (pinC)
digitalWrite (pinC, HIGH);
on = true;
msecLst = msec;
}
void pumpOn1 (unsigned long msecTime1, byte value1){
interval1 = msecTime1;
on1 = true;
modone.pump2_on(value1);
if (pinS1)
digitalWrite (pinS1, HIGH);
if (pinC1)
digitalWrite (pinC1, HIGH);
on1 = true;
msecLst1 = msec1;
}
void solenoid(int sval){
if(sval == 1){
pinS = s1;
}
else if(sval == 2){
pinS = s2;
}
else if(sval == 3){
pinS = s3;
}
else if(sval == 4){
pinS = s4;
}
else if(sval == 5){
pinS = s5;
}
else if(sval == 6){
pinS = s6;
}
else if(sval == 7){
pinS = s7;
}
else if(sval == 8){
pinS = s8;
}
else {
Serial.println("Select from solenoid");
}
}
void solenoidc(int cval){
if(cval == 1){
pinC = c1;
}
else if(cval == 2){
pinC = c2;
}
else if(cval == 3){
pinC = c3;
}
else if(cval == 4){
pinC = c4;
}
else if(cval == 5){
pinC = c5;
}
else if(cval == 6){
pinC = c6;
}
else {
Serial.println("Select to solenoid");
}
}
void solenoidone(int svalone){
if(svalone == 1){
pinS1 = s11;
}
else if(svalone == 2){
pinS1 = s22;
}
else if(svalone == 3){
pinS1 = s33;
}
else if(svalone == 4){
pinS1 = s44;
}
else if(svalone == 5){
pinS1 = s55;
}
else if(svalone == 6){
pinS1 = s66;
}
else if(svalone == 7){
pinS1 = s77;
}
else if(svalone == 8){
pinS1 = s88;
}
else {
Serial.println("Select from solenoid");
}
}
void solenoidcone(int cvalone){
if(cvalone == 1){
pinC1 = c11;
}
else if(cvalone == 2){
pinC1 = c22;
}
else if(cvalone == 3){
pinC1 = c33;
}
else if(cvalone == 4){
pinC1 = c44;
}
else if(cvalone == 5){
pinC1 = c55;
}
else if(cvalone == 6){
pinC1 = c66;
}
else {
Serial.println("Select to solenoid");
}
}
// --------------------------------MAIN LOOP---------------------------------------------
void loop (){
msec = msec1 = millis ();
//Off Functions calling
pumpOff ();
pumpOff1 ();
//Communication over Serial Port----------------Raspberry Pi----------
if (Serial.available()) {
char line[80];
//Assume `line` is of the form "(1or2),255,2,3,1(in sec)\n".
Serial.readBytesUntil('\n', line, sizeof(line));
parser.parseLine(line, pumpnum, pul, From_Solenoid, To_Solenoid, Delay);
Delay*=1000;
switch (pumpnum){
case 1:
pinS = 0; pinC = 0;
solenoid(From_Solenoid);
solenoidc(To_Solenoid);
modone.sgnled_on();
pumpOn(Delay,pul);
break;
case 2:
pinS1 = 0; pinC1 = 0;
solenoidone(From_Solenoid);
solenoidcone(To_Solenoid);
pumpOn1(Delay,pul);
break;
case 3:
modone.pump1_off();
modone.pump2_off();
modone.line1_soff();
modone.line2_soff();
break;
}
}
}