BASIC4MCU | 질문게시판 | 답변 : 아두이노 서보모터 질문드립니다.
페이지 정보
작성자 master 작성일2022-06-06 17:49 조회1,411회 댓글1건본문
//XY플로터를 ㄹ자로 움직이게
//
int m1stp=5,m1dir=4;
int m2stp=6,m2dir=7;
//
int cnt=0,d=1;
//
void setup(){
Serial.begin(9600);
pinMode(m1stp,OUTPUT); pinMode(m1dir,OUTPUT);
pinMode(m2stp,OUTPUT); pinMode(m2dir,OUTPUT);
}
//
void loop(){
if (Serial.available()){
d=Serial.read()- '0'; // 입력된 문자값을 읽고 -48을 빼준값을 d(딜레이)값으로 사용합니다.
Serial.println(d);//시리얼 모니터에 d값을 출력합니다.
}
//
if(cnt<4000){
digitalWrite(m1dir,0); // stp1 4000 →
digitalWrite(m1stp,0); delay(d); digitalWrite(m1stp,1); delay(d);
}
else if(cnt<5000){
digitalWrite(m2dir,0); // stp2 1000 ↓
digitalWrite(m2stp,0); delay(d); digitalWrite(m2stp,1); delay(d);
}
else if(cnt<9000){
digitalWrite(m1dir,1); // stp1 4000 ←
digitalWrite(m1stp,0); delay(d); digitalWrite(m1stp,1); delay(d);
}
else if(cnt<10000){
digitalWrite(m2dir,0); // stp2 1000 ↓
digitalWrite(m2stp,0); delay(d); digitalWrite(m2stp,1); delay(d);
}
else if(cnt<14000){
digitalWrite(m1dir,0); // stp1 4000 →
digitalWrite(m1stp,0); delay(d); digitalWrite(m1stp,1); delay(d);
}
else{ // else if(cnt==14000){
delay(3000); // "ㄹ"완성하고나서 3초 휴식
// 대각선으로 원점 복귀
digitalWrite(m2dir,1); // stp2 2000 ↑
digitalWrite(m1dir,1); // stp1 4000 ←
for(int i=0;i<2000;i++){
digitalWrite(m1stp,0); delay(d); digitalWrite(m1stp,1); delay(d); // m1은 2클럭
digitalWrite(m1stp,0); delay(d); digitalWrite(m1stp,1); delay(d);
digitalWrite(m2stp,0); delay(d); digitalWrite(m2stp,1); delay(d); // m2는 1클럭
}
}
//----------------------
if(++cnt>=14001)cnt=0;
}
댓글 1
조회수 1,411아드초님의 댓글
아드초 작성일감사합니다ㅜㅜㅜ