🛤️ درس 52: ربات دنبالکنندهی خط
کلاسیکترین ربات مسابقات — با یک منطق بسیار ساده.
سطح: پیشرفته · زمان: حدود 16 دقیقه · مفاهیم: سنسور IR، منطق، ربات
قدمهای این درس
- سنسور چطور خط را میبیند؟
- قدم ۱ — منطق چهار حالته
- قدم ۲ — سه چیزی که واقعاً تفاوت میسازد
- چالش: خط را گم کردی، چه کار میکنی؟
نمونهای از کد این درس
const int sLeft = 2, sRight = 3;
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 setup() {
pinMode(sLeft, INPUT);
pinMode(sRight, INPUT);
int pins[] = {l1, l2, lEn, r1, r2, rEn};
for (int i = 0; i < 6; i++) pinMode(pins[i], OUTPUT);
Serial.begin(9600);
}
void loop() {
bool onL = (digitalRead(sLeft) == LOW); // LOW = سیاه
bool onR = (digitalRead(sRight) == LOW);
if (!onL && !onR) motors(160, 160); // مستقیم
else if (onL && !onR) motors(0, 160); // چپ بپیچ
else if (!onL && onR) motors(160, 0); // راست بپیچ
else motors(0, 0); // بایست
Serial.print("chap:");
Serial.print(onL ? 1 : 0);
Serial.print(" rast:");
Serial.println(onR ? 1 : 0);
delay(20);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓