Оформи код соответствующим тэгом, см. Правила
int timeCold = 5;
int pinCold = 2;
int timeHot = 5;
int pinHot = 3;
int timeAlkali = 5;
int pinAlkali = 4;
int timeAcid = 5;
int pinAcid = 5;
int timeDrain = 5;
int pinDrain = 6;
int timePump = 5;
int pinPump = 7;
int pause = 5;
int pinPause = 13;
int sec = 0;
unsigned long timer;
void timerOperation(int numStart, int numFinish, int contact){
if (sec > numStart && sec < numFinish){
digitalWrite(contact, HIGH);
}
else{
digitalWrite(contact, LOW);
}
}
void setup() {
Serial.begin(9600);
timer = millis();
pinMode(pinCold, OUTPUT);
pinMode(pinHot, OUTPUT);
pinMode(pinAlkali, OUTPUT);
pinMode(pinAcid, OUTPUT);
pinMode(pinDrain, OUTPUT);
pinMode(pinPump, OUTPUT);
pinMode(pinPause, OUTPUT);
}
void loop() {
if (millis() - timer > 1000) {
timer = millis();
sec = sec + 1;
Serial.println(String(sec));
}
// 1
int timerHotOne = 0 + timeHot;
timerOperation(0, timerHotOne, pinHot);
int timerPumpOne = timerHotOne + timePump;
timerOperation(timerHotOne, timerPumpOne, pinPump);
int timerDrainOne = timerPumpOne + timeDrain;
timerOperation(timerPumpOne, timerDrainOne, pinDrain);
// 2
int timerHotTwo = timerDrainOne + timeHot;
timerOperation(timerDrainOne, timerHotTwo, pinHot);
int timerAlkali = timerHotTwo + timeAlkali;
timerOperation(timerHotTwo, timerAlkali, pinAlkali);
int timerPumpTwo = timerAlkali + timePump;
timerOperation(timerAlkali, timerPumpTwo, pinPump);
int timerPauseOne = timerPumpTwo + pause;
timerOperation(timerPumpTwo, timerPauseOne, pinPause);
int timerDrainTwo = timerPauseOne + timeDrain;
timerOperation(timerPauseOne, timerDrainTwo, pinDrain);
// 3
int timerCold = timerDrainTwo + timeCold;
timerOperation(timerDrainTwo, timerCold, pinCold);
int timerAcid = timerCold + timeAcid;
timerOperation(timerCold, timerAcid, pinAcid);
int timerPumpThree = timerAcid + timePump;
timerOperation(timerAcid, timerPumpThree, pinPump);
int timerPauseTwo = timerPumpThree + pause;
timerOperation(timerPumpThree, timerPauseTwo, pinPause);
int timerDrainThree = timerPauseTwo + timeDrain;
timerOperation(timerPauseTwo, timerDrainThree, pinDrain);
// 4
int timerHotThree = timerDrainThree + timeHot;
timerOperation(timerDrainThree, timerHotThree, pinHot);
int timerPumpFour = timerHotThree + timePump;
timerOperation(timerHotThree, timerPumpFour, pinPump);
int timerDrainFour = timerPumpFour + timeDrain;
timerOperation(timerPumpFour, timerDrainFour, pinDrain);
}
Код я понимаю, что неидеален. Если загружаю первые 2 этапа все работает как положено, если все 4 то на первом этапе на реле загараются диоды как будто бы сигнал пришел и реле должно отработать,но она не отрабатывает, на следующих этапах некоторые реле отрабатывают, некоторые нет, ардуинка и реле подключенны через блок питания. Пробовал на uno,nano, везде одно и тоже
int pinCold = 2;
int timeHot = 5;
int pinHot = 3;
int timeAlkali = 5;
int pinAlkali = 4;
int timeAcid = 5;
int pinAcid = 5;
int timeDrain = 5;
int pinDrain = 6;
int timePump = 5;
int pinPump = 7;
int pause = 5;
int pinPause = 13;
int sec = 0;
unsigned long timer;
void timerOperation(int numStart, int numFinish, int contact){
if (sec > numStart && sec < numFinish){
digitalWrite(contact, HIGH);
}
else{
digitalWrite(contact, LOW);
}
}
void setup() {
Serial.begin(9600);
timer = millis();
pinMode(pinCold, OUTPUT);
pinMode(pinHot, OUTPUT);
pinMode(pinAlkali, OUTPUT);
pinMode(pinAcid, OUTPUT);
pinMode(pinDrain, OUTPUT);
pinMode(pinPump, OUTPUT);
pinMode(pinPause, OUTPUT);
}
void loop() {
if (millis() - timer > 1000) {
timer = millis();
sec = sec + 1;
Serial.println(String(sec));
}
// 1
int timerHotOne = 0 + timeHot;
timerOperation(0, timerHotOne, pinHot);
int timerPumpOne = timerHotOne + timePump;
timerOperation(timerHotOne, timerPumpOne, pinPump);
int timerDrainOne = timerPumpOne + timeDrain;
timerOperation(timerPumpOne, timerDrainOne, pinDrain);
// 2
int timerHotTwo = timerDrainOne + timeHot;
timerOperation(timerDrainOne, timerHotTwo, pinHot);
int timerAlkali = timerHotTwo + timeAlkali;
timerOperation(timerHotTwo, timerAlkali, pinAlkali);
int timerPumpTwo = timerAlkali + timePump;
timerOperation(timerAlkali, timerPumpTwo, pinPump);
int timerPauseOne = timerPumpTwo + pause;
timerOperation(timerPumpTwo, timerPauseOne, pinPause);
int timerDrainTwo = timerPauseOne + timeDrain;
timerOperation(timerPauseOne, timerDrainTwo, pinDrain);
// 3
int timerCold = timerDrainTwo + timeCold;
timerOperation(timerDrainTwo, timerCold, pinCold);
int timerAcid = timerCold + timeAcid;
timerOperation(timerCold, timerAcid, pinAcid);
int timerPumpThree = timerAcid + timePump;
timerOperation(timerAcid, timerPumpThree, pinPump);
int timerPauseTwo = timerPumpThree + pause;
timerOperation(timerPumpThree, timerPauseTwo, pinPause);
int timerDrainThree = timerPauseTwo + timeDrain;
timerOperation(timerPauseTwo, timerDrainThree, pinDrain);
// 4
int timerHotThree = timerDrainThree + timeHot;
timerOperation(timerDrainThree, timerHotThree, pinHot);
int timerPumpFour = timerHotThree + timePump;
timerOperation(timerHotThree, timerPumpFour, pinPump);
int timerDrainFour = timerPumpFour + timeDrain;
timerOperation(timerPumpFour, timerDrainFour, pinDrain);
}
Код я понимаю, что неидеален. Если загружаю первые 2 этапа все работает как положено, если все 4 то на первом этапе на реле загараются диоды как будто бы сигнал пришел и реле должно отработать,но она не отрабатывает, на следующих этапах некоторые реле отрабатывают, некоторые нет, ардуинка и реле подключенны через блок питания. Пробовал на uno,nano, везде одно и тоже