Mein erstes Arduino Programm sah ähnlich aus (Fußgänger Ampel).
Ich hatte im Define Teil keine "const" drin.
Und ich habe durchgängig nur "HIGH" und "LOW" benutzt und keine "0" und "1".
Als erste Maßnahme kann man mal prüfen welche Werte den "schwelle1" und 2 annehmen.
Also eine Serielle Übertragung starten und nach der übernahme durch digitalRead mit Serial.print ausgeben und mit dem seriellen Monitor beobachten.
Denn bis auf die Zuweisung statt des Vergleichs erscheint der Code OK zu sein.
Und im dem Fall macht er ja was er soll.
Die Konzequenz daraus wäre, daß das was er macht zwar richtig ist, aber nicht das was Du erwartest.
Und da bleiben nur die beiden Variablen, die als einziges Zustandsänderungen verursachen können.
Alo mal nachsehen was die für Werte haben.
Beispiel für eine serielle Ausgabe in Deinem Code
Hier habe ich mal meinen Code drangehängt. der funktioniert so auf einem Arduino Nano.Code:void setup() { Serial.begin(9600); <<<< Serielle Ausgabe starten . . . } void loop() { int schwelle1 = digitalRead(M1); int schwelle2 = digitalRead(M2); Serial.print(schwelle1); <<<< Wert ausgeben Serial.println(schwelle2); <<<< Wert ausgeben und Zeilenumbruch if (schwelle1 == 0){ . . . . . }
Code:int f_tast = 2; int a_rot = 3; int a_gelb = 4; int a_gruen = 5; int f_rot = 8; int f_gruen = 9; int f_lamp_tast = 13; int s_licht = A0; byte f_press = HIGH; void setup() { pinMode(f_tast, INPUT); pinMode(a_rot, OUTPUT); pinMode(a_gelb, OUTPUT); pinMode(a_gruen, OUTPUT); pinMode(f_rot, OUTPUT); pinMode(f_gruen, OUTPUT); attachInterrupt(0, button, LOW); //Serial.begin(9600); } void loop() { int sensorValue = analogRead(s_licht); //Serial.println(sensorValue); // Blinker code zum Prüfen ob Programm läuft digitalWrite(f_lamp_tast, HIGH); //Blinker an Taste fuer Fussgaenger delay(500); digitalWrite(f_lamp_tast, LOW); delay(500); if (sensorValue > 500){ //Dämmerungswert für Nachtschaltung digitalWrite(a_rot, LOW); digitalWrite(a_gelb, HIGH); //Autos Gelb für Blinker digitalWrite(a_gruen, LOW); digitalWrite(f_rot, LOW); digitalWrite(f_gruen, LOW); delay(500); digitalWrite(a_gelb, LOW); } else { digitalWrite(a_rot, LOW); digitalWrite(a_gelb, LOW); digitalWrite(a_gruen, HIGH); //Autos gruen digitalWrite(f_rot, HIGH); //Fussgaenger rot digitalWrite(f_gruen, LOW); } // if (digitalRead(f_tast) == LOW){ //Taste Fussgaenger abfragen if (f_press == LOW){ //Statusvariable Taste Fussgaenger abfragen delay(500); digitalWrite(13, HIGH); //Taste Fussgaenger ist gedrueckt worden digitalWrite(f_rot, HIGH); //Fussgaenger rot digitalWrite(a_gruen, LOW); digitalWrite(a_gelb, HIGH); //Autos gelb delay(1000); // Autos Gelbphase digitalWrite(a_gelb, LOW); digitalWrite(a_rot, HIGH); //Autos rot delay(1000); // Fussgaenger Wartezeit damit kein Auto mehr fährt digitalWrite(13, LOW); digitalWrite(f_rot, LOW); digitalWrite(f_gruen, HIGH); //Fussgaenger gruen delay (6000); //Fussgaenger gruenphase digitalWrite(f_rot, HIGH); //Fussgaenger rot digitalWrite(f_gruen, LOW); delay(1000); //Autos Wartezeit damit kein Fussgaenger mehr laeuft digitalWrite(a_gelb, HIGH); //Autos gelb delay(1000); // Autos Gelbphase f_press = HIGH; } } void button(){ f_press = LOW; }







Zitieren

Lesezeichen