Загрузка данных


// Определяем пины
const int trigPin = 9;
const int echoPin = 10;
const int ledPin = 13;
const int buzzerPin = 8;

// Настройка порогового значения (в см)
const int distanceThreshold = 20;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  
  Serial.begin(9600); // Для отладки в мониторе порта
}

void loop() {
  long duration;
  int distance;

  // Генерируем ультразвуковой импульс
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Считаем время возврата волны
  duration = pulseIn(echoPin, HIGH);

  // Вычисляем расстояние в сантиметрах
  distance = duration * 0.034 / 2;

  // Логика срабатывания
  if (distance > 0 && distance <= distanceThreshold) {
    // Препятствие обнаружено — мигаем и пищим
    digitalWrite(ledPin, HIGH);
    tone(buzzerPin, 1000); // Частота 1000 Гц
    delay(200);
    
    digitalWrite(ledPin, LOW);
    noTone(buzzerPin);
    delay(200);
  } else {
    // Всё чисто
    digitalWrite(ledPin, LOW);
    noTone(buzzerPin);
  }

  // Вывод данных для контроля
  Serial.print("Distance: ");
  Serial.println(distance);
  
  delay(50); // Небольшая задержка для стабильности
}