byte ledPin[] = {14, 15, 16, 17, 18}; // LEDs indicate active SR04
long duration, distance; // HC-SR04 measurements
byte trigPin[] = {2, 4, 6, 8, 10};
byte echoPin[] = {3, 5, 7, 9, 11};
byte sensors = sizeof(trigPin)/sizeof(trigPin[0]); // determine number of sensors
byte sensor = 0; // sensor counter
unsigned long timer, interval = 250; // timers
void setup() {
Serial.begin (115200);
for (int i = 0; i < sensors; i++) {
pinMode(echoPin[i], INPUT);
pinMode(trigPin[i], OUTPUT);
pinMode(ledPin[i], OUTPUT);
}
}
void loop() {
if (millis() - timer > interval) { // waiting for "interval" to elapse
timer = millis(); // store "now" time
if (sensor == sensors) { // count equals sensors
sensor = 0; // reset sensor counter
Serial.println(); // format Serial Monitor output
}
myPing(sensor); // call myPing() function
sensor++; // increment sensor counter
}
}
void myPing(int SR04) {
digitalWrite(ledPin[SR04], HIGH); // indicate active SR04
Serial.print("D");
Serial.print(SR04);
Serial.print(": ");
// ping
digitalWrite(trigPin[SR04], LOW);
delayMicroseconds(2);
digitalWrite(trigPin[SR04], HIGH);
delayMicroseconds(10);
digitalWrite(trigPin[SR04], LOW);
float distance = pulseIn(echoPin[SR04], HIGH) / 58.2;
if (distance < 100) Serial.print(" ");
if (distance < 10) Serial.print(" ");
Serial.print(distance);
// Serial.print(pulseIn(echoPin[SR04], HIGH) / 58.2 ); // (time / 2) / 29.1
// print/LED
Serial.print(" ");
digitalWrite(ledPin[SR04], LOW);
}