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


// Определение пинов
const int trigPin = 9;
const int echoPin = 8;

const int greenLed = 4;
const int yellowLed = 5;
const int redLed = 6;
const int buzzerPin = 7;

void setup() {
  // Настройка пинов датчика
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  // Настройка пинов индикации
  pinMode(greenLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  
  // Запуск монитора порта для отладки
  Serial.begin(9600);
}

void loop() {
  // 1. Отправка ультразвукового импульса
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // 2. Измерение времени возврата эха
  long duration = pulseIn(echoPin, HIGH);
  
  // 3. Перевод времени в сантиметры
  int distance = duration * 0.034 / 2;
  
  // Вывод расстояния в Serial-монитор
  Serial.print("Dist: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  // 4. Логика работы парктроника
  if (distance > 40 || distance <= 0) {
    // Безопасная зона (далеко)
    digitalWrite(greenLed, HIGH);
    digitalWrite(yellowLed, LOW);
    digitalWrite(redLed, LOW);
    noTone(buzzerPin);
  } 
  else if (distance <= 40 && distance > 20) {
    // Средняя зона (предупреждение)
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, HIGH);
    digitalWrite(redLed, LOW);
    
    // Редкие звуковые сигналы
    tone(buzzerPin, 1000);
    delay(100);
    noTone(buzzerPin);
    delay(400);
  } 
  else {
    // Опасная зона (очень близко)
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, LOW);
    digitalWrite(redLed, HIGH);
    
    // Частые звуковые сигналы
    tone(buzzerPin, 2000);
    delay(100);
    noTone(buzzerPin);
    delay(100);
  }
  
  delay(50); // Небольшая пауза перед следующим замером
}