BASIC4MCU | 질문게시판 | 답변 : 무한회전서보모터 조이스틱 제어 질문좀요
페이지 정보
작성자 master 작성일2019-02-19 20:37 조회1,158회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7755
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-02-19 오후 8:41:39// by Ok-Hyun Park//#include <servo.h>Servo Motor_H; // 하단 서보모터 정의Servo Motor_V; // 상단 서보모터 정의int H=0;int V=0;int posx=90; // 하단 서보모터 각도 초기값int posy=90; // 상단 서보모터 각도 초기값//void setup(){Serial.begin(9600);Motor_H.attach(5); // 하단 서보모터 5번핀 연결Motor_V.attach(6); // 상단 서보모터 6번핀 연결Motor_H.write(90); // 하단 서보모터 최초 각도 90도Motor_V.write(90); // 상단 서보모터 최초 각도 90도}//void loop(){int i,j,x,y,sumx=0,sumy=0;for(i=0; i<20; i++){ x=analogRead(A0); y=analogRead(A1); sumx+=x; sumy+=y; }//x=sumx/20;if (x<410){ if(posx<180)posx++; }else if(x>500){ if(posx> 0)posx--; }//y=sumy/20;if (y<470){ if(posy<180)posy++; }else if(y>540){ if(posy> 0)posy--;Motor_H.write(posx); Motor_V.write(posy);Serial.print(x); Serial.print(" "); Serial.println(y);delay(10);}}
무한회전 서보모터는 3가지 동작밖에 없는 것으로 알고 있습니다.
0~180도 범위 중에서
1. 90도 근처는 정지
2. 180도 근처는 정회전이라고하면
3. 0도 근처는 역회전
몇도 이상이면 동작이 변경 될텐데 정확한 각도는 제가 외우고 있지 않습니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-02-19 오후 8:45:50// by Ok-Hyun Park//#include <servo.h>Servo Motor_H; // 하단 서보모터 정의Servo Motor_V; // 상단 서보모터 정의int H=0;int V=0;int posx=90; // 하단 서보모터 각도 초기값int posy=90; // 상단 서보모터 각도 초기값//void setup(){Serial.begin(9600);Motor_H.attach(5); // 하단 서보모터 5번핀 연결Motor_V.attach(6); // 상단 서보모터 6번핀 연결Motor_H.write(90); // 하단 서보모터 최초 각도 90도Motor_V.write(90); // 상단 서보모터 최초 각도 90도}//void loop(){int i,j,x,y,sumx=0,sumy=0;for(i=0; i<20; i++){ x=analogRead(A0); y=analogRead(A1); sumx+=x; sumy+=y; }//x=sumx/20;if (x<410)posx=180; //0~410 이면 180도else if(x<500)posx= 90; //410~500 이면 정지else posx= 0; //500 이상 이면 0도//y=sumy/20;if (y<470){ if(posy<180)posy++; }else if(y>540){ if(posy> 0)posy--;Motor_H.write(posx); Motor_V.write(posy);Serial.print(x); Serial.print(" "); Serial.println(y);delay(10);}}
if (x<410)posx=180; //0~410 이면 180도else if(x<500)posx= 90; //410~500 이면 정지else posx= 0; //500 이상 이면 0도이런식으로 제어해야 하는지 체크해보세요
댓글 0
조회수 1,158등록된 댓글이 없습니다.