Hier der Arduino-Code, der für die Umsetzung verwendet wurde:
// Setzen der Pin-Nummern für die 5 Sensorenconst int pingPin7 = 7;const int pingPin6 = 6;const int pingPin5 = 5;const int pingPin4 = 4;const int pingPin3 = 3;void setup() {// initialisieren der baud rateSerial.begin(9600);}void loop(){// deklarieren der Variablen für die Zeitdauer und für die Entfernung in cm// für jeden Sensor (Nummerierung nach Arduino-Pins)long duration7, duration6, duration5, duration4, duration3, cm7, cm6, cm5, cm4, cm3;// Der SRF 05 wird durch einen HIGH-Impuls getriggert, hierfür ist der jeweilige Pin auf OUTPUT gesetzt.// Anschließend wird der Pin auf INPUT geswitcht, um die Werte auslesen zu können.// Die Zeitdauer wird gemessen und danach in cm umgewandelt. Es folgt ein Delay um in keine// Konflikte zwischen den Sensoren zu geraten.pinMode(pingPin7, OUTPUT);digitalWrite(pingPin7, LOW);delayMicroseconds(2);digitalWrite(pingPin7, HIGH);delayMicroseconds(5);digitalWrite(pingPin7, LOW);pinMode(pingPin7, INPUT);duration7 = pulseIn(pingPin7, HIGH);cm7 = microsecondsToCentimeters7(duration7);delayMicroseconds(20);pinMode(pingPin6, OUTPUT);digitalWrite(pingPin6, LOW);delayMicroseconds(2);digitalWrite(pingPin6, HIGH);delayMicroseconds(5);digitalWrite(pingPin6, LOW);pinMode(pingPin6, INPUT);duration6 = pulseIn(pingPin6, HIGH);cm6 = microsecondsToCentimeters6(duration6);delayMicroseconds(20);pinMode(pingPin5, OUTPUT);digitalWrite(pingPin5, LOW);delayMicroseconds(2);digitalWrite(pingPin5, HIGH);delayMicroseconds(5);digitalWrite(pingPin5, LOW);pinMode(pingPin5, INPUT);duration5 = pulseIn(pingPin5, HIGH);cm5 = microsecondsToCentimeters5(duration5);delayMicroseconds(20);pinMode(pingPin4, OUTPUT);digitalWrite(pingPin4, LOW);delayMicroseconds(2);digitalWrite(pingPin4, HIGH);delayMicroseconds(5);digitalWrite(pingPin4, LOW);pinMode(pingPin4, INPUT);duration4 = pulseIn(pingPin4, HIGH);cm4 = microsecondsToCentimeters4(duration4);delayMicroseconds(20);pinMode(pingPin3, OUTPUT);digitalWrite(pingPin3, LOW);delayMicroseconds(2);digitalWrite(pingPin3, HIGH);delayMicroseconds(5);digitalWrite(pingPin3, LOW);pinMode(pingPin3, INPUT);duration3 = pulseIn(pingPin3, HIGH);cm3 = microsecondsToCentimeters3(duration3);delayMicroseconds(20);// Printen der Entfernungswerte in den Serialmonitor.// -> 5 Werte pro Zeile, diese werden von dort von MAX/MSP ausgelesen.Serial.print(cm7);Serial.print(" ");Serial.print(cm6);Serial.print(" ");Serial.print(cm5);Serial.print(" ");Serial.print(cm4);Serial.print(" ");Serial.print(cm3);Serial.print(" ");Serial.println();delay(100);}// Definieren der Funktionen zur Umrechnung der Zeitdauer in Entfernung// Schallgeschwindigkeit: 343m/s oder 29 cm/mslong microsecondsToCentimeters7(long microseconds7){return microseconds7 / 29 / 2;}long microsecondsToCentimeters6(long microseconds6){return microseconds6 / 29 / 2;}long microsecondsToCentimeters5(long microseconds5){return microseconds5 / 29 / 2;}long microsecondsToCentimeters4(long microseconds4){return microseconds4 / 29 / 2;}long microsecondsToCentimeters3(long microseconds3){return microseconds3 / 29 / 2;}
Der Code basiert auf folgendem Tutorial, das von www.arduino.cc zur Verfügung gestellt wird: