🤖 ربات هوشمند (پروژهی پایانی)
ماشین دو موتوره با L293D، سنسور فاصله، کلید حالت خودکار/دستی و بوق.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سهبعدی + کد)
قطعات لازم
- برد آردوینو Uno
- درایور موتور L293D
- موتور DC × 2
- باتری ۹ ولت (مود سهبعدی)
- حسگر فاصله (HC-SR04)
- کلید کشویی
- بازر زنگی
کد کامل پروژه
// قسمت ۲: ربات هوشمند — حالت خودکار (مانعگریز) و حالت دستی (سریال)
// موتور چپ: 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);
}
چطور اجرایش کنم؟
- شبیهساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
- از پنل «نمونهها»، «ربات هوشمند (پروژهی پایانی)» را بارگذاری کن — مدار و کد با هم میآیند.
- دکمهی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
- حالا کد را تغییر بده — عددها، پینها، ترتیب — و دوباره اجرا کن!