아두이노 자율주행자동차 만들기 3

아두이노 자율주행자동차 만들기 

스크래치로 아두이노 자율주행자동차를 코딩하겠습니다. 아두이노 자율주행자동차 코딩을 잘하려면 어떻게 움직이는지 이해해야 합니다. 이번 포스팅에서는 자율주행자동차의 원리와 코딩하는 방법을 자세히 알아보겠습니다. 다음은 아두이노 자율 주행 자동차의 동작원리입니다. 

아두이노 자율주행자동차 만들기

 

아두이노 자율주행자동차의 동작을 하나씩 코딩을 하겠습니다. 먼저 자동차가 움직이는 경우를 함수로 만듭니다.

그림 3-52 아두이노 자율주행자동차 함수 만들기

 

먼저 아두이노 자율주행자동차가 움직이는 경우를 함수로 만듭니다. 우선 장애물과 거리를 확인하는 것부터 코딩하겠습니다. 왼쪽과 오른쪽으로 서보모터가 돌면서 초음파 센서로 장애물이 있는지 없는지 확인합니다. 그런데 한 번만 확인하는 것보다 여러 번 확인하는 것이 더욱 정확하겠죠? 

 

이렇게 여러 번 확인한 값을 모두 더하고, 확인한 횟수만큼 나누면 정확한 값을 얻을 수 있습니다. 이것을 수학에서는 평균이라고 합니다. 예를 들어 장애물과의 거리를 10번 확인했다고 생각해봅시다. 그리고 확인한 값을 모두 적어서 아래의 표와 같으면 평균 거리는 3이 됩니다.(30÷10) 

아두이노 자율주행자동차-평균

 

그림 3-53처럼 [거리], [거리 합], [거리 평균] 변수를 만듭니다. [거리 합] 변숫값을 0으로 정하고 초음파 센서로 10번 확인한 값([거리] 변수)을 더해줍니다. 그리고 10으로 나눠서 [거리 평균] 변숫값을 정합니다. 그리고 다시 [거리 합] 변숫값은 0으로 정하는 겁니다. 그림 3-54처럼 함수를 이용하면 더욱 좋겠죠?

그림 3-53 평균을 이용하여 거리 확인하기
그림 3-54 평균을 이용하여 거리 확인하기(함수 이용)

 

그리고 거리 평균값이 어떤 값보다 작으면 멈춰서 왼쪽과 오른쪽으로 서보모터를 회전합니다. 그리고 장애물과의 거리를 확인합니다. 그리고 뒤로 조금 움직입니다. 이 책에서는 25를 기준 값으로 했습니다. 상황마다 기준값은 다를 수 있으니 테스트하면서 기준값을 바꿔줘야 합니다.

그림 3-55 함수를 이용하여 코딩하기

 

먼저 왼쪽 장애물과의 거리를 확인하는 것부터 코딩하겠습니다. <장애물을 만났다면>이라는 함수를 만듭니다.

그림 3-56 <장애물을 만났다면> 함수 만들기

 

여기가 아두이노 자율주행자동차를 만들 때 많은 실수를 하는 부분입니다. 우선 서보보터의 각도를 0으로 정합니다. 그리고 초음파 센서가 오른쪽을 볼 수 있도록 그림 3-57과 같이 브래킷에 다시 연결합니다.

그림 3-57 서보모터 각도를 0도로 해서 오른쪽을 보기

 

서보모터의 각도가 150가 되었을 때 왼쪽을 보기 위해서는 그림처럼 연결해야 합니다. 그렇지 않으면 초음파 센서가 이상한 방향을 보는 경우가 생깁니다. 서보보터가 0도일 때는 오른쪽을 보다가 150도가 되면 왼쪽을 보는 것입니다.

그림 3-58 왼쪽을 보기

 

서보모터가 반대 방향으로 회전하면 다시 연결해줘야 합니다. 함수를 이용하여 오른쪽을 보는 경우도 코딩합니다.

그림 3-59 오른쪽을 보는 경우 코딩

 

왼쪽-오른쪽을 확인하고 서보모터 각도를 90도로 해서 정면을 봅니다. 그리고 뒤로 조금 가고 움직이는 방향을 정하면 됩니다. 

그림 3-60 함수를 이용하여 코딩하기

 

<움직이는 방향 정하기> 함수를 만듭니다. [왼쪽 거리] 변숫값이 [오른쪽 거리] 변숫값보다 크면 왼쪽에 있는 장애물이 더 멀리 있다는 것이니 왼쪽으로 회전합니다. 

그림 3-61 <움직이는 방향 정하기> 함수 만들기

 

그림 3-62 프로그램 완성

 

아두이노 자율주행자동차 주의점

아두이노 자율주행자동차 코딩을 완성했습니다. 이렇게 함수를 이용하니 쉽게 코딩을 하죠? 지금까지 정말 정말 열심히 잘 따라와 줬습니다. 정말 감사합니다. 중간에 이해하기 힘든 부분이 있었지만 포기하지 않고 결승선에 멋지게 도착했습니다. 직접 테스트를 해볼까요? 테스트를 해보면서 멈출 때 기준값을 바꾸거나 기다리는 시간, 서보모터 회전 각도 등을 바꿔봅니다. 특히 모터가 회전하는 값을 잘 바꿔줘야 합니다.


서보모터와 DC모터는 전기를 많이 사용합니다. 자율 주행 자동차가 움직이다가 멈추는 경우가 있는데 이것은 건전지를 다 쓴 경우입니다. 이럴 때는 건전지를 바꿔줍니다. 친구들과 대결을 하는 것도 좋습니다. 누가 더 장애물을 잘 피할 수 있게 코딩을 하는지 대결을 하다보면 여러분의 코딩 실력은 더욱 좋아질 것입니다.


이제 여러분은 자신이 원하는 대로 코딩을 할 수 있습니다. 생각하는 능력이 많이 발전했을 거라고 믿습니다. 아두이노 전자회로 지식도 더욱 많이 이해했을 겁니다. 앞으로 더 열심히 공부해서 우리를 불편하게 하는 많은 문제를 해결하고 세상을 더 멋지게 만드는 슈퍼 히어로가 되길 바랍니다. 그리고 순차, 반복, 선택, 함수, 변수를 꼭 기억하세요.

댓글 (0)

Designed by JB FACTORY