برمجة الأردوينو
في الكود البرمجي سنقوم بمراجعة البيانات الواردة وتنفيذ عملية المقارنة ، اذا كانت البيانات المستقبلة من الهاتف الذكي F يتم تحريك الروبوت للأمام و إذا كانت B يتم تحريكه للخلف و اذا كانت R يتم تغير حركة لليمين و L للتحرك لليسار. ويتم إيقافة إذا كانت البيانات المستقبلة 0 .
قم برفع البرنامج التالي إلى متحكم الأردوينو:
char data = 0; //Variable for storing received data #define right1 7 //IN1 #define right2 8 #define rightE 9 #define left1 6 #define left2 5 #define leftE 10 void Forward(); void Backward(); void Left(); void Right(); void Stop1(); void setup() { Serial.begin(9600); //Sets the baud for serial data transmission pinMode(left1, OUTPUT); pinMode(left2, OUTPUT); pinMode(leftE, OUTPUT); pinMode(right1, OUTPUT); pinMode(right2, OUTPUT); pinMode(rightE, OUTPUT); delay(1000); } void loop() { if(Serial.available() > 0) { data = Serial.read(); //Read the incoming data & store into data switch (data){ case 'F': Forward(); break; case 'B': Backward(); break; case 'L': Left(); break; case 'R': Right(); break; case '0': Stop1(); break; } } } void Forward(){ digitalWrite(right1,1); digitalWrite(right2,0); analogWrite(rightE, 255); digitalWrite(left1,1); digitalWrite(left2,0); analogWrite(leftE, 255); } void Backward(){ digitalWrite(right1,0); digitalWrite(right2,1); analogWrite(rightE, 255); digitalWrite(left1,0); digitalWrite(left2,1); analogWrite(leftE, 255); } void Left(){ digitalWrite(right1,1); digitalWrite(right2,0); analogWrite(rightE, 255); digitalWrite(left1,0); digitalWrite(left2,1); analogWrite(leftE, 255); } void Right(){ digitalWrite(right1,0); digitalWrite(right2,1); analogWrite(rightE, 255); digitalWrite(left1,1); digitalWrite(left2,0); analogWrite(leftE, 255); } void Stop1(){ digitalWrite(left1,0); digitalWrite(left2,0); analogWrite(leftE, 0); digitalWrite(right1,0); digitalWrite(right2,0); analogWrite(rightE, 0); }
شرح الكود :
أولا لفعم الية العمل قم بالاطلاع على الجدول التالي. هو مفيد جدا أثناء كتابة التعليمات البرمجي :
في قسم الـ Loop يتم قراءة البيانات التي تم إرسالها من قبل الهاتف الذكي ثم يتم التحقق منها. فمثلا إذا كانت حرف “F” يتم إستدعاء الدالة Forward()ليتم تحريك الروبوت إلى الأمام ،وإذا كات حرف “B” يتم إستدعاء الدالة backward() ليتم تحريك الروبوت للخلف.
data = Serial.read(); //Read the incoming data & store into data switch (data){ case 'F': Forward(); break; case 'B': Backward(); break; case 'L': Left(); break; case 'R': Right(); break; case '0': Stop1(); break; }
نقوم بإنشاء الدالة Forward() , Backward() , Right(),Left() لتحكم في إتجاهات الروبوت.
و الدالة Stop1() لإيقاف حركة الروبوت
void Stop1(){ digitalWrite(left1,0); digitalWrite(left2,0); analogWrite(leftE, 0); digitalWrite(right1,0); digitalWrite(right2,0); analogWrite(rightE, 0); }