🛤️ درس 52: ربات دنبال‌کننده‌ی خط

کلاسیک‌ترین ربات مسابقات — با یک منطق بسیار ساده.

سطح: پیشرفته · زمان: حدود 16 دقیقه · مفاهیم: سنسور IR، منطق، ربات

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

  1. سنسور چطور خط را می‌بیند؟
  2. قدم ۱ — منطق چهار حالته
  3. قدم ۲ — سه چیزی که واقعاً تفاوت می‌سازد
  4. چالش: خط را گم کردی، چه کار می‌کنی؟

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

const int sLeft = 2, sRight = 3;
const int l1 = 4, l2 = 5, lEn = 9;
const int r1 = 6, r2 = 7, rEn = 10;

void motors(int lSpeed, int rSpeed) {
  digitalWrite(l1, lSpeed >= 0);
  digitalWrite(l2, lSpeed < 0);
  analogWrite(lEn, lSpeed >= 0 ? lSpeed : -lSpeed);
  digitalWrite(r1, rSpeed >= 0);
  digitalWrite(r2, rSpeed < 0);
  analogWrite(rEn, rSpeed >= 0 ? rSpeed : -rSpeed);
}

void setup() {
  pinMode(sLeft, INPUT);
  pinMode(sRight, INPUT);
  int pins[] = {l1, l2, lEn, r1, r2, rEn};
  for (int i = 0; i < 6; i++) pinMode(pins[i], OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool onL = (digitalRead(sLeft) == LOW);    // LOW = سیاه
  bool onR = (digitalRead(sRight) == LOW);

  if (!onL && !onR)      motors(160, 160);   // مستقیم
  else if (onL && !onR)  motors(0, 160);     // چپ بپیچ
  else if (!onL && onR)  motors(160, 0);     // راست بپیچ
  else                   motors(0, 0);       // بایست

  Serial.print("chap:");
  Serial.print(onL ? 1 : 0);
  Serial.print(" rast:");
  Serial.println(onR ? 1 : 0);
  delay(20);
}

چرا این درس؟

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

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

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

🚙

درس 51: ماشین رباتیک

🚧

درس 53: ربات فرار از مانع