// Подключаем библиотеку для работы с дальномером #include // Даём понятное имя пину 3 с пищалкой constexpr uint8_t BUZZER_PIN = 3; // Даём понятные имена пинам 12 и 11 с дальномером constexpr uint8_t TRIG_PIN = 12; constexpr uint8_t ECHO_PIN = 11; // Создаём константы для хранения минимальной и максимальной частоты в Гц constexpr int MIN_FREQUENCY = 634; constexpr int MAX_FREQUENCY = 912; // Создаём константы для задержки ноты и паузы в мс constexpr int DELAY_NOTE = 7; constexpr int DELAY_PAUSE = 500; // Создаём константу для хранения тригера сигнализации в см constexpr int DISTANCE_ALARM = 10; // Создаём объект для работы с дальномером EasyUltrasonic distSensor; void setup() { // Настраиваем пин с пищалкой в режим выхода pinMode(BUZZER_PIN, OUTPUT); // Подключаем дальномер distSensor.attach(TRIG_PIN, ECHO_PIN); // Включаем стартовую мелодию melodyStart(); } void loop() { // Считываем расстояние до объекта в см float distance = distSensor.getDistanceCM(); // Задержка для стабилизации показаний delay(10); // Если текущее расстояние до препятствия меньше тригера if (distance < DISTANCE_ALARM) { // Включаем звуковую сигнализацию melodyAlarm(); } } // Функция стартовой мелодии void melodyStart() { tone(BUZZER_PIN, 300, 500); delay(1000); tone(BUZZER_PIN, 400, 500); delay(1000); tone(BUZZER_PIN, 500, 500); delay(1000); tone(BUZZER_PIN, 700, 300); delay(1000); } // Функция звуковой сигнализации void melodyAlarm() { // Создаём константу для хранения текущей частоты int frequency; // Медленно восходящий тон for (frequency = MIN_FREQUENCY; frequency <= MAX_FREQUENCY; frequency++) { tone(BUZZER_PIN, frequency); delay(DELAY_NOTE); } // Медленно нисходящий тон for (frequency = MAX_FREQUENCY; frequency >= MIN_FREQUENCY; frequency--) { tone(BUZZER_PIN, frequency); delay(DELAY_NOTE); } // Пауза noTone(BUZZER_PIN); delay(DELAY_PAUSE); // Серия быстро восходящих и нисходящих тонов for (int count = 0; count < 10; count++) { for (frequency = MIN_FREQUENCY; frequency <= MAX_FREQUENCY; frequency++) { tone(BUZZER_PIN, frequency); delayMicroseconds(50); } for (frequency = MAX_FREQUENCY; frequency >= MIN_FREQUENCY; frequency--) { tone(BUZZER_PIN, frequency); delayMicroseconds(50); } } // Пауза noTone(BUZZER_PIN); delay(DELAY_PAUSE); // Серия повторяющего тона for (int count = 0; count < 3; count++) { tone(BUZZER_PIN, (MIN_FREQUENCY + MAX_FREQUENCY) / 6, 300); delay(DELAY_NOTE * 75); } // Пауза noTone(BUZZER_PIN); delay(DELAY_PAUSE); }