// five HC-SR04
// Getting the position of a person in a 2 x 2 circle
// https://forum.arduino.cc/t/getting-the-position-of-a-person-in-a-2-x-2-circle/1418836
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
uint32_t nextPing, interval = 250; // nextPings
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() > nextPing) { // Time Due?
nextPing += interval;
myPing(sensor); // call myPing() function
if (++sensor == sensors) { // Cycle through sensors
sensor = 0; // reset sensor counter
Serial.println(); // format Serial Monitor output
}
}
}
void myPing(int SR04) {
digitalWrite(ledPin[SR04], HIGH); // indicate active SR04
Serial.print('D');
Serial.print(SR04);
Serial.print(':');
// ping
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('\t');
digitalWrite(ledPin[SR04], LOW);
}D1
D2
D3
D4
D5