🚗 درس 44: سنسور پارک ماشین

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

سطح: پیشرفته · زمان: حدود 13 دقیقه · مفاهیم: اولتراسونیک، millis، ریتم

قدم‌های این درس

  1. ایده: فاصله = ریتم
  2. قدم ۱ — چرا اینجا delay جواب نمی‌دهد
  3. قدم ۲ — بازخورد دیداری هم بده
  4. چالش: میانگین بگیر

نمونه‌ای از کد این درس

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

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

⚡

درس 43: وقفه: گوش‌به‌زنگ همیشگی

🏠

درس 45: خانه‌ی هوشمند