🤖 ربات هوشمند (پروژه‌ی پایانی)

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

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

// قسمت ۲: ربات هوشمند — حالت خودکار (مانع‌گریز) و حالت دستی (سریال)
// موتور چپ: 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);
}

const int SLOW = 20, STOP = 12;   // cm
char cmd = 'x';

void setup() {
  setupRobot();
  Serial.println("dasti: w a s d x");
}

void loop() {
  long d = distanceCm();

  if (digitalRead(MODE) == LOW) {                  // AUTO
    if (d < STOP) {
      motors(0, 0); tone(BUZZ, 1200, 100);
      motors(-150, -150); delay(300);              // back up a little
      motors(150, -150); delay(400);               // turn away
    } else if (d < SLOW) {
      motors(110, 110);                            // careful
    } else {
      motors(200, 200);
    }
  } else {                                         // MANUAL
    if (Serial.available()) cmd = Serial.read();
    if (cmd == 'w' && d < STOP) cmd = 'x';         // safety even in manual
    if (cmd == 'w') motors(180, 180);
    else if (cmd == 's') motors(-180, -180);
    else if (cmd == 'a') motors(-150, 150);
    else if (cmd == 'd') motors(150, -150);
    else motors(0, 0);
  }
  delay(50);
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «ربات هوشمند (پروژه‌ی پایانی)» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖