Are you sure your original code actually does what you think it does?
if(digitalRead(A3) == HIGH && currentMillis+800 - previousMillis3 > intervalon3) {
previousMillis3 = currentMillis+800;
digitalWrite(A3,LOW);
digitalWrite(A3, digitalRead(A3));
}
if(digitalRead(3) == LOW && currentMillis+800 - previousMillis3 > intervaloff3) {
previousMillis3 = currentMillis+800;
digitalWrite(A3,HIGH);
digitalWrite(A3, digitalRead(A3));
}
These are looking at different pins A3 & 3 ?
I ran your code with a couple of tweaks to see what it was actually doing..
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
unsigned long previousMillis3 = 0;
unsigned long previousMillis4 = 0;// speichert den Zeitpunkt an dem zuletzt geschalten wurde
const long intervalon1 = 400;
const long intervaloff1 = 1200;
const long intervalon2 = 400;
const long intervaloff2 = 1200;
const long intervalon3 = 400;
const long intervaloff3 = 1200;
const long intervalon4 = 400;
const long intervaloff4 = 1200;
void setup() {
pinMode(A1, OUTPUT); // LED 1
pinMode(A2, OUTPUT); // LED 1
pinMode(A3, OUTPUT); // LED 1
pinMode(A4, OUTPUT); // LED 1
Serial.begin(9600);
}
void loop(){
delay(100);
startventilate();
}
void startventilate()
{
unsigned long currentMillis = millis();
Serial.print("Current millis: ");
Serial.println(currentMillis);
if(digitalRead(A1) == HIGH && currentMillis - previousMillis1 > intervalon1 ) {
previousMillis1 = currentMillis;
digitalWrite(A1,LOW);
digitalWrite(A1, digitalRead(A1));
Serial.println("1 off");
}
if(digitalRead(A1) == LOW && currentMillis - previousMillis1 > intervaloff1) {
previousMillis1 = currentMillis;
digitalWrite(A1,HIGH);
digitalWrite(A1, digitalRead(A1));
Serial.println("1 on");
}
if(digitalRead(A2) == HIGH && currentMillis+400 - previousMillis2 > intervalon2) {
previousMillis2 = currentMillis+400;
digitalWrite(A2,LOW);
digitalWrite(A2, digitalRead(A2));
Serial.println("2 off");
}
if(digitalRead(A2) == LOW && currentMillis+400 - previousMillis2 > intervaloff2) {
previousMillis2 = currentMillis+400;
digitalWrite(A2,HIGH);
digitalWrite(A2, digitalRead(A2));
Serial.println("2 on");
}
if(digitalRead(A3) == HIGH && currentMillis+800 - previousMillis3 > intervalon3) {
previousMillis3 = currentMillis+800;
digitalWrite(A3,LOW);
digitalWrite(A3, digitalRead(A3));
Serial.println("3 off");
}
if(digitalRead(3) == LOW && currentMillis+800 - previousMillis3 > intervaloff3) {
previousMillis3 = currentMillis+800;
digitalWrite(A3,HIGH);
digitalWrite(A3, digitalRead(A3));
Serial.println("3 on");
}
if(digitalRead(A4) == HIGH && currentMillis+1200 - previousMillis4 > intervalon4) {
previousMillis4 = currentMillis+1200;
digitalWrite(A4,LOW);
digitalWrite(A4, digitalRead(A4));
Serial.println("4 off");
}
if(digitalRead(4) == LOW && currentMillis+1200 - previousMillis4 > intervaloff4) {
previousMillis4 = currentMillis+1200;
digitalWrite(A4,HIGH);
digitalWrite(A4, digitalRead(A4));
Serial.println("4 on");
}
}
Here's the output...
22:26:01.615 -> Current millis: 4215
22:26:01.717 -> Current millis: 4316
22:26:01.818 -> Current millis: 4416
22:26:01.818 -> 1 on
22:26:01.818 -> 2 off
22:26:01.920 -> Current millis: 4516
22:26:01.991 -> Current millis: 4617
22:26:02.093 -> Current millis: 4717
22:26:02.229 -> Current millis: 4817
22:26:02.229 -> 1 off
22:26:02.330 -> Current millis: 4918
22:26:02.330 -> 4 on
22:26:02.398 -> Current millis: 5018
22:26:02.503 -> Current millis: 5118
22:26:02.606 -> Current millis: 5219
22:26:02.707 -> Current millis: 5319
22:26:02.707 -> 3 on
22:26:02.707 -> 4 off
22:26:02.811 -> Current millis: 5420
22:26:02.913 -> Current millis: 5520
22:26:03.015 -> Current millis: 5620
22:26:03.015 -> 2 on
22:26:03.117 -> Current millis: 5721
22:26:03.117 -> 3 off
22:26:03.218 -> Current millis: 5821
22:26:03.324 -> Current millis: 5921
22:26:03.426 -> Current millis: 6022
22:26:03.426 -> 1 on
22:26:03.426 -> 2 off
22:26:03.501 -> Current millis: 6123
22:26:03.604 -> Current millis: 6223
22:26:03.714 -> Current millis: 6424