🤖 درس 100: پروژه‌ی پایانی: ربات هوشمند

ماشین رباتیک با سنسور مانع، کلید حالت خودکار/دستی — نقشه، ساخت، کد و تست.

سطح: پیشرفته · زمان: حدود 25 دقیقه · مفاهیم: پروژه‌ی پایانی، ربات، L293D، اولتراسونیک

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

  1. نقشه: ربات چه کار کند؟
  2. قدم ۱ — ساخت
  3. قدم ۲ — کد قسمت ۱: تست تک‌تک قطعه‌ها
  4. قدم ۳ — کد قسمت ۲: مغز ربات
  5. نکته‌های تست و عیب‌یابی
  6. چالش پایانی: ربات خودت

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

// قسمت ۱: تست تک‌تک قطعه‌ها قبل از مغز ربات
// موتور چپ: IN1 = 4، IN2 = 5، EN = 9 — موتور راست: IN3 = 6، IN4 = 7، EN = 10
const int l1 = 4, l2 = 5, lEn = 9;
const int r1 = 6, r2 = 7, rEn = 10;
const int TRIG = 12, ECHO = 13, MODE = 2, BUZZ = 8;

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

long distanceCm() {
  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;      // 0 = no echo = nothing near
}

void setupRobot() {
  int pins[] = {l1, l2, lEn, r1, r2, rEn, TRIG};
  for (int i = 0; i < 7; i++) pinMode(pins[i], OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(MODE, INPUT_PULLUP);
  Serial.begin(9600);
}

void setup() {
  setupRobot();
  Serial.println("test: jolo, aghab, chap, rast");
  motors(180, 180);  delay(1000);
  motors(-180, -180); delay(1000);
  motors(-150, 150); delay(700);
  motors(150, -150); delay(700);
  motors(0, 0);
}

void loop() {
  Serial.print("fasele:");
  Serial.print(distanceCm());
  Serial.print(" mode:");
  Serial.println(digitalRead(MODE) == LOW ? "auto" : "dasti");
  delay(300);
}

چرا این درس؟

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

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

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

⚙️

درس 99: استپر نرم با AccelStepper