#include //servo library Servo servo; int trigPin = 5; int echoPin = 6; int servoPin = 7; int led = 10; long duration, dist, average; long aver[3]; //array for average void setup() { Serial.begin(9600); servo.attach(servoPin); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); servo.write(0); //close cap on power on delay(100); servo.detach(); } void measure() { digitalWrite(10, HIGH); digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(15); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); dist = (duration / 2) / 29.1; //obtain distance } void loop() { for (int i = 0; i <= 2; i++) { //average distance measure(); aver[i] = dist; delay(10); //delay between measurements } dist = (aver[0] + aver[1] + aver[2]) / 3; if ( dist < 50 ) { //改 ;我改了delay 时间,加喇叭,改 distance servo.attach(servoPin); delay(1); servo.write(180); tone(11, 524, 950); //buzzer or speaker frequency delay(3500); servo.write(0); delay(1000); servo.detach(); } Serial.print(dist); }