Miniaturisierte Verkehrsampeln in einer Kreuzung mit Warnung bei schlechten Durchfahrt: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 121: | Zeile 121: | ||
<div style="width:1100px; height:800px; overflow:scroll; border: hidden"> | <div style="width:1100px; height:800px; overflow:scroll; border: hidden"> | ||
<syntaxhighlight lang="cpp" style="border: none; background-color: #EFF1C1; font-size:larger"> | <syntaxhighlight lang="cpp" style="border: none; background-color: #EFF1C1; font-size:larger"> | ||
//****************************************************************************// | |||
// Hochschule Hamm-Lippstadt - Studiengang B. Mechatronik - SoSe 22 * | |||
//***************************************************************************** | |||
// Modul : GET-Praktikum * | |||
// * | |||
// Datum : 10. 01. 2023 * | |||
// * | |||
// Funktion : Ampel in einer Kreuzung steuern * | |||
// * | |||
// Implementation : Arduino IDE vers. 1.8.16 * | |||
// * | |||
// Hardware : Arduino MEGA * | |||
// * | |||
// Device : LED-leuchte * | |||
// * | |||
// Prüfer : Prof. Schneider,Prof.Göbel und Herr Ebmeyer * | |||
// * | |||
// Authoren :Delmas Ngoumtsa & Christian Teyou | |||
// * | |||
// Gruppe : 2.5 * | |||
// * | |||
//***************************************************************************** | |||
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); | |||
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); | |||
pinMode (ECHO1R,INPUT); | |||
pinMode (TRIG1R,OUTPUT); | |||
pinMode (ECHO2R,INPUT); | |||
pinMode (TRIG2R,OUTPUT); | |||
Serial.begin(9600); | |||
} | |||
void loop() | |||
{ | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand1V); | |||
Serial.println(" cm"); | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand1R); | |||
Serial.println(" cm"); | |||
Zeit = millis(); | |||
Serial.print("Zeit = "); | |||
Serial.println( Zeit); | |||
for ( i= 0 ; i < 100; i++ ) | |||
{ | |||
Serial.print("Ziklus Nr. "); | |||
Serial.println( i ); | |||
if( Zeit < 5000 ) | |||
{ | |||
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); | |||
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(); | |||
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); | |||
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() | |||
{ | |||
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 (orange_LED1,LOW); | |||
digitalWrite (fussorange_LED1,LOW); | |||
Erste_Ultraschallt(); | |||
} | |||
} | |||
void Schalter2() | |||
{ | |||
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 (orange_LED2,LOW); | |||
digitalWrite (fussorange_LED2,LOW); | |||
Zweite_Ultraschallt(); | |||
} | |||
} | |||
void Erste_Ultraschallt() | |||
{ | |||
Erste_Ultraschallt1(); | |||
} | |||
void Zweite_Ultraschallt() | |||
{ | |||
Zweite_Ultraschallt1(); | |||
} | |||
void Erste_Ultraschallt1() | |||
{ | |||
digitalWrite (TRIG1V,LOW); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG1V,HIGH); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG1V,LOW); | |||
float Distance1V = pulseIn(ECHO1V,HIGH); | |||
Abstand1V = Distance1V / 58.0; | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand1V); | |||
Serial.println(" cm"); | |||
digitalWrite (TRIG1R,LOW); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG1R,HIGH); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG1R,LOW); | |||
float Distance1R = pulseIn(ECHO1R,HIGH); | |||
Abstand1R = Distance1R / 58.0; | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand1R); | |||
Serial.println(" cm"); | |||
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(Weiss1V,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss1V,LOW ); | |||
delay(5); | |||
digitalWrite(Weiss1V,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss1V,LOW ); | |||
delay(5); | |||
} | |||
delay(tW); | |||
digitalWrite(Weiss1V,LOW ); | |||
if(a1V == LOW && Abstand1R <10) | |||
{ | |||
digitalWrite(Weiss1R,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss1R,LOW ); | |||
delay(5); | |||
digitalWrite(Weiss1R,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss1R,LOW ); | |||
delay(5); | |||
} | |||
delay(tW); | |||
digitalWrite(Weiss1R,LOW ); | |||
digitalWrite (rote_LED1,LOW); | |||
delay(0 ); | |||
} | |||
void Zweite_Ultraschallt1() | |||
{ | |||
digitalWrite (TRIG2V,LOW); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG2V,HIGH); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG2V,LOW); | |||
float Distance2V = pulseIn(ECHO2V,HIGH); | |||
Abstand2V = Distance2V / 58.0; | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand2V); | |||
Serial.println(" cm"); | |||
digitalWrite (TRIG2R,LOW); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG2R,HIGH); | |||
delayMicroseconds(2); | |||
digitalWrite (TRIG2R,LOW); | |||
float Distance2R = pulseIn(ECHO2R,HIGH); | |||
Abstand2R = Distance2R / 58.0; | |||
Serial.print("Abstand ist : "); | |||
Serial.print(Abstand2R); | |||
Serial.println(" cm"); | |||
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(Weiss2V,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss2V,LOW ); | |||
delay(5); | |||
digitalWrite(Weiss2V,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss2V,LOW ); | |||
delay(5); | |||
} | |||
delay(tW); | |||
digitalWrite(Weiss2V,LOW ); | |||
if(a2V == LOW && Abstand2R <10) | |||
{ | |||
digitalWrite(Weiss2R,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss2R,LOW ); | |||
delay(5); | |||
digitalWrite(Weiss2R,HIGH ); | |||
delay(10); | |||
digitalWrite(Weiss2R,LOW ); | |||
delay(5); | |||
} | |||
delay(tW); | |||
digitalWrite(Weiss2R,LOW ); | |||
digitalWrite (rote_LED2,LOW); | |||
delay(0 ); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | </div> |
Version vom 7. Januar 2023, 04:55 Uhr
Autoren: Delmas Ngoumtsa & Christian Teyou
Betreuer: Prof. Göbel & Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)
Einleitung
In laufende des GET-Fachpraktikum an der Hochschule Hamm-Lippstadt im Studiengang Mechatronik soll ein Projekt je Team realisiert werden. Das Ziel des Projekts ist eine“ miniaturisierte Verkehrsampeln in einer Kreuzung mit Warnung bei schlechter Durchfahrt“ zu herstellen. Dies dient zu Vermeidung bzw. Verringern von möglichen Unfälle in einer Verkehrskreuzung, indem es den Straßenverkehr reguliert. Die Regelung wird durch drei unterschiedlichen farbigen LEDs (rote, orange ,grüne ) und ein weiße LED als Blitzer bei Fehler durchgefügt. Die LED werden auf einen Zirkus von 2 Minuten. Diese entspricht dass, die rote LED sollte einen Beleuchtungsdauer von 1 Minuten ,die orange 10 Sekunden und die grüne 50 Sekunden. Dazu kommt auch einen Taster für den vorfahrt von Fußgänger, die nach 30 Sekunden einer Betätigung den Zirkus wieder nach Anfang bringen soll und nur nach 2 Minuten die Möglichkeit den Zirkus wieder abzubrechen .
Anforderungen
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
1 | Die Ampeln bestehen aus drei Lampen mit verschiedenen Farben(R=rote , O=orange und G=grün) . | Delmas Ngoumtsa & Christian Teyou | 04.10.2022 | ||
2 | Jede Lampe muss eine bestimmte Zeit lang zyklisch leuchten. | Delmas Ngoumtsa & Christian Teyou | 04.10.2022 | ||
3 | Ein Berührungssensor muss vor die Lampe eingebaut Werden und nur während der beleuchtenden roten Lampe aktiviert werden. | Delmas Ngoumtsa & Christian Teyou | 04.10.2022 | ||
4 | Eine zusätzliche weiße Lampe in der miete der Straße und in paar Meter höher muss zwei oder drei Mal blinken nach Aktivierung des Sensors | Delmas Ngoumtsa & Christian Teyou | 04.10.2022 |
Funktionaler Systementwurf/Technischer Systementwurf
Komponentenspezifikation
ID | Komponente | Bezeichnung | Bild |
---|---|---|---|
1 | Arduino Microcontroller | 1x ATMEGA 2560 R3 Board CH340 Mega2560 R3 Compatible Atmega2560-16AU | |
2 | Arduino Ultraschall Sensor (Entfernung Sensor) | 4x HC-SR04 | |
3 | Arduino LED Ampel Modul | 16 x LED Ampel Modul Creative DIY Mini-Ampel 3,3-5V 8mm | |
4 | Micro Taktilen Druckschalter | 4 Stück Micro Tactile Switch 6 x 6 x 6 mm 2 pins,Mikro Schalter Tactile Drucktaster Für Steckbrett Elektronische Schaltung | |
5 | Draht Klingeldraht Kabel Isolierung | 8 farbige 30AWG Verzinnte Kupfer Solid Kabel | |
6 | Schrumpfschlauch | Schrumpfschlauch mit 12 Verschiedene Größen | |
7 | PVC Rohr Rund starre Kunststoffrohr | 4 Stück PVC Rohr Rund starre Kunststoffrohr 8mm ID 10mm AD 500mm Weiß für Kabelmuffe | |
8 | USB Anschlusskabel | 0,3 m USB Anschlusskabel SW USB Stecker Typ A zu B für Arduino UNO, MEGA, usw... |
Umsetzung (HW/SW)
Code fürs Programm:
Komponententest
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
Anforderungen
Funktionaler Systementwurf/Technischer Systementwurf
Komponentenspezifikation
Umsetzung (HW/SW)
Komponententest
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)