무선 통신으로 만드는 자동차 part : 2
다음 사이트를 참고 하였습니다.
https://kocoafab.cc/tutorial/view/143
https://kocoafab.cc/tutorial/view/232
http://bsgwark.blogspot.com/2017/06/create-bluetooth-rc-car-using.html
목적 |
무선 조종기로 움직이면서 장애물을 만나면 자동으로 피하는 자동차 |
현재 상황 |
키트와 코딩수정을 완료하였습니다. |
Part1 문제 3 해결 방안 |
전력 문제가 있었음으로 9v건전지 하나가 아니라 건전지 3개로 작동하게 변경하였습니다. |
1. 무선 통신에 사용한 모뎀 : HC-06
2. 무선 통신에 사용한 어플
3. 코드 수정
수정 전 코드 | 수정 후 코드 |
#define LEFT_A1 4 //왼쪽 바퀴 #define LEFT_B1 5 //왼쪽 바퀴 #define RIGHT_A2 6 //오른쪽 바퀴 #define RIGHT_B2 7 //오른쪽 바퀴 |
#define LEFT_A1 3//왼쪽 바퀴 #define LEFT_B1 11 //왼쪽 바퀴 #define RIGHT_A2 13 //오른쪽 바퀴 #define RIGHT_B2 8 //오른쪽 바퀴 |
void left(){ // 좌회전 - 오른쪽 바퀴가 전전,왼쪽 바퀴는 후진하면서 빠르게 좌회전
digitalWrite(LEFT_A1,
LOW); |
삭제 |
#define SONAR_NUM 1 // 초음파센서의 갯수럴 설정합니다. #define MAX_DISTANCE 500 // 최대거리는 500(cm)로 제한합니다. #define PING_INTERVAL 250 unsigned long pingTimer[SONAR_NUM]; unsigned int cm[SONAR_NUM]; uint8_t currentSensor = 0; NewPing sonar[SONAR_NUM] = { NewPing(7, 6, MAX_DISTANCE), // Trigger pin, echo pin, 그리고 최대거리 }; |
추가 |
for (uint8_t i = 0; i < SONAR_NUM; i++) { // 둘 이상의 초음파 센서를 사용할경우 모든 센서를 체크합니다. if (millis() >= pingTimer[i]) { // 핑 타임 체크 pingTimer[i] += PING_INTERVAL * SONAR_NUM; // 다음 핑 타임을 위한 시간 체크 if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle(); sonar[currentSensor].timer_stop(); currentSensor = i; cm[currentSensor] = MAX_DISTANCE; sonar[currentSensor].ping_timer(echoCheck); } } if (cm[0] < 20) // 만약 20cm 안에 장애물이 감지되면, { turn_right(); // 오른쪽으로 회전합니다. } |
추가 |
turn_right() 함수 참조 |
void turn_right(){ // 우회전 -왼쪽 바퀴가 전진,왼쪽 바퀴는 후진하면서 빠르게 우회전 digitalWrite(LEFT_A1, LOW); digitalWrite(LEFT_B1, HIGH); digitalWrite(RIGHT_A2, HIGH); digitalWrite(RIGHT_B2, LOW); delay(500); //0.5초(500밀리초)동안 유지합니다.] forward(); } |
4. 문제점
멈췄을 때도 초음파 센서가 감지되며 바퀴가 도는 문제 발생
5. 해결 방안
문제 원인 |
if (cm[0] < 20) // 만약 20cm 안에 장애물이 감지되면, { turn_right();// 오른쪽으로 회전합니다. } |
||
문제 해결 |
코드 수정 |
코드 설명 |
|
변수 : unsigned int Keep_stop = 0; Stop -> Keep_stop = 1; 전진, 우회전, 좌회전 -> keep_Stop = 0; 변경하여 0일때는 센서 감지 허용 1일때는 센서 감지 금지 |
whlie문 안에 변수 변경 안됨... Keep_stop을 변경하는 함수를 호출에 거기에서 Keep_stop변수 변경 |
'전공_STUDY > 아두이노' 카테고리의 다른 글
무선 통신으로 만드는 자동차 part : 1 (0) | 2018.11.14 |
---|