// تعريف متغير لتخزين البيانات المستقبلة من البلوتوث
int SR = 0;
void setup()
{
// بدء الاتصال التسلسلي مع وحدة البلوتوث بمعدل نقل بيانات 9600 بت في الثانية
Serial.begin(9600);
// تعريف المنافذ المتصلة بمتحكم المحركات كمنافذ إخراج
pinMode(10, OUTPUT); // المحرك الأيمن - الدوران للأمام
pinMode(11, OUTPUT); // المحرك الأيمن - الدوران للخلف
pinMode(12, OUTPUT); // المحرك الأيسر - الدوران للأمام
pinMode(13, OUTPUT); // المحرك الأيسر - الدوران للخلف
}
void loop()
{
// قراءة البيانات القادمة من البلوتوث وتخزينها في المتغير SR
SR = Serial.read();
// عند استقبال الحرف 'F' (كود ASCII 70) تتحرك السيارة للأمام
if (SR == 70) {
digitalWrite(10, HIGH); // تشغيل المحرك الأيمن للأمام
digitalWrite(11, LOW); // إيقاف الدوران للخلف
digitalWrite(12, HIGH); // تشغيل المحرك الأيسر للأمام
digitalWrite(13, LOW); // إيقاف الدوران للخلف
}
// عند استقبال الحرف 'B' (كود ASCII 66) تتحرك السيارة للخلف
if (SR == 66) {
digitalWrite(10, LOW); // إيقاف الدوران للأمام
digitalWrite(11, HIGH); // تشغيل المحرك الأيمن للخلف
digitalWrite(12, LOW); // إيقاف الدوران للأمام
digitalWrite(13, HIGH); // تشغيل المحرك الأيسر للخلف
}
// عند استقبال الحرف 'R' (كود ASCII 82) تتحرك السيارة إلى اليمين
if (SR == 82) {
digitalWrite(10, HIGH); // تشغيل المحرك الأيمن للأمام
digitalWrite(11, LOW); // إيقاف الدوران للخلف
digitalWrite(12, LOW); // إيقاف المحرك الأيسر
digitalWrite(13, LOW); // إيقاف المحرك الأيسر
}
// عند استقبال الحرف 'L' (كود ASCII 76) تتحرك السيارة إلى اليسار
if (SR == 76) {
digitalWrite(10, LOW); // إيقاف المحرك الأيمن
digitalWrite(11, LOW); // إيقاف المحرك الأيمن
digitalWrite(12, HIGH); // تشغيل المحرك الأيسر للأمام
digitalWrite(13, LOW); // إيقاف الدوران للخلف
}
// عند استقبال الحرف 'S' (كود ASCII 83) تتوقف السيارة تمامًا
if (SR == 83) {
digitalWrite(10, LOW); // إيقاف المحرك الأيمن
digitalWrite(11, LOW); // إيقاف المحرك الأيمن
digitalWrite(12, LOW); // إيقاف المحرك الأيسر
digitalWrite(13, LOW); // إيقاف المحرك الأيسر
}
// تأخير بسيط لتحسين أداء المحاكاة
delay(10);
}