الكود البرمجى :
يدور المحرك في الاتجاه الاول لمدة 3 ثوان ثم يتوقف مدة 3 ثوان و يدور فى الاتجاه المضاد لمده 3 ثوان ثم يتوقف مدة 3 ثوان اخرى وهكذا حتى يتم فصل التيار الكهربائي
#define MOTOR_IN1 12 #define MOTOR_IN2 13 void motor_forward(void); // a function that will be called to rotate it clockwise void motor_reverse(void); // a function that will be called to totate it counter-clockwise void motor_stop(void); // a function that will be called to stop the rotation void setup() { pinMode(MOTOR_IN1, OUTPUT); // set the first pin of the relay as output pinMode(MOTOR_IN2, OUTPUT); // set the 2nd pin of the relay as output } void loop() { motor_forward(); // move forward/clockwise delay(3000); // keep rotating cw for 3 seconds motor_stop(); // stop rotating delay(3000); // stand still for 3 seconds motor_reverse(); // reverse the rotation direction/ccw delay(3000); // keep rotating ccw for 3 seconds motor_stop(); // stop rotating delay(3000); // stand still for 3 seconds } void motor_forward(void) // the function that will cause the motor to rotate cw { digitalWrite(MOTOR_IN1, HIGH); digitalWrite(MOTOR_IN2, LOW); } void motor_reverse(void) // the function that will cause the motor to rotate ccw { digitalWrite(MOTOR_IN1, LOW); digitalWrite(MOTOR_IN2, HIGH); } void motor_stop(void) // the function that will cause the motor to stop rotating { digitalWrite(MOTOR_IN1, LOW); digitalWrite(MOTOR_IN2, LOW); }
شرح الكود البرمجي
هنا قمنا بضبط المخارج الموصولة على الدارة المتكاملة IN1 & IN2 كمخرج :
void setup() { pinMode(MOTOR_IN1, OUTPUT); // set the first pin of the relay as output pinMode(MOTOR_IN2, OUTPUT); // set the 2nd pin of the relay as output }
في البداية قمنا باستدعاء الدالة ()motor_forward . تقوم هذه الدالة بتشغيل المحرك مع اتجاه عقارب الساعة لمدة 3 ثوان (delay(3000) ) . ثم نقوم باستخدام الدالة ()motor_stop ، لإيقاف المحرك عن العمل لمدة 3 ثوان. ثم يتم عكس اتجاه حركة المحرك باستخدام الدالة ()motor_reverse لمدة 3 ثوان. ومن ثم يعود ليكرر نفس هذه المهمة من البداية مرة أخرى.
void loop() { motor_forward(); // move forward/clockwise delay(3000); // keep rotating cw for 3 seconds motor_stop(); // stop rotating delay(3000); // stand still for 3 seconds motor_reverse(); // reverse the rotation direction/ccw delay(3000); // keep rotating ccw for 3 seconds motor_stop(); // stop rotating delay(3000); // stand still for 3 seconds }
الدلة ()motor_forward، تقوم بتحريك المحرك بإتجاه عقارب الساعة. تتم هذه العملية عن طريق جعل قيمة IN1 للمرحل HIGH والطرف الآخر LOW .
void motor_forward(void) // the function that will cause the motor to rotate cw { digitalWrite(MOTOR_IN1, HIGH); digitalWrite(MOTOR_IN2, LOW); }
تعمل هذه الدالة ()motor_reverse بشكل مشابه للدالة السابقة، إلا أنها تعكس اتجاه دوران المحرك. تتم هذه العملية عن طريق جعل قيمة IN2 للمرحل HIGH، وIN1 قيمة LOW .
void motor_reverse(void) // the function that will cause the motor to rotate ccw { digitalWrite(MOTOR_IN1, LOW); digitalWrite(MOTOR_IN2, HIGH); }
دالة ()motor_stop، تقوم بإيقاف المحرك تماما عن الحركة، عن طريق جعل قيمة كلا الطرفين LOW فلا يصل التيار للمحرك فيتوقف.
void motor_stop(void) // the function that will cause the motor to stop rotating { digitalWrite(MOTOR_IN1, LOW); digitalWrite(MOTOR_IN2, LOW); }