🅿️ ماموریت ۲۳: حسگر پارک

هرچی نزدیک‌تر، بوق تندتر. فاصله رو با map به فاصله‌ی زمانی بوق تبدیل کن.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد

هدف‌ها

قطعه‌های لازم

▶ همین ماموریت را در شبیه‌ساز امتحان کن
💡 گیر کردی؟ داخل شبیه‌ساز راهنما را ببین، و اگر باز هم نشد دکمه‌ی «برام حلش کن» مدار را برایت می‌چیند تا ببینی چطور کار می‌کند.

جواب کامل

اول خودت امتحان کن! بعد جواب را ببین 👀

سیم‌کشی

  1. Arduino Uno (VCC5) ⟷ Ultrasonic (HC-SR04) (VCC)
  2. Arduino Uno (D9) ⟷ Ultrasonic (HC-SR04) (TRIG)
  3. Ultrasonic (HC-SR04) (ECHO) ⟷ Arduino Uno (D10)
  4. Ultrasonic (HC-SR04) (GND) ⟷ Arduino Uno (GND1)
  5. Arduino Uno (D8) ⟷ بازر زنگی (POS)
  6. بازر زنگی (NEG) ⟷ Arduino Uno (GND2)

کد

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);
  Serial.begin(9600);
}

void loop() {
  // closer = higher pitch
  int pitch = map(50, 0, 100, 2000, 200);
  long cm = readDistance();
  Serial.print("fasele:");
  Serial.println(cm);

  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);
}

ماموریت‌های مشابه

📏

ماموریت ۲۲: فاصله‌سنج

7️⃣

ماموریت ۲۵: شمارش صفر تا نه

📊

ماموریت ۲۷: داشبورد سنسور

🎭

ماموریت ۱۸: دو چشمک با دو سرعت

📚 برای یاد گرفتن پایه‌ها سری به دوره‌ی آموزش آردوینو بزن · 🎯 همه‌ی ماموریت‌ها