← العودة لمغامرة الأردوينو
🎮 أردوينو للأطفال — عالم الحركة

🤖 روبوت يمشي!

⏱ 40 د
وصلنا للدرس الأكثر إثارة — بناء روبوت متحرك حقيقي! روبوت 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);
}
ابدأ بالبريدبورد والاختبار على المنضدة قبل تثبيت كل شيء على الهيكل — أسهل بكثير في إصلاح الأخطاء!
🧠 سؤال سريع
كم محرك يحتاج روبوت بعجلتين؟
🎉 رائع!