BASIC4MCU | 질문게시판 | Sg5010모터질문좀요~
페이지 정보
작성자 현이꽃 작성일2019-11-26 12:50 조회13,255회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=10904
본문
안녕하세요
타워프로Sg5010서보모터를 사용 하려고하는데 조이스틱 값이커지면
오른 쪽으로 돌아야 하는데 왼쪽으로돌아서 그러는데
혹시 코드로 정역을 바꿀수있나요?
해당사제폼인 mg945 mg995 mg996 제품들은 다오른쪽으로 도는데
이건 원래이련건지 불량 인건지ㅠ 잘모르겠네요
혹시 코드적은인 부분으로 가능할런지요?
#
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);
Motor_V.write(90);
}
void loop()
{
int x, y, sumx, sumy;
int i, j;
sumx = 0;
sumy = 0;
for(i=0;i<20;i++)
{
x = analogRead(A0);
y = analogRead(A1);
sumx += x;
sumy += y;
}
x = sumx / 20;
y = sumy / 20;
if(x <410)
{
if(posx<180){posx++;} // x축 각도 오른쪽으로 증가
else if(posx == 180){}// 서보모터 각도가 180일 경우 동작 안함(최대 각도 180도)
delay(20);}
else if(x > 500) // 조이스틱이 x축 왼쪽으로 움직일 때
{
if(posx>0){posx--;} // x축 각도 왼쪽으로 증가
else if(posx = 0){} // 서보모터 각도가 0도일 경우 동작 안함(최소 각도 0도)
delay(20 );}
if(y < 470) // 조이스틱이 y축 위쪽으로 움직일 때
{
if(posy<180){posy++;} // y축 각도 위쪽으로 증가
else if(posy==180){} // 서보모터 각도가 180일 경우 동작 안함
delay(50);}
else if(y > 540) // 조이스틱이 y축 아래쪽으로 움직일 때
{
if(posy>0){posy--;} // y축 각도 아래쪽으로 증가
else if(posy==0){} // 서보모터 각도가 0일 경우 동작 안함
delay(50); }
Motor_H.write(posx);
Motor_V.write(posy);
Serial.print(x);
Serial.print(" ");
Serial.println(y);
delay(10);
}
댓글 2
조회수 13,255master님의 댓글
master 작성일
Motor_H.write(90);
Motor_V.write(90);
Motor_H.write(posx);
Motor_V.write(posy);
서보모터는 0~180도 범위로 움직입니다.
각도 출력코드는 모두 4라인인데
90도 출력은 반도로 동작해도 같은 위치이므로 그대로 나두면 되고
Motor_H.write(180-posx);
Motor_V.write(180-posy);
아래 두 코드만 이렇게 수정하면 됩니다.
현이꽃님의 댓글
현이꽃 작성일
안될줄알았는데 그래도 혹시나싶어 여쭈어보았는데 정말 매번 도움 만이받고있습니다
감사합니다.!!