Hallo liebe Technikfreunde,
ich arbeite an einem Schulprojekt und zur Realisierung möchte ich gerne den Arduino verwenden. Da ich auf dem Gebiet der Programmierung noch etwas unerfahren bin, möchte ich euch um Hilfe bitten.
Die Schaltung funktioniert so weit, nur beginnt millis bereits zu zählen obwohl noch die if-Bedingung gar NICHT WAHR ist. Das bedeutet wenn die Bedingung WAHR wird sind LED und Warnton bereits an, obwohl Sie nacheinander und zeitverzögert geschaltet werden sollen und das bei jedem Mal wenn die Bedingung gelegentlich NICHT WAHR und dann wieder WAHR wird.
Hier mein Code:
const int lenkradlinks_pin = 2;
const int lenkradrechts_pin = 3;
const int tuerverkleidung_pin = 4;
const int mittelkonsole_pin = 5;
const int geschwindigkeit_pin = 6;
const int warnzeichen_pin = 7;
const int warnton_pin = 8;
int lenkradlinks_status;
int lenkradrechts_status;
int tuerverkleidung_status;
int mittelkonsole_status;
int warnzeichen_status;
int warnton_status;
int geschwindigkeit_signal;
int geschwindigkeit_kmh;
unsigned long previousmillis = 0;
const long interval1 = 5000;
const long interval2 = 10000;
void setup() {
Serial.begin(9600);
pinMode (lenkradlinks_pin, INPUT);
pinMode (lenkradrechts_pin, INPUT);
pinMode (tuerverkleidung_pin, INPUT);
pinMode (mittelkonsole_pin, INPUT);
pinMode (geschwindigkeit_pin, INPUT);
pinMode (warnzeichen_pin, OUTPUT);
pinMode (warnton_pin, OUTPUT);
}
void loop() {
lenkradlinks_status = digitalRead(lenkradlinks_pin);
lenkradrechts_status = digitalRead(lenkradrechts_pin);
tuerverkleidung_status = digitalRead(tuerverkleidung_pin);
mittelkonsole_status = digitalRead(mittelkonsole_pin);
//Serial.println(lenkradlinks_status);
//Serial.println(lenkradrechts_status);
//Serial.println(tuerverkleidung_status);
//Serial.println(mittelkonsole_status);
if ((lenkradlinks_status == LOW || lenkradrechts_status == LOW) && (lenkradlinks_status == LOW || mittelkonsole_status == LOW) && (lenkradrechts_status == LOW || tuerverkleidung_status == LOW)){
unsigned long currentmillis = millis();
if((currentmillis - previousmillis) > interval1){
digitalWrite(warnzeichen_pin, HIGH);
}
if((currentmillis - previousmillis) > interval2){
digitalWrite(warnton_pin, HIGH);
}
}
else{
digitalWrite(warnzeichen_pin, LOW);
digitalWrite(warnton_pin, LOW);
}
}