BASIC4MCU | 질문게시판 | 스텝모터 코딩 질문입니다..
페이지 정보
작성자 무야더싱 작성일2023-02-25 01:41 조회446회 댓글2건본문
아두이노 전원 인가시 최초 1번만 실행 시키려고 하는스텝모터의 동작을void setup 안에 코딩하였습니다.1.스텝모터가 1차로 설정한 스텝 값까지 회전한다.2. 그리고 반대 방향으로 회전을 하는데여기서 조건이버튼이 HIGH가 되면 while문에서 빠져 나온다3. 다시 반대 방향으로 설정한 각도까지 회전하고 멈춘다.여기서 문제가while 안에서 빠져 나오질 못하고 있습니다.버튼이 HIGH가 되어도 계속~~ 모터가 돌고있는 상황입니다코딩을 어떻게 손봐야 할가요..도저히 답을 못찾겠어요..ㅠ#define stepPin 6#define dirPin 7#define STEP 4724#define HOME 8000int Button_Limit = 2;void setup() {pinMode(stepPin,OUTPUT);pinMode(dirPin,OUTPUT);pinMode(Button_Limit,INPUT);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////digitalWrite(dirPin,HIGH);for (int i=0; i< 1 * STEP; i++){digitalWrite(stepPin,HIGH);delayMicroseconds(500);digitalWrite(stepPin,LOW);delayMicroseconds(500);}while ( Button_Limit = HIGH){digitalWrite(dirPin,LOW);digitalWrite(stepPin,HIGH);delayMicroseconds(500);digitalWrite(stepPin,LOW);delayMicroseconds(500);}digitalWrite(dirPin,HIGH);for (int i=0; i< 1 * HOME; i++){digitalWrite(stepPin,HIGH);delayMicroseconds(500);digitalWrite(stepPin,LOW);delayMicroseconds(500);}}void loop() {}
댓글 2
조회수 446master님의 댓글
master 작성일
#define stepPin 6
#define dirPin 7
#define STEP 4724
#define HOME 8000
//
int Button_Limit=2;
//
void setup(){
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(Button_Limit,INPUT);
///////////////////////////////////////////////////////////////
// 1.스텝모터가 1차로 설정한 스텝 값까지 회전한다.
///////////////////////////////////////////////////////////////
digitalWrite(dirPin,1);
for(int i=0;i<STEP;i++){
digitalWrite(stepPin,1); delayMicroseconds(500);
digitalWrite(stepPin,0); delayMicroseconds(500);
}
///////////////////////////////////////////////////////////////
// 2. 그리고 반대 방향으로 회전을 하는데
// 여기서 조건이 버튼이 HIGH가 되면 while문에서 빠져 나온다
///////////////////////////////////////////////////////////////
digitalWrite(dirPin,LOW);
while(digitalRead(Button_Limit)==0){
digitalWrite(stepPin,1); delayMicroseconds(500);
digitalWrite(stepPin,0); delayMicroseconds(500);
}
///////////////////////////////////////////////////////////////
// 3. 다시 반대 방향으로 설정한 각도까지 회전하고 멈춘다.
///////////////////////////////////////////////////////////////
digitalWrite(dirPin,1);
for(int i=0;i<STEP;i++){
digitalWrite(stepPin,1); delayMicroseconds(500);
digitalWrite(stepPin,0); delayMicroseconds(500);
}
}
//
void loop(){}
무야더싱님의 댓글
무야더싱 작성일정말 감사드립니다!!