BASIC4MCU | 질문게시판 | 아두이노 스텝모터 푸쉬버튼 질문드립니다.
페이지 정보
작성자 랩돌이 작성일2020-08-05 15:47 조회6,021회 댓글1건본문
전에 알려주신 코드에 모터를 하나 더 추가하여 해봤는데 가는것만 가고 돌아오질 않습니다.
한번씩 됐다말았다하네요
그리고 스위치를 독립적으로 한번 한번 눌리면 작동되게하고싶습니다.
예를 들어 언제든 좌 버튼을 눌리면 좌로 이동, 우를 눌리면 우로 이렇게요(상하포함하여)
현재는 좌한번 우한번 상한번 하한번 이렇게 됩니다 ㅜ
왜 그럴까요? 도저히 모르겠네요
제발 도와주세요 ㅜ
#include <AccelStepper.h>
const int step_pin=9;
const int dir_pin=8;
const int step_pin1=7;
const int dir_pin1=6;
long motorPosition=0;
AccelStepper stepper1(AccelStepper::DRIVER,step_pin,dir_pin);
AccelStepper stepper2(AccelStepper::DRIVER,step_pin1,dir_pin1);const int leftButton=4;
const int RightButton=2;
const int UPButton=10;
const int DownButton=11;byte hBval,position=0;
//
void setup(){
Serial.begin(9600);
stepper1.setCurrentPosition(0);
stepper1.setMaxSpeed(1000);
stepper1.move(-1000);
stepper1.setAcceleration(4000);
stepper2.setCurrentPosition(0);
stepper2.setMaxSpeed(1000);
stepper2.move(-1000);
stepper2.setAcceleration(3000);
pinMode(leftButton, INPUT);
pinMode(RightButton, INPUT);
pinMode(UPButton, INPUT);
pinMode(DownButton, INPUT);
// stepperHome();
}
//
void loop(){
if(digitalRead(RightButton)){
if(position==0){ position=1;
Serial.println("X Motor Position=4000");
stepper1.move(4000); stepper1.runToPosition();
}
}
//
if(digitalRead(leftButton)){
if(position){ position=0;
Serial.println("X Motor Position=0");
stepper1.move(-4000); stepper1.runToPosition();
}
}
if(digitalRead(UPButton)){
if(position==0){ position=1;
Serial.println("Y Motor Position=3000");
stepper2.move(3000); stepper2.runToPosition();
}
}
//
if(digitalRead(DownButton)){
if(position){ position=0;
Serial.println("Y Motor Position=0");
stepper2.move(-3000); stepper2.runToPosition();
}
}
}
댓글 1
조회수 6,021master님의 댓글
master 작성일
position 이 변수 하나로 스위치 4개를 사용하지말고 스위치당 변수를 각각 사용하세요
position_L
position_R
position_U
position_D