RC(radio control) + 아두이노 2
프로그램 버전 : Arduino - 1.0
사용된 물품
스펙트럼 송신기, 스펙트럼호환 오렌지수신기
이전글에서 아두이노와 RC송수신기를 연결하여
신호를 받는 것에 대해 언급하였고
이번에는 그 신호를 받아 모터를 구동시켜 보자
1번 채널에 의해서는 DC모터를 제어하고(모터 드라이브 회로가 필요)
2번 채널에 의해서는 서보모터를 제어하도록
회로를 구성하고
소스를 스케치하면
---------------------------------------------------
/* rc 송수신기를 통해 신호를 받아 모터와 서보모터 작동 */
int rm1,rm2;
int motorPin = 6; // 모터 연결( 모터드라이버 필요)
int servoPin = 7; // 서보모터 연결
int ch1 = 11; //rc 수신기와 연결
int ch2 = 10;
int refresh = 20; // 서보모터에 신호를 20ms주기로 보내기위함.
unsigned long lastTime = 0;
void setup(){
pinMode(servoPin, OUTPUT);
pinMode(ch1,INPUT);
pinMode(ch2,INPUT);
}
void loop(){
rm1 = pulseIn(ch1,HIGH);
rm1 = map(rm1,1100,2000,0,250);
//1번 채널에서 보낸 신호를 모터를 pwm으로 출력하기 위해 0~250으로 범위 제한.
rm2 = pulseIn(ch2,HIGH);
rm2 = map(rm2,1100,2000,600,2400);
//2번 채널의 신호는 서보모터를 제어하므로 서보모터의 회전값 600~2400으로 제한.(서보모터작동글 확인)
if(millis()-lastTime>=refresh){ //서보모터에 20ms주기로 신호를 주기 위함.
analogWrite(motorPin,rm1);
digitalWrite(servoPin,1);
delayMicroseconds(rm2); // 서보모터에 HIGH신호를 600~2400마이크로초 폭으로 보냄
digitalWrite(servoPin,0);
lastTime = millis();
}
}
----------------------------------------------------------------------------------------
작동 영상
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
안드로이드 스마트폰 + 블루투스 통신 + 아두이노 자동차 (15) | 2012.06.26 |
---|---|
RC(radio control) + 아두이노 3 (2) | 2012.06.26 |
RC(radio control) + 아두이노 1 (1) | 2012.06.26 |
아두이노 pro mini소개 (0) | 2012.06.26 |
LCD모듈과 Serial LCD 사용 (1) | 2012.06.26 |