🚗 ماموریت ۳۸: ماشین رباتیک
دو موتور روی یه درایور. توابع جدا برای جلو، عقب، چپ و راست بنویس.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه درایور موتور
- ☐ دو موتور
- ☐ کد تابع خودت داشته باشه
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- درایور موتور L293D
- موتور DC × ۲
- 9V Battery (کتابی)
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (VCC5) ⟷ L293D Motor Driver (P16)
- L293D Motor Driver (P4) ⟷ Arduino Uno (GND1)
- 9V Battery (کتابی) (VCC) ⟷ L293D Motor Driver (P8)
- 9V Battery (کتابی) (GND) ⟷ Arduino Uno (GND2)
- Arduino Uno (D4) ⟷ L293D Motor Driver (P2)
- Arduino Uno (D5) ⟷ L293D Motor Driver (P7)
- Arduino Uno (D9) ⟷ L293D Motor Driver (P1)
- L293D Motor Driver (P3) ⟷ موتور DC (MOTOR_POS)
- L293D Motor Driver (P6) ⟷ موتور DC (MOTOR_NEG)
- Arduino Uno (D6) ⟷ L293D Motor Driver (P10)
- Arduino Uno (D7) ⟷ L293D Motor Driver (P15)
- Arduino Uno (D10) ⟷ L293D Motor Driver (P9)
- L293D Motor Driver (P11) ⟷ موتور DC (MOTOR_POS)
- 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);
}
ماموریتهای مشابه
↔️
ماموریت ۳۷: موتور در دو جهت
🤖
ماموریت ۳۹: ربات مانعگریز
⚡
ماموریت ۳۶: شمارش با وقفه
📡
ماموریت ۴۰: رادار چرخان
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها