BASIC4MCU | 질문게시판 | 급합니다 도와주세요
페이지 정보
작성자 홍길동 작성일2018-12-07 19:05 조회4,188회 댓글1건본문
#include <SoftwareSerial.h>
#include <Servo.h>
union {
int intValue;
byte byteValue[sizeof(int)];
} intUnion; //union 사용.
const byte pinRX = 7;
const byte pinTX = 8;
const byte pinServo = 9;
const byte pinMotor = 10;
SoftwareSerial btSerial(pinRX, pinTX);
Servo servoSteering;
Servo servoThrust;
int steering=90; // Angle=60~120 (60 : left, 90 : center, 120 : right
int thrust=1500; // Duty=1200~1800(1200 : backward, 1500 : stop, 1800 : forward)
void receive() {
int x_value, y_value;
while(btSerial.available()>=5) {
if (btSerial.read()=='@') {
for (int16_t i=0; i<2; i++) {intUnion.byteValue[i]=btSerial.read();}
y_value = intUnion.intValue;
for (int16_t i=0; i<2; i++) {intUnion.byteValue[i]=btSerial.read();}
x_value = intUnion.intValue;
// Left(60)-Center(90)-Right(120) in Angle
steering = map(x_value, -500, 500, 60, 120);
// rew(1200)-stop(1500)-forw(1800) in Duty
thrust = map(y_value, -500, 500, 1200, 1800);
return;
}
}
}
void setup() {
servoSteering.attach(pinServo);
servoThrust.attach(pinMotor);
steering = 90;
thrust = 1500;
servoSteering.write(steering);
delay(10);
servoThrust.writeMicroseconds(thrust);
delay(10);
btSerial.begin(9600);
}
void loop() {
receive();
servoSteering.write(steering); // 60~90~120 in Angle
delay(10);
servoThrust.writeMicroseconds(thrust); // 1200~1500~1800 in Duty
delay(10);
}
블루투스 통신을 이용한 rc카 구동을 하려고 합니다
제어의 안정성을 높이기 위해 코드를 어떻게 수정하면 좋을까요?
속력이 좀 빠르고 esc는 작동되는데 후진이 잘 안됩니다
댓글 1
조회수 4,188master님의 댓글
master 작성일
사용해보지 않아서 별 도움을 드리지 못할 것 같습니다.
통신 속도를 높일 수 있으면 115200으로 높이면 제어 응답성이 빨라질테고요
후진이 잘 안되는 이유는 원인을 찾아보세요