وصلنا للدرس الأكثر إثارة — بناء روبوت متحرك حقيقي! روبوت Differential Drive يعتمد على محركين مستقلين: بتشغيلهما معاً للأمام يتحرك الروبوت إلى الأمام، وبتفاوت السرعات يلتفت، وبعكس الاتجاه يرتد. إنها نفس الفكرة المستخدمة في روبوتات Mars Rover!
روبوت Differential Drive — حركات أساسية
للأمام
↑
↑
للخلف
↓
↓
يمين
↑
–
يسار
–
↑
قائمة مستلزمات روبوت المبتدئ
🛹 هيكل روبوت (Chassis Kit) بعجلتين
⚙️ L298N Motor Driver Module
🧠 Arduino UNO + كابل USB
🔋 بطاريات 18650 × 2 + حامل
📡 وحدة HC-SR04 لتجنب العوائق
🔌 أسلاك توصيل وبريدبورد
التكلفة الإجمالية: 15-25 دولار تقريباً
// ===== روبوت يتجنب العوائق =====
#include
// محركات (L298N)
const int ENA=9, IN1=7, IN2=8; // محرك أيسر
const int ENB=10,IN3=5, IN4=6; // محرك أيمن
// حساس المسافة
const int TRIG=11, ECHO=12;
void setup() {
pinMode(ENA,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
pinMode(ENB,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
pinMode(TRIG,OUTPUT); pinMode(ECHO,INPUT);
}
float getDistance() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
return pulseIn(ECHO, HIGH) * 0.034 / 2.0;
}
void moveForward(int spd) {
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); analogWrite(ENA,spd);
digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); analogWrite(ENB,spd);
}
void turnRight(int spd) {
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); analogWrite(ENA,spd);
digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); analogWrite(ENB,0);
}
void stopRobot() {
analogWrite(ENA,0); analogWrite(ENB,0);
}
void loop() {
float dist = getDistance();
if (dist < 20) {
stopRobot(); delay(300);
turnRight(180); delay(500); // التفاف
} else {
moveForward(200);
}
delay(50);
} ابدأ بالبريدبورد والاختبار على المنضدة قبل تثبيت كل شيء على الهيكل — أسهل بكثير في إصلاح الأخطاء!