Arduino

Hier der Arduino-Code, der für die Umsetzung verwendet wurde: 

// Setzen der Pin-Nummern für die 5 Sensoren
const int pingPin7 = 7;
const int pingPin6 = 6;
const int pingPin5 = 5;
const int pingPin4 = 4;
const int pingPin3 = 3;

void setup() {
  // initialisieren der baud rate
  Serial.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/ms
long 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:

Tutorial Arduino + Ultraschallsensor