const int trigPin = 9; const int Buzzer = 8; const int echoPin = 10; long previousDistance = 0; // Переменная для хранения предыдущего значения расстояния void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(Buzzer, OUTPUT); // Устанавливаем пьезоэлемент как выход } void loop() { long duration, distance; noTone(Buzzer); // Останавливаем любой предыдущий тон digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration / 2) / 29.1; Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); // Проверяем, изменилось ли расстояние if (distance != previousDistance) { tone(Buzzer, 300); // Включаем тон на пьезоэлементе с частотой 300 Гц delay(100); // Даем тону посигналить 100 мс noTone(Buzzer); // Выключаем тон } previousDistance = distance; // Обновляем предыдущую дистанцию delay(500); }
ПЖЖ