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);
}
}
}