🚗 سنسور پارک — همان بوقی که در ماشین می‌شنوی

سنسور پارک ماشین دقیقاً همان کاری را می‌کند که تو می‌توانی با یک اولتراسونیک و یک بازر بسازی: هرچه نزدیک‌تر، بوق تندتر.

ایده‌ی اصلی: فاصله را به ریتم تبدیل کن

به‌جای یک بوق ثابت، فاصله‌ی بین بوق‌ها را به فاصله‌ی مانع گره بزن. دور: بوق‌های تک و آهسته. نزدیک: تندتر. خیلی نزدیک: بوق ممتد.

چرا اینجا نمی‌شود از delay استفاده کرد

اگر با delay بین بوق‌ها صبر کنی، در آن مدت فاصله را نمی‌خوانی و سنسور کند و بی‌جان می‌شود. اینجا دقیقاً جایی است که millis() لازم است.

const int trig = 9, echo = 10, buzzer = 8;
unsigned long lastBeep = 0;
bool beepOn = false;

long readDistance() {
  digitalWrite(trig, LOW);  delayMicroseconds(2);
  digitalWrite(trig, HIGH); delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long d = pulseIn(echo, HIGH, 30000);
  return d == 0 ? 400 : d / 58;
}

void setup() {
  pinMode(trig, OUTPUT); pinMode(echo, INPUT); pinMode(buzzer, OUTPUT);
}

void loop() {
  long cm = readDistance();

  long gap;                                  // فاصله‌ی بین بوق‌ها
  if (cm > 100)     gap = 0;                 // خبری نیست
  else if (cm > 50) gap = 700;
  else if (cm > 25) gap = 350;
  else if (cm > 10) gap = 150;
  else              gap = -1;                // ممتد

  if (gap == 0) {
    noTone(buzzer);
  } else if (gap == -1) {
    tone(buzzer, 2000);
  } else if (millis() - lastBeep >= gap) {
    lastBeep = millis();
    beepOn = !beepOn;
    if (beepOn) tone(buzzer, 1500); else noTone(buzzer);
  }

  delay(50);
}

قدم بعدی

سنسور پارک را بساز 🚗

مقاله‌های دیگر

🤖

آردوینو چیست؟ راهنمای کامل برای شروع از صفر

بهترین شبیه‌ساز مدار آنلاین فارسی — چرا شبیه‌ساز، و چرا روبومیکر؟

💡

ساده‌ترین پروژه الکترونیک برای بچه‌ها: روشن‌کردن یک LED