// Определение пинов
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); // Небольшая пауза перед следующим замером
}