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


const int sigPin = 9;    // Пин для датчика (и Trig, и Echo)
const int ledPin = 13;
const int buzzerPin = 8;
const int distanceThreshold = 20;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long duration;
  int distance;

  // 1. Отправляем импульс (пин работает как OUTPUT)
  pinMode(sigPin, OUTPUT);
  digitalWrite(sigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(sigPin, HIGH);
  delayMicroseconds(5); // Для 3-пиновых датчиков часто нужно 5-10 мкс
  digitalWrite(sigPin, LOW);

  // 2. Слушаем ответ (переключаем пин в INPUT)
  pinMode(sigPin, INPUT);
  duration = pulseIn(sigPin, HIGH);

  // 3. Считаем расстояние
  distance = duration * 0.034 / 2;

  // Логика тревоги
  if (distance > 0 && distance <= distanceThreshold) {
    digitalWrite(ledPin, HIGH);
    tone(buzzerPin, 1000);
    delay(150);
    
    digitalWrite(ledPin, LOW);
    noTone(buzzerPin);
    delay(150);
  } else {
    digitalWrite(ledPin, LOW);
    noTone(buzzerPin);
  }

  Serial.print("Distance: ");
  Serial.println(distance);
  delay(100);
}