Source file: /~heha/mb-iwp/Bergwerk/Bergwerk.zip/us1.ino

// Wenn keine Verbindung zu --> Abziehen und wieder anstecken, anschließend neu reinladen
// Beobachten rechts über Monitor
// Neue Parameter über Haken --> Pfeil
// Autor (vermutlich): Manuel Norberger, 36970

#define Echo_EingangsPin1 3 // Echo Eingangs-Pin --> an Sensor1
#define Echo_EingangsPin2 4 // Echo Eingangs-Pin --> an Sensor2
#define Echo_EingangsPin3 5 // Echo Eingangs-Pin --> an Sensor3
#define Echo_EingangsPin4 6 // Echo Eingangs-Pin --> an Sensor4
#define Echo_EingangsPin5 7 // Echo Eingangs-Pin --> an Sensor5
#define Trigger_AusgangsPin 8 // Trigger Ausgangs-Pin
#define Area_Sonic_1 9 // Bit A1 --> Schaltrelais --> Steuerung (Sensor1)
#define Area_Sonic_2 10 // Bit A1 --> Schaltrelais --> Steuerung (Sensor2)
#define Area_Sonic_3 11 // Bit A1 --> Schaltrelais --> Steuerung (Sensor3)
#define Area_Sonic_4 12 // Bit A1 --> Schaltrelais --> Steuerung (Sensor4)
#define Area_Sonic_5 13 // Bit A1 --> Schaltrelais --> Steuerung (Sensor5)
// Benoetigte Variablen werden definiert
int maximumRange = 40;
int minimumRange = 2;
long Abstand1;
long Abstand2;
long Abstand3;
long Abstand4;
long Abstand5;
long Dauer1;
long Dauer2;
long Dauer3;
long Dauer4;
long Dauer5;
// boolean Area1;
// boolean Area2;
// boolean Area3;
// boolean Area4;
// boolean Area5;
void setup() {
pinMode(Trigger_AusgangsPin, OUTPUT);
pinMode(Echo_EingangsPin1, INPUT);
pinMode(Echo_EingangsPin2, INPUT);
pinMode(Echo_EingangsPin3, INPUT);
pinMode(Echo_EingangsPin4, INPUT);
pinMode(Echo_EingangsPin5, INPUT);
pinMode(Area_Sonic_1, OUTPUT);
pinMode(Area_Sonic_2, OUTPUT);
pinMode(Area_Sonic_3, OUTPUT);
pinMode(Area_Sonic_4, OUTPUT);
pinMode(Area_Sonic_5, OUTPUT);
Serial.begin (9600);
}
void loop() {
// Abstandsmessung wird mittels des 10us langen Triggersignals gestartet
// Nun wird am Echo-Eingang gewartet, bis das Signal aktiviert wurde
// und danach die Zeit gemessen, wie lang es aktiviert bleibt
// Im Anschluss wird der Abstand mittels der aufgenommenen Zeit berechnet
digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(10000);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer1 = pulseIn(Echo_EingangsPin1, HIGH);
Abstand1 = Dauer1/58.2;
// Überprüfung ob gemessener Wert innerhalb der zulässigen Entfernung liegt
if (Abstand1 >= maximumRange || Abstand1 <= minimumRange) {
 // Falls nicht wird eine Fehlermeldung ausgegeben.
 //Serial.println("Kein Objekt im Messbereich 1 detektiert");
 //Serial.println("-----------------------------------");
 //Serial.println(Abstand1);
 digitalWrite(Area_Sonic_1, HIGH);
}
else {
 // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben
 Serial.print("Der Abstand (Sensor1) betraegt:");
 Serial.print(Abstand1);
 Serial.println("cm");
 Serial.println("-----------------------------------");
 digitalWrite(Area_Sonic_1, LOW);
}

digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(10000);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer2 = pulseIn(Echo_EingangsPin2, HIGH);
Abstand2 = Dauer2/58.2;
if (Abstand2 >= maximumRange || Abstand2 <= minimumRange) {
 // Falls nicht wird eine Fehlermeldung ausgegeben.
 //Serial.println("Kein Objekt im Messbereich 2 detektiert");
 //Serial.println("-----------------------------------");
 //Serial.println(Abstand2);
 digitalWrite(Area_Sonic_2, HIGH);
}
else {
 // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben
 Serial.print("Der Abstand (Sensor2) betraegt:");
 Serial.print(Abstand2);
 Serial.println("cm");
 Serial.println("-----------------------------------");
 digitalWrite(Area_Sonic_2, LOW);
}

digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(10000);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer3 = pulseIn(Echo_EingangsPin3, HIGH);
Abstand3 = Dauer3/58.2;
if (Abstand3 >= maximumRange || Abstand3 <= minimumRange) {
 // Falls nicht wird eine Fehlermeldung ausgegeben.
 //Serial.println("Kein Objekt im Messbereich 3 detektiert");
 //Serial.println("-----------------------------------");
 //Serial.println(Abstand3);
 digitalWrite(Area_Sonic_3, HIGH);
}
else {
 // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben
 Serial.print("Der Abstand (Sensor3) betraegt:");
 Serial.print(Abstand3);
 Serial.println("cm");
 Serial.println("-----------------------------------");
 digitalWrite(Area_Sonic_3, LOW);
}

digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(1000);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer4 = pulseIn(Echo_EingangsPin4, HIGH);
Abstand4 = Dauer4/58.2;
if (Abstand4 >= maximumRange || Abstand4 <= minimumRange) {
 // Falls nicht wird eine Fehlermeldung ausgegeben.
 //Serial.println("Kein Objekt im Messbereich 4 detektiert");
 //Serial.println("-----------------------------------");
 //Serial.println(Abstand4);
 digitalWrite(Area_Sonic_4, HIGH);
}
else {
 // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben
 Serial.print("Der Abstand (Sensor4) betraegt:");
 Serial.print(Abstand4);
 Serial.println("cm");
 Serial.println("-----------------------------------");
 digitalWrite(Area_Sonic_4, LOW);
}

digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(10000);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer5 = pulseIn(Echo_EingangsPin5, HIGH);
Abstand5 = Dauer5/58.2;
if (Abstand5 >= maximumRange || Abstand5 <= minimumRange) {
 // Falls nicht wird eine Fehlermeldung ausgegeben.
 //Serial.println("Kein Objekt im Messbereich 5 detektiert");
 //Serial.println("-----------------------------------");
 //Serial.println(Abstand5);
 digitalWrite(Area_Sonic_5, HIGH);
}
else {
 // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben
 Serial.print("Der Abstand (Sensor5) betraegt:");
 Serial.print(Abstand5);
 Serial.println("cm");
 Serial.println("-----------------------------------");
 digitalWrite(Area_Sonic_5, LOW);
}
 // Pause zwischen den einzelnen Messungen
delay(500);
}
Detected encoding: UTF-80