아두이노

조이스틱으로 스텝모터 운전

내동 2017. 10. 8. 01:24


#define step_pin3 //Pin 3 connected to Steps pin on EasyDriver

#define dir_pin 2 // Pin 2 connected to Direction pin

#define MS1 5 // Pin 5 connected to MS1 pin

#define MS2 4 // Pin 4 connected to MS2 pin

#define SLEEP 7 // Pin 7 connected to SLEEP pin

#define X_pin A0 // Pin A0 connected to joystick x axis

int direction;

int steps =1025;

void setup() {

pinMode (MS1 , OUTPUT);

pinMode (MS2 , OUTPUT);

pinMode (dir_pin , OUTPUT);

pinMode (step_pin, OUTPUT);

pinMode (SLEEP , OUTPUT);

digitalWrite(SLEEP, HIGH) ; // wake up EasyDriver

delay(5); //wait for EasyDriver wake up

/*Configure type of Steps on EasyDriver;

//MS1 MS2

// LOW LOW = Full Step

// HIGH LOW = Half step

// LOW HIGH = a quarter of step

// HIGH HIGH = an eight of step

*/

digitalWrite (MS1 , LOW);

digitalWrite (MS2 , LOW);

}

void loop(){

while (analogRead(X_pin) >=0 && analogRead(X-pin) <=100) {

if(steps>0){

digitalWrite(dir_pin, HIGH);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps--;

}

}

while (analogRead(X_pin) >=100 && analogRead(X-pin) <=400) {

if(steps<512){

digitalWrite(dir_pin, LOW);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps++;

}

if(steps>512){

digitalWrite(dir_pin, HIGH);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps--;

}

}

while (analogRead(X_pin) >401 && analogRead(X-pin) <=600) {

if(steps<1025){

digitalWrite(dir_pin, LOW);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps++;

}

if(steps>1025){

digitalWrite(dir_pin, HIGH);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps--;

}

}

while (analogRead(X_pin) >601 && analogRead(X-pin) <=900) {

if(steps<1535){

digitalWrite(dir_pin, LOW);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps++;

}

if(steps>1535){

digitalWrite(dir_pin, HIGH);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps--;

}

}

while (analogRead(X_pin) >900 && analogRead(X-pin) <=1024) {

if(steps<2050){

digitalWrite(dir_pin, LOW);

digitalWrite(step_pin, HIGH);

delay(1);

digitalWrite(step_pin, LOW);

delay(1);

steps++;

}

}

}


'아두이노' 카테고리의 다른 글

4축로봇  (0) 2017.10.24
스텝모터  (0) 2017.10.14
SPI사용하기  (0) 2017.10.06
로봇암 소스코드  (0) 2017.07.27
PID제어기에의한 헬리콥터모터 제어  (0) 2017.06.11