Хичээл 32 Алхамт моторыг удирдлагаар удирдах
Бид өмнөх хичээлээр алхамт мотор болон IR удирдлагатай ажилласан. Энэ удаагийн хичээлээр бид өмнөх мэдлэг дээрээ тулгуурлан удирдлага ашиглан алхамт моторийг удирдах юм.
Хэрэглэгдэхүүн:
- Ардиуно 1ш
- Туршилтын хавтан 1ш
- IR хүлээн аварч 1ш
- IR удирдлага 1ш
- ULN2003 stepper motor driver module 1ш
- Stepper motor 1ш
- Тэжээлийн блок 1ш
- 9V 1A adapter 1ш
- F-М утас 9ш
- М-М утас 1ш
Зарчмын схем


Программ
Программын нь зорилго удирдлаганаас орж ирсэн мэдээллийг уншин гаралтын төхөөрөмж болох алхамт моторыг удирдах юм. Энэхүү кодыг ашиглан нь удирдлагаар алхамт моторын чиглэлийг удирдаж болно. Үүнийг хөгжүүлэн удирдлага ашиглан алхамт моторын хурдыг удирдах боломжтой болгоорой.
#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 -- */

