Тема 7: Эксперимент. Простая система парковки.

Ультразвуковой датчик. Если расстояние меньше 50, загорится красный светодиод, раздастся звуковой сигнал и двигатель будет запущен.

Компоненты:

Датчик расстояния
Двигатель
Пьезо
LED

https://drive.google.com/file/d/1hoUXp7uy2jq20IFyLq2krGSUe-IHvI8U/view?usp=sharing

#define ECHO_PIN 7

#define TRIG_PIN 8

int switchPin = 2; // лулит1

int motor1Pin1 = 3; // пин 2 (L293D)
int motor1Pin2 = 4; // пин 7 (L293D)
int enablePin = 9; // пин 1 (L293D)
const int buzzerPin = 10;
int distance = 1;
int duration;
int LedPin = 13;

bool systemEnabled = false;

void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(LedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);

// входы
pinMode(switchPin, INPUT);

// выходы
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);

// активировать мотор1
digitalWrite(enablePin, HIGH);
}

void loop() {
// Проверка состояния кнопки для включения/выключения системы
if (digitalRead(switchPin) == HIGH) {
systemEnabled = !systemEnabled;
delay(300); // задержка для предотвращения дребезга кнопки
}

if (systemEnabled) {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);

duration = pulseIn(ECHO_PIN, HIGH);
distance = duration / 58;
Serial.println(distance);

if (distance < 50) {
  digitalWrite(LedPin, HIGH);
  tone(buzzerPin, 1000); // Включить сигнал тревоги
  digitalWrite(motor1Pin1, HIGH); // пин 2 (L293D) HIGH
  digitalWrite(motor1Pin2, LOW);  // пин 7 (L293D) LOW
} else {
  digitalWrite(LedPin, LOW);
  noTone(buzzerPin); // Выключить сигнал тревоги
  digitalWrite(motor1Pin1, LOW);  // пин 2 (L293D) LOW
  digitalWrite(motor1Pin2, LOW);  // пин 7 (L293D) LOW
}

} else {
digitalWrite(LedPin, LOW);
noTone(buzzerPin); // Выключить сигнал тревоги
digitalWrite(motor1Pin1, LOW); // пин 2 (L293D) LOW
digitalWrite(motor1Pin2, LOW); // пин 7 (L293D) LOW
}
}