Verkehrsampel schaltet nicht

Dieses Beispiel habe ich aus einem Buch (Arduino Workshops von John Boxall) nachgebaut. Leider funktioniert es aber nicht wie im Buch beschrieben.

Die Ampeln sollen jeweils auf Kopfdruck (symbolisiert die wartenden Autos) mit Verzögerungschalten.
Die einzige LED, welche auf Kopfdruck von Taster Pin13 leuchtet, ist die „L“ LED auf meinem Arduino Board UNO.

Ich habe den Schaltplan wie im Buch (Abb. 4-27) aufgebaut. Mir ist jedoch aufgefallen, dass

#define westButton 3 nicht wie auf der Abbildung zu Pin 3 geht sondern zu Pin 7.

#define eastButton 13 sollte laut Abbildung und Sketch passen.

Mir sind keine weiteren Fehler aufgefallen und weiß leider nicht woran es liegen könnte.
Hätte jemand eine Idee.

Besten Dank schon mal im Voraus.

Konstantin

// Projekt 5 - Eine Verkehrsampel


#define westButton 8
#define eastButton 13
#define westRed 2
#define westYellow 1
#define westGreen 0
#define eastRed 12
#define eastYellow 11
#define eastGreen 10
#define yellowBlinkTime 500


boolean trafficWest = true;
int flowTime = 10000;
int changeDelay = 2000;


void setup() 
{
  pinMode(westButton, INPUT);
   pinMode(eastButton, INPUT);
  pinMode(westRed, OUTPUT);
  pinMode(westYellow, OUTPUT);
  pinMode(westGreen, OUTPUT);
  pinMode(eastRed, OUTPUT);
  pinMode(eastYellow, OUTPUT);
  pinMode(eastGreen, OUTPUT);
 
  digitalWrite(westRed, LOW);
  digitalWrite(westYellow, LOW);
  digitalWrite(westGreen, HIGH);
  digitalWrite(eastRed, HIGH);
  digitalWrite(eastYellow, LOW);
  digitalWrite(eastGreen, LOW);
 
}

void loop() 
{
    if ( digitalRead(westButton) == HIGH )
{
if (trafficWest != true)

{
trafficWest = true; 
delay(flowTime);
digitalWrite(eastGreen, LOW);

digitalWrite(eastYellow, HIGH);
delay(changeDelay);
for ( int a = 0; a < 5; a++)
{
  digitalWrite(westYellow, LOW);
  delay(yellowBlinkTime);
  digitalWrite(westYellow, HIGH);
  delay(yellowBlinkTime);

}
digitalWrite(westYellow, LOW);
digitalWrite(westRed, LOW);
digitalWrite(westGreen, HIGH);
  }
}

if (digitalRead(eastButton) == HIGH)

{
if (trafficWest == true )

{
  trafficWest = false; 
  delay(flowTime);
  digitalWrite(westGreen, LOW);
  digitalWrite(westYellow, HIGH);
  delay(changeDelay);
  digitalWrite(westYellow, LOW);
  digitalWrite(westRed, HIGH);
  delay(changeDelay);
  for ( int a = 0; a < 5 ; a++)
  {
    digitalWrite(eastYellow, LOW);
    delay(yellowBlinkTime);
    digitalWrite(eastYellow, HIGH);
    delay(yellowBlinkTime);

}

      digitalWrite(eastYellow, LOW);
      digitalWrite(eastRed, LOW);
      digitalWrite(eastGreen, HIGH);

    }
  }
}



Leider der "alt bekannte" Fehler mit den Steckboards.
Die Linien (Spannungsführungen) in rot und blau sind nicht durchgezogen (verbunden).
Stecke mal Kabel als Brücken rein, dann sieht das schon mal besser aus.

2 Likes

Hot war 15 sec schneller: Die Rails für VCC/GND auf deinem Breadboard sind nicht durchverbunden. Verbinde diese mit Kabeln!

Besten Dank

Werde das mal probieren

Funktioniert
Danke nochmals

Gerne, danke für die Rückmeldung.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.