همانطور که در دیاگرام نشان داده شده است، چهار پین برای اتصال استپر (پین های 8-11) و یک پین (پین 6) برای اتصال سنسور مادون قرمز اختصاص داده شده است. تغذیهی ماژول از آردوینو و تغذیهی درایور استپر موتور از منبع تغذیه جداگانه باید تامین شود.
مروری بر ویژگیهای ماژول گيرنده مادون قرمز با ريموت IR
امواج مادون قرمز توسط خورشید، لامپها و هر چیز دیگری که گرما تولید میکند ساطع میشوند. این بدان معناست که نویز زیادی ازامواج IR در اطراف ما وجود دارد. برای جلوگیری از تداخل این نویز با سیگنال مادون قرمز ساطعشده توسط ماژول، از مدولاسیون سیگنال استفاده می شود. در مدولاسیون یک سری پروتکل و کدینگ مخصوص نیز طراحی میشوند که توسط آنها سیگنال باینری به یک سیگنال الکتریکی مدوله شده در یک فرکانس خاص تبدیل میشود. سیگنال IR مدوله شده شامل یک سری پالس مادون قرمز با فرکانس بالا است که فرکانس حامل نامیده میشود. فرکانس حامل مورد استفاده در بیشتر فرستندهها 38 کیلوهرتز است. زیرا موجی با این میزان فرکانس در طبیعت نادر بوده و میتوان آن را از امواجی که به عنوان نویز شناخته میشوند متمایز کرد.
همانطور که در دیاگرام نشان داده شده است، چهار پین برای اتصال استپر (پین های 8-11) و یک پین (پین 6) برای اتصال سنسور مادون قرمز اختصاص داده شده است. تغذیهی ماژول از آردوینو و تغذیهی درایور استپر موتور از منبع تغذیه جداگانه باید تامین شود.
در این برنامه از دو کتابخانهی "IRremote" و "Stepper" استفاده شده است. کتابخانه "Stepper" به صورت پیشفرض در کامپایلر آردوینو IDE قرار دارد. کتابخانه "IRremote" نیز باید به کتابخانههای آردوینو اضافه شود. برنامه زیر فقط 2 حالت از DOWN و UP ریموت IR را تشخیص میدهد. با فشار دادن دکمهی UP ریموت، موتور به صورت ساعتگرد و با فشار دادن DOWN به صورت پادساعتگرد میچرخد.
/*
Partineh
Arduino Tutorial Series
Author: Shokoufeh Davarzani
Website: www.Partineh.com
*/
#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 = 6; // 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 0xFF629D: // UP button pressed
small_stepper.setSpeed(500); //Max seems to be 700
Steps2Take = 2048; // Rotate CW
small_stepper.step(Steps2Take);
delay(2000);
break;
case 0xFFA857: // DOWN button pressed
small_stepper.setSpeed(500);
Steps2Take = -2048; // Rotate CCW
small_stepper.step(Steps2Take);
delay(2000);
break;
}
irrecv.resume(); // receive the next value
}
}/* --end main loop -- */