دمج الوحدات · الدرس 3.7

التحكم بالمحرك الخطوي (Stepper Motor) عبر جهاز التحكم عن بُعد (IR Remote Control)

العودة إلى الدروس

التحكم عن بعد

ستتحكم بمحرك خطوي (Stepper Motor) عبر جهاز تحكم عن بُعد (IR Remote). تأتي لوحة القيادة مع المحرك فتسهل توصيله بـ UNO. ولتجنب تغذيته مباشرة من UNO، نستخدم وحدة طاقة (Power Supply Module) صغيرة تركب على لوحة التجارب (Breadboard) ومحول طاقة (9V1A Adapter). يتصل مستقبل الأشعة تحت الحمراء (IR Receiver Module) بـ UNO مباشرة لقلة استهلاكه.

المكونات المطلوبة

التوصيل

مخطط المحرك والمستقبل
مخطط المحرك والمستقبل
توصيل المحرك ولوحة القيادة وجهاز التحكم عن بُعد (IR Remote Control)
توصيل المحرك ولوحة القيادة وجهاز التحكم عن بُعد (IR Remote Control)

أربعة منافذ 8–11 للمحرك، ومنفذ 12 لاستقبال IR. وصّل 5V وأرضي UNO بالحساس. غذِّ المحرك من وحدة لوحة التجارب (Breadboard) احتياطًا لأنه قد يستهلك أكثر من قدرة UNO، ولتجنب إتلاف تغذيتها.

البرنامج والتجربة

قبل رفع البرنامج، تأكد من توفر مكتبتي IRremote و Stepper في بيئة Arduino IDE. إذا لم تكن مثبتة أو ظهرت رسالة تشير إلى مكتبة مفقودة، فاتبع خطوات التثبيت في قسم «ما هي المكتبات؟» وطرق تثبيتها في الدرس 1.5 «وميض LED وإضافة المكتبات».

افتح ملف البرنامج With_Remote.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.

إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.

يتعرف البرنامج إلى زري + و- فقط. الضغط على + يدير المحرك دورة كاملة مع عقارب الساعة؛ والضغط على- دورة كاملة عكسها.

الكود

With_Remote/With_Remote.ino

//www.elegoo.com
//2016.12.12

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 12; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'

void setup()
{ 
  irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?

  {
    switch(results.value)

    {

      case 0xFFA857: // VOL+ button pressed
                      small_stepper.setSpeed(500); //Max seems to be 500
                      Steps2Take  =  2048;  // Rotate CW
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;

      case 0xFF629D: // VOL- button pressed
                      small_stepper.setSpeed(500);
                      Steps2Take  =  -2048;  // Rotate CCW
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;
                
    }
    
      irrecv.resume(); // receive the next value
                 digitalWrite(8, LOW);
                 digitalWrite(9, LOW);
                 digitalWrite(10, LOW);
                 digitalWrite(11, LOW);       
  }  


}/* --end main loop -- */

ملفات الدرس والمكتبات

المكتبات المرفقة

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.