🚗 ماموریت ۳۸: ماشین رباتیک

دو موتور روی یه درایور. توابع جدا برای جلو، عقب، چپ و راست بنویس.

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

هدف‌ها

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

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

جواب کامل

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

سیم‌کشی

  1. Arduino Uno (VCC5) ⟷ L293D Motor Driver (P16)
  2. L293D Motor Driver (P4) ⟷ Arduino Uno (GND1)
  3. 9V Battery (کتابی) (VCC) ⟷ L293D Motor Driver (P8)
  4. 9V Battery (کتابی) (GND) ⟷ Arduino Uno (GND2)
  5. Arduino Uno (D4) ⟷ L293D Motor Driver (P2)
  6. Arduino Uno (D5) ⟷ L293D Motor Driver (P7)
  7. Arduino Uno (D9) ⟷ L293D Motor Driver (P1)
  8. L293D Motor Driver (P3) ⟷ موتور DC (MOTOR_POS)
  9. L293D Motor Driver (P6) ⟷ موتور DC (MOTOR_NEG)
  10. Arduino Uno (D6) ⟷ L293D Motor Driver (P10)
  11. Arduino Uno (D7) ⟷ L293D Motor Driver (P15)
  12. Arduino Uno (D10) ⟷ L293D Motor Driver (P9)
  13. L293D Motor Driver (P11) ⟷ موتور DC (MOTOR_POS)
  14. L293D Motor Driver (P14) ⟷ موتور DC (MOTOR_NEG)

کد

// موتور چپ
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 setupMotors() {
  int pins[] = {l1, l2, lEn, r1, r2, rEn};
  for (int i = 0; i < 6; i++) pinMode(pins[i], OUTPUT);
}

void forward()  { motors(180, 180); }
void back()     { motors(-180, -180); }
void left()     { motors(-150, 150); }
void right()    { motors(150, -150); }
void stopAll()  { motors(0, 0); }

void setup() {
  setupMotors();
  Serial.begin(9600);
}

void loop() {
  Serial.println("jolo");  forward(); delay(1500);
  Serial.println("rast");  right();   delay(600);
  Serial.println("jolo");  forward(); delay(1500);
  Serial.println("chap");  left();    delay(600);
  stopAll();               delay(1000);
}

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

↔️

ماموریت ۳۷: موتور در دو جهت

🤖

ماموریت ۳۹: ربات مانع‌گریز

⚡

ماموریت ۳۶: شمارش با وقفه

📡

ماموریت ۴۰: رادار چرخان

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