RC(radio control) + 아두이노 3
프로그램 버전 : Arduino - 1.0
저번글에서 RC의 신호를 아두이노에서 받아 보고
신호를 처리해서 모터를 작동시켰다.
이번에는 간단한 자동차를 만들어
실제로 RC 송수신기로 조정하도록 하겠다.
사실 RC카를 어렵게 아두이로로 연결하고 스케치하여 제어할 필요는 없다.
수신기에 모터와 변속기, 각각의 서보 모터를 연결하면
아주 간단하게 RC자동차를 제작 할수 있다.
따라서 RC자동차를 만드는 것이라면 이글을 패스하고
RC사이트를 검색하는 것이....
조립한 자동차는 모터2개와 모터 드라이버를 이용하였고
무게와 크기를 줄이기 위해 아두이노 프로미니와
RC수신기를 이용하여 조립하였다.
차체는 매우 간단하다.
서보모터를 이용하지 않고 좌우 모터의 속도 차이로 방향 조정토록 하고
RC송신기(조정기)의 2개의 채널(스로틀과 에일러론) 신호로 전후좌우를 조정할 수 있도록 스케치 하였다.
스케치 소스
------------------------------------------------------------------
/*rc송신기(조정기)의 신호를 받아 자동차 제어*/
int th,al; //송신기로 부터 오는 신호를 저장할 변수
int ch1 = 6; //수신기와 연결된 핀
int ch2 = 7; //수신기와 연결된 핀
int ch2 = 7; //수신기와 연결된 핀
void setup(){
pinMode(ch1,INPUT); //송신기에서 신호를 보내면 수신기에서 신호를 받고 수신기에서 아두이노로 신호 입력
pinMode(ch2,INPUT); //ch1을 수신기의 스로틀 신호, ch2를 에일러론 신호로 연결함.
}
pinMode(ch1,INPUT); //송신기에서 신호를 보내면 수신기에서 신호를 받고 수신기에서 아두이노로 신호 입력
pinMode(ch2,INPUT); //ch1을 수신기의 스로틀 신호, ch2를 에일러론 신호로 연결함.
}
void loop(){
th = pulseIn(ch1,HIGH); //ch1의 펄스폭 저장
th = constrain(map(th,1100,1900,-255,255),-255,255); //ch1의 펄스폭1100~1900을 -255~255로 매핑,
th = pulseIn(ch1,HIGH); //ch1의 펄스폭 저장
th = constrain(map(th,1100,1900,-255,255),-255,255); //ch1의 펄스폭1100~1900을 -255~255로 매핑,
//ch1이 스로틀스틱이 중앙일때는 0 위로는 255, 아래로 -255값을 갖도록 함.
al = pulseIn(ch2,HIGH);
al = constrain(map(al,1100,1900,-255,255),-255,255); //ch2의 펄스폭1100~1900을 -255~255로 매핑,
al = constrain(map(al,1100,1900,-255,255),-255,255); //ch2의 펄스폭1100~1900을 -255~255로 매핑,
//ch2이 에일러론스틱이 중앙일때는 0 좌로는 255, 우로는 -255값을 갖도록 함.
//모터 드라이브에 연결된 아두이노 핀은 전진시 좌모터 8번, 우모터10번핀
//후진시 좌모터 9번, 우모터 11번
if(th>0){ //스로틀 스틱이 위로 움직임 -> 전진
if(al>0){analogWrite(8,th-al);analogWrite(10,th);}
//스로틀 스틱이 위로 동시에 에일러론이 좌로 ->좌회전
if(al<0){al=abs(al);analogWrite(8,th);analogWrite(10,th-al);} //abs()는 절대값을 취함.
if(al<0){al=abs(al);analogWrite(8,th);analogWrite(10,th-al);} //abs()는 절대값을 취함.
//스로틀 스틱이 위로 동시에 에일러론이 우로 ->우회전
}
if(th<0){th=abs(th); //스로틀 스틱이 아래로 움직임 -> 후진
if(al>0){analogWrite(9,th-al);analogWrite(11,th);}
}
if(th<0){th=abs(th); //스로틀 스틱이 아래로 움직임 -> 후진
if(al>0){analogWrite(9,th-al);analogWrite(11,th);}
//스로틀 스틱이 아래로 동시에 에일러론이 좌로 ->좌후진
if(al<0){al=abs(al);analogWrite(9,th);analogWrite(11,th-al);}
if(al<0){al=abs(al);analogWrite(9,th);analogWrite(11,th-al);}
//스로틀 스틱이 아래로 동시에 에일러론이 우로 ->우후진
}
}
}
-------------------------------------------------------------------------------
참고로 RC조정기의 우측 스틱을
위아래 조정을 스로틀
좌우 조정을 에일러론이라 한다.
작동 영상
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
스마트폰 + 블루투스 + 아두이노자동차 배선 (4) | 2012.06.27 |
---|---|
안드로이드 스마트폰 + 블루투스 통신 + 아두이노 자동차 (15) | 2012.06.26 |
RC(radio control) + 아두이노 2 (0) | 2012.06.26 |
RC(radio control) + 아두이노 1 (1) | 2012.06.26 |
아두이노 pro mini소개 (0) | 2012.06.26 |