🤖 درس 100: پروژهی پایانی: ربات هوشمند
ماشین رباتیک با سنسور مانع، کلید حالت خودکار/دستی — نقشه، ساخت، کد و تست.
سطح: پیشرفته · زمان: حدود 25 دقیقه · مفاهیم: پروژهی پایانی، ربات، 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);
}
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);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓