int rote_LED1=26;
int orange_LED1=24; // Ampel für Verkehr auf Straße 1
int gruene_LED1=22;
int rote_LED2=31;
int orange_LED2=33; // Ampel für Verkehr auf Straße 2
int gruene_LED2=35;
bool Taster1 = 0; // Taster für Fußgänger,die die Traße 1 überqueren möchten
bool Taster2 = 0; // Taster für Fußgänger,die die Traße 2 überqueren möchten
int Pin_Taster1=13;// Pin wo die Pin_Taster1 eingelesen wird
int Pin_Taster2=12;// Pin wo die Pin_Taster2 eingelesen wird
unsigned long Zeit = 0;
unsigned long ZeitLang = 1000;// Zeit Ansteurung
unsigned long ZeitKurz = 500;
int fussgruene_LED1=36;// Ampel für Fußgänger auf Straße 1
int fussorange_LED1=38;
int fussrote_LED1=40;
int fussgruene_LED2=49;// Ampel für Fußgänger auf Straße 2
int fussorange_LED2=51;
int fussrote_LED2=53;
int i ; // Anzahl Inkrimete
int Weiss1V = 10; // Weiße Melder für vordere Ampel für Verkehr auf Straße 1
int Weiss1R = 8; // Weiße Melder für Rückseite Ampel für Verkehr auf Straße 1
int Weiss2V = 6; // Weiße Melder für vordere Ampel für Verkehr auf Straße 2
int Weiss2R = 4; // Weiße Melder für Rückseite Ampel für Verkehr auf Straße 2
int ECHO1V = 32; // Pins des 1. vorderen Ultraschallsensor für Verkehr auf Straße 1
int TRIG1V = 30;
float Abstand1V = 0; // gelieferte Abstand von der 1. vorderen Ultraschallsensor für Verkehr auf Straße 1
int ECHO2V = 25; // Pins des 2. vorderen Ultraschallsensor für Verkehr auf Straße 1
int TRIG2V = 23;
float Abstand2V = 0; // gelieferte Abstand von der 2. vorderen Ultraschallsensor für Verkehr auf Straße 1
int ECHO1R = 44; // Pins des 1. Rückseite Ultraschallsensor für Verkehr auf Straße 1
int TRIG1R = 42;
float Abstand1R = 0; // gelieferte Abstand von der 1. Rückseite Ultraschallsensor für Verkehr auf Straße 1
int ECHO2R = 43; // Pins des 2. Rückseite Ultraschallsensor für Verkehr auf Straße 1
int TRIG2R = 41;
float Abstand2R = 0; // gelieferte Abstand von der 2. Rückseite Ultraschallsensor für Verkehr auf Straße 1
int a1V ; // Taster für Bedingung des 1. vorderen Ultraschallsensor für Verkehr auf Straße 1
int a2V ; // Taster für Bedingung des 2. vorderen Ultraschallsensor für Verkehr auf Straße 1
int tW = 30;// Zeit des Weißen Melder für Verkehrsampel
void setup()
{
pinMode(Weiss1V, OUTPUT);
pinMode(Weiss1R, OUTPUT);
pinMode (rote_LED1,OUTPUT);
pinMode (orange_LED1,OUTPUT);
pinMode (gruene_LED1,OUTPUT);
pinMode (Pin_Taster1,INPUT);
pinMode (fussrote_LED1,OUTPUT);
pinMode (fussgruene_LED1,OUTPUT);
pinMode (fussorange_LED1,OUTPUT);
// Stustände von LEDs Pins
pinMode(Weiss2V, OUTPUT);
pinMode(Weiss2R, OUTPUT);
pinMode (rote_LED2,OUTPUT);
pinMode (orange_LED2,OUTPUT);
pinMode (gruene_LED2,OUTPUT);
pinMode (Pin_Taster2,INPUT);
pinMode (fussrote_LED2,OUTPUT);
pinMode (fussgruene_LED2,OUTPUT);
pinMode (fussorange_LED2,OUTPUT);
pinMode (ECHO1V,INPUT);
pinMode (TRIG1V,OUTPUT);
pinMode (ECHO2V,INPUT);
pinMode (TRIG2V,OUTPUT);
// Stustände von Ultraschlalle Pins
pinMode (ECHO1R,INPUT);
pinMode (TRIG1R,OUTPUT);
pinMode (ECHO2R,INPUT);
pinMode (TRIG2R,OUTPUT);
}
void loop()
{
Zeit = millis();
for ( i= 0 ; i < 30; i++ )
{
Serial.print("Ziklus Nr. ");
Serial.println( i );
if( Zeit < 5000 )
{
digitalWrite (rote_LED1,LOW);
digitalWrite (fussrote_LED1,HIGH); // Durchführung und Abruf von Supfonktionen
digitalWrite (orange_LED1,LOW);
digitalWrite (fussorange_LED1,LOW);
digitalWrite (gruene_LED1,HIGH);
digitalWrite (fussgruene_LED1,LOW);
Zweite_Ultraschallt();
}
if( Zeit > 5000 && Zeit < 8000)
{
digitalWrite (orange_LED1,HIGH);
digitalWrite (fussorange_LED1,HIGH);
digitalWrite (rote_LED1,LOW);
digitalWrite (fussrote_LED1,HIGH);
digitalWrite (gruene_LED1,LOW);
digitalWrite (fussgruene_LED1,LOW);
// Durchführung und Abruf von Supfonktionen
digitalWrite (orange_LED2,HIGH);
digitalWrite (fussorange_LED2,HIGH);
digitalWrite (rote_LED2,LOW);
digitalWrite (fussrote_LED2,LOW);
digitalWrite (gruene_LED2,LOW);
digitalWrite (fussgruene_LED2,HIGH);
}
if( Zeit > 8000 && Zeit < 15000)
{
digitalWrite (orange_LED2,LOW);
digitalWrite (fussorange_LED2,LOW);
digitalWrite (rote_LED2,LOW);
digitalWrite (fussrote_LED2,HIGH);
digitalWrite (gruene_LED2,HIGH);
digitalWrite (fussgruene_LED2,LOW);
Erste_Ultraschallt();
}
Schalter1();
Schalter2(); // Durchführung und Abruf von Supfonktionen
if( Zeit > 15000)
{
Zeit = Zeit - 16000;
if( Zeit < 3000 )
{
digitalWrite (rote_LED1,LOW);
digitalWrite (fussrote_LED1,HIGH);
digitalWrite (orange_LED1,LOW);
digitalWrite (fussorange_LED1,LOW);
digitalWrite (gruene_LED1,HIGH);
digitalWrite (fussgruene_LED1,LOW);
Zweite_Ultraschallt();
}
if( Zeit > 5000 && Zeit < 8000)
{
digitalWrite (orange_LED1,HIGH);
digitalWrite (fussorange_LED1,HIGH);
digitalWrite (rote_LED1,LOW);
digitalWrite (fussrote_LED1,HIGH);
digitalWrite (gruene_LED1,LOW);
digitalWrite (fussgruene_LED1,LOW);
// Durchführung und Abruf von Supfonktionen
digitalWrite (orange_LED2,HIGH);
digitalWrite (fussorange_LED2,HIGH);
digitalWrite (rote_LED2,LOW);
digitalWrite (fussrote_LED2,LOW);
digitalWrite (gruene_LED2,LOW);
digitalWrite (fussgruene_LED2,HIGH);
}
if( Zeit > 8000 && Zeit < 15000)
{
digitalWrite (orange_LED2,LOW);
digitalWrite (fussorange_LED2,LOW);
digitalWrite (rote_LED2,LOW);
digitalWrite (fussrote_LED2,HIGH);
digitalWrite (gruene_LED2,HIGH);
digitalWrite (fussgruene_LED2,LOW);
Erste_Ultraschallt();
}
}
}
}
void Schalter1() // Supfonktion für die Taster der erste Strasse
{
Taster1 =digitalRead(Pin_Taster1);
if ( Taster1 == LOW)
{
delay(0);
digitalWrite (orange_LED1,HIGH);
digitalWrite (fussorange_LED1,HIGH);
digitalWrite (rote_LED1,LOW);
digitalWrite (fussrote_LED1,HIGH);
digitalWrite (gruene_LED1,LOW);
digitalWrite (fussgruene_LED1,LOW);
delay(3000);
digitalWrite (gruene_LED2,HIGH);
digitalWrite (rote_LED1,HIGH);
digitalWrite (fussrote_LED1,LOW);
digitalWrite (orange_LED1,LOW);
digitalWrite (fussorange_LED1,LOW);
digitalWrite (fussgruene_LED1,HIGH);
delay(5000);
digitalWrite (gruene_LED2,LOW);
digitalWrite (rote_LED1,LOW);
digitalWrite (fussgruene_LED1,LOW);
digitalWrite (rote_LED1,LOW);
Erste_Ultraschallt();
}
}
void Schalter2() // Supfonktion für die Taster der zweite Strasse
{
Taster2 =digitalRead(Pin_Taster2);
if ( Taster2 == LOW)
{
delay(0);
digitalWrite (orange_LED2,HIGH);
digitalWrite (fussorange_LED2,HIGH);
digitalWrite (rote_LED2,LOW);
digitalWrite (fussrote_LED2,HIGH);
digitalWrite (gruene_LED2,LOW);
digitalWrite (fussgruene_LED2,LOW);
delay(3000);
digitalWrite (rote_LED1,HIGH);
digitalWrite (fussrote_LED2,LOW);
digitalWrite (orange_LED2,LOW);
digitalWrite (fussorange_LED2,LOW);
digitalWrite (fussgruene_LED2,HIGH);
delay(5000);
digitalWrite (fussgruene_LED2,LOW);
digitalWrite (rote_LED1,LOW);
Zweite_Ultraschallt();
}
}
void Erste_Ultraschallt()
{
Erste_Ultraschallt1();
}
void Zweite_Ultraschallt()
{
Zweite_Ultraschallt1();
}
void Erste_Ultraschallt1() // Supfonktion für den vorderen und hinteren Ultraschall der erste Strasse
{
digitalWrite (TRIG1V,LOW);
delayMicroseconds(2);
digitalWrite (TRIG1V,HIGH);
delayMicroseconds(2);
digitalWrite (TRIG1V,LOW);
float Distance1V = pulseIn(ECHO1V,HIGH);
Abstand1V = Distance1V / 58.0;
digitalWrite (TRIG1R,LOW);
delayMicroseconds(2);
digitalWrite (TRIG1R,HIGH);
delayMicroseconds(2);
digitalWrite (TRIG1R,LOW);
float Distance1R = pulseIn(ECHO1R,HIGH);
Abstand1R = Distance1R / 58.0;
a1V = digitalRead (rote_LED1);
digitalWrite (rote_LED1,HIGH);
digitalWrite (fussrote_LED1,LOW);
digitalWrite (orange_LED1,LOW);
digitalWrite (fussorange_LED1,LOW);
digitalWrite (gruene_LED1,LOW);
digitalWrite (fussgruene_LED1,HIGH);
if(a1V == LOW && Abstand1V <10)
{
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1V,HIGH );
delay(10);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1V,LOW );
delay(5);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1V,HIGH );
delay(10);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1V,LOW );
delay(5);
}
delay(tW);
digitalWrite(Weiss1V,LOW );
if(a1V == LOW && Abstand1R <10)
{
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1R,HIGH );
delay(10);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1R,LOW );
delay(5);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1R,HIGH );
delay(10);
digitalWrite (rote_LED1,HIGH);
digitalWrite(Weiss1R,LOW );
delay(5);
digitalWrite (rote_LED1,HIGH);
}
delay(tW);
digitalWrite(Weiss1R,LOW );
digitalWrite (rote_LED1,LOW);
delay(0 );
}
void Zweite_Ultraschallt1() // Supfonktion für den hinteren und vorderen Ultraschall der zweite Strasse
{
digitalWrite (TRIG2V,LOW);
delayMicroseconds(2);
digitalWrite (TRIG2V,HIGH);
delayMicroseconds(2);
digitalWrite (TRIG2V,LOW);
float Distance2V = pulseIn(ECHO2V,HIGH);
Abstand2V = Distance2V / 58.0;
digitalWrite (TRIG2R,LOW);
delayMicroseconds(2);
digitalWrite (TRIG2R,HIGH);
delayMicroseconds(2);
digitalWrite (TRIG2R,LOW);
float Distance2R = pulseIn(ECHO2R,HIGH);
Abstand2R = Distance2R / 58.0;
a2V = digitalRead (rote_LED2);
digitalWrite (rote_LED2,HIGH);
digitalWrite (fussrote_LED2,LOW);
digitalWrite (orange_LED2,LOW);
digitalWrite (fussorange_LED2,LOW);
digitalWrite (gruene_LED2,LOW);
digitalWrite (fussgruene_LED2,HIGH);
if(a2V == LOW && Abstand2V <10)
{
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2V,HIGH );
delay(10);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2V,LOW );
delay(5);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2V,HIGH );
delay(10);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2V,LOW );
delay(5);
digitalWrite (rote_LED2,HIGH);
}
delay(tW);
digitalWrite(Weiss2V,LOW );
if(a2V == LOW && Abstand2R <10)
{
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2R,HIGH );
delay(10);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2R,LOW );
delay(5);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2R,HIGH );
delay(10);
digitalWrite (rote_LED2,HIGH);
digitalWrite(Weiss2R,LOW );
delay(5);
digitalWrite (rote_LED2,HIGH);
}
delay(tW);
digitalWrite(Weiss2R,LOW );
digitalWrite (rote_LED2,LOW);
delay(0 );
}