안녕하세요
제공해준 예제 중에 '10_RC_CAR_Obstacle' 예제에 대한 질문입니다.
직진하다가 25cm이내에 초음파 센서 범위에 들어오면 '우회전', '좌회전'하여 해당 방향의 거리를 측정하고 여유있는 곳으로 이동해야하는데
직진은 하지않고 후진만 하네요.
if(Ultra_d < 250) { << 범위가 좁은거 같아 500, 1000 으로 늘려서 테스트를 해봐도 그대로 입니다.
Ultra_d = Ultrasonic();
Serial.println(Ultra_d);
motor_role(HIGH, HIGH); // 직진
Serial.println("직진"); << 혹시나 싶어 println 문은 넣어서 테스트 해봤는데
println에 직진은 나와있는데 직진은 하지 않았습니다.
참고로 그 이전 예제들은 모두 문제없이 실행되었습니다. 이 부분에 막혀서 질문을 드립니다.
초음파센서 선 연결 및 건전지 배터리량까지 체크했습니다.
void loop() {
Ultra_d = Ultrasonic();
Serial.println(Ultra_d);
motor_role(HIGH, HIGH);
if(Ultra_d < 250) {
if (Ultra_d < 150) {
Serial.println("150 이하.");
motor_role(LOW, LOW); // 후진
delay(1000);
analogWrite(RightMotor_E_pin, 0);
analogWrite(LeftMotor_E_pin, 0);
delay(200);
}
else {
analogWrite(RightMotor_E_pin, 0);
analogWrite(LeftMotor_E_pin, 0);
delay(200);
Serial.println("150 이상.");
val = Servo_con();
if (val == 0) {
Serial.println("우회전.");
analogWrite(RightMotor_E_pin, 0);
analogWrite(LeftMotor_E_pin, 0);
delay(500);
motor_role(LOW, LOW); // 후진
delay(500);
motor_role(LOW, HIGH); // 우회전
delay(800);
}
else if (val == 1) {
Serial.println("좌회전.");
analogWrite(RightMotor_E_pin, 0);
analogWrite(LeftMotor_E_pin, 0);
delay(500);
motor_role(LOW, LOW); // 후진
delay(500);
motor_role(HIGH, LOW); // 좌회전
delay(800);
}
}
}
}
(실제로는 전진 명령인데 바퀴가 반대로 꽂혀 있어서 후진하는 식)
모터선의 빨간 색과 검은 색을 반대로 꼽아보세요