/*
Funktion to run 3-Way Motor-Valve, powered only to change Position
*/
#define out1 2 // Brouwn
#define out2 3 // Black
#define inA 4 // 0=left, 1=right
//bool setValvePosi = LOW; // 0= left, 1=right
byte valCnt = 0; // StateCounter
byte valCntOld;
unsigned long tmeA;
unsigned long tmeAold;
unsigned int tmeRunMot = 10000; // Time to run ValveMot
void setup() {
// put your setup code here, to run once:
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(inA, INPUT_PULLUP);
}
void loop() {
setValveMot(digitalRead(inA)); //Func (0=left), (1=right)
//--check-----------------
if (valCnt != valCntOld){
Serial.println(valCnt);
valCntOld = valCnt;
}
}
void setValveMot(bool setValvePosi){
//---Mot FirstRund Run/Check ValvePosi after start----
if (valCnt == 0){
if(setValvePosi == LOW ){ //firstrun Check left
tmeAold = millis();
digitalWrite(out1, HIGH);
valCnt = 1;
}
if(setValvePosi == HIGH){ //firstrun Check right
tmeAold = millis();
digitalWrite(out1, HIGH);
digitalWrite(out2, HIGH);
valCnt = 2;
}
}
//----Mot later Run-----------------------------
if (valCnt == 11){ //is right
if(setValvePosi == LOW ){ // go left
tmeAold = millis();
digitalWrite(out1, HIGH);
valCnt = 1;
}
}
if (valCnt == 10){ // is left
if(setValvePosi == HIGH){ //go right
tmeAold = millis();
digitalWrite(out1, HIGH);
digitalWrite(out2, HIGH);
valCnt = 2;
}
}
//--- Rel/Mot switch off------
if(valCnt == 1 ){
if (millis() - tmeAold >= tmeRunMot ){
tmeAold = tmeA;
digitalWrite(out1, LOW);
valCnt = 10; //0= fistrun, 10 = now first, Posi left
}
}
if(valCnt == 2 ){
if (millis() - tmeAold >= tmeRunMot ){
tmeAold = tmeA;
digitalWrite(out1, LOW);
digitalWrite(out2, LOW);
valCnt = 11; //0= fistrun, 11 = now first, Posi right
}
}
}