int echoPin = 11;
int trigPin = 12;
long duration=0;
long cm=0;
int temp[10]={0};// храним выборку измерений
int insert =0;
int j=0;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
for (int i=0;i<=9;i++){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
temp[i]=pulseIn(echoPin, HIGH);
}
for(int i=0;i<=9;i++){//сортировка
insert = temp[i];
j=i-1;
while((j>=0)and(temp[j]>insert)){
temp[j+1]=temp[j];
j--;
}
temp[j+1]=insert;
}
duration=0;
for(int i=2;i<=7;i++){
duration+=temp[i]/58,8; // преобразуем время в расстояние
}
cm = duration / 6;
Serial.print("cm=");
Serial.println(cm);
delay(500);
}
В случаи ошибки измерения или истечения времени ожидания, — функция выдает ноль.