I am testing two Ultrasonic Sensors HC-SR04, it is works good. I just wonder if I can use Array operations to deal with more sensors say 6 of them as follow:
Thanks.
int UlsEcho[] = {UlsBinLE, UlsBinRE, UlsFrontE, UlsBackE, UlsLeftE, UlsRightE};
for (int i = 0; i < 6; i++) //
{
duration[i] = pulseIn(UlsEcho[i], HIGH);
// Calculating the distance
distance[i] = duration[i] * 0.034 / 2;
Val[i] = map(distance[i], 0, 1023, 0, 100);
}
here is the whole code:
// defines pins numbers
const int trigPinA = 31;
const int echoPinA = 29;
const int trigPinB = 26;
const int echoPinB = 24;
// defines variables
long durationA;
int distanceA;
const int ledA = 8;
const int ledB = 9;
const int BUZZER = 10;
int ValA = 0;
int ValB = 0;
int T0 = 5;
long durationB;
int distanceB;
void setup() {
pinMode(trigPinA, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPinA, INPUT); // Sets the echoPin as an Input
pinMode(trigPinB, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPinB, INPUT); // Sets the echoPin as an Input
pinMode(BUZZER, OUTPUT); // Sets the trigPin as an Output
Serial.begin(9600); // Starts the serial communication
}
void loop() {
digitalWrite(BUZZER, LOW);
// Clears the trigPin
digitalWrite(trigPinA, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPinA, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinA, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
durationA = pulseIn(echoPinA, HIGH);
// Calculating the distance
distanceA = durationA * 0.034 / 2;
ValA = map(distanceA, 0, 1023, 0, 100);
// Prints the distance on the Serial Monitor
Serial.print("DistanceA: ");
Serial.println(distanceA);
// Clears the trigPin
digitalWrite(trigPinB, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPinB, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinB, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
durationB = pulseIn(echoPinB, HIGH);
// Calculating the distance
distanceB = durationB * 0.034 / 2;
ValB = map(distanceB, 0, 1023, 0, 100);
// Prints the distance on the Serial Monitor
Serial.print("DistanceB: ");
Serial.println(distanceB);
if (ValA - ValB <= T0) {
digitalWrite(ledA, HIGH);
delay(100);
digitalWrite(ledA, LOW);
}
if (ValA - ValB <= T0 && ValA < ValB) {
digitalWrite(ledB, HIGH);
delay(100);
digitalWrite(ledB, LOW);
digitalWrite(BUZZER, LOW);
delay(1000);
}
}

