/* Ampel emulates traffic lights. when pressing a pushbutton attached to pin 2. The circuit: * LEDs attached from pin 8-12 to ground * pushbutton attached to pin 2 from +5V * 10K resistor attached to pin 2 from ground created 2012 by hennisoft modified 07 Nov 2012 by Henning Buchholz This example code is in the public domain. Based on: http://www.arduino.cc/en/Tutorial/Button */ // constants won't change. They're used here to // set pin numbers: const int buttonPin = 2; // the number of the pushbutton pin const int ledRot = 12; const int ledGelb = 11; const int ledGruen = 10; const int ledRotFuss = 9; const int ledGruenFuss = 8; const int warten = 2000; // Wartezeit bis Fussganger gruen haben const int phase = 6000; // Gruenphase fuer Fussganger // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledRot, OUTPUT); pinMode(ledGelb, OUTPUT); pinMode(ledGruen, OUTPUT); pinMode(ledRotFuss, OUTPUT); pinMode(ledGruenFuss, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); digitalWrite(ledGruen, HIGH); digitalWrite(ledGelb, LOW); digitalWrite(ledRot, LOW); digitalWrite(ledRotFuss, HIGH); digitalWrite(ledGruenFuss, LOW); // if button is pushed if (buttonState == LOW) { gedrueckt(); } } void gedrueckt(){ // warten bis gruen wird ... delay(warten); // Uebergangsphase Auto (rot -> gelb) digitalWrite(ledRot, LOW); digitalWrite(ledGelb, HIGH); digitalWrite(ledGruen, LOW); delay(3000); // Autos rot digitalWrite(ledRot, HIGH); digitalWrite(ledGelb, LOW); digitalWrite(ledGruen, LOW); delay(1500); // Sicherheitszeit // Fussgaenger gruen digitalWrite(ledGruenFuss, HIGH); digitalWrite(ledRotFuss, LOW); delay(phase); // Uebergagsphase Fussgaenger (gruen blinkt) for(int i = 0; i < 5; i++){ digitalWrite(ledGruenFuss, LOW); delay(300); digitalWrite(ledGruenFuss, HIGH); delay(300); } // Fussgaenger rot digitalWrite(ledRotFuss, HIGH); digitalWrite(ledGruenFuss, LOW); delay(1000); // Uebergangsphase Auto (gelb) digitalWrite(ledGelb, HIGH); delay(3000); }