서보모터
서보모터는 CPU의 명령에 따라 특정 각도만큼 움직이도록 하는데 사용이 되는 모터이다. 3개의 라인이 있으며 일반적으로 빨간선이 전원 검은색이나 갈색이 GND 그리고 노란색이나 주황색 선이 데이터 선으로 사용이 된다.

서보모터는 정면을 90도로 맞추어 0도에서 179도까지 숫자를 주면 각 각도별로 모터가 회전을 한다. 우리가 서보 모터를 이용하는 이유는 회전 축에 초음파 센서를 부착을 하기 위함이다. 일정 각도마다 회전을 하면 초음파 센서가 거리를 측정하고 측정된 거리를 가지고 전진을 할 것인지 후진을 할 것인지를 판단하는 기능을 넣고자 한다.
서보모터의 데이터 라인은 아두이노의 6번 핀에 연결을 했다. 연결을 한 사진은 다음과 같다.


서보 모터를 사용하기 위해서는 서보모터 제어 기능을 가지고 있는 Servo.h를 포함시켜야 한다. 다음의 소스코드 맨 위에 관련한 헤더파일을 추가한 것을 볼 수 있다. 그리고 서보 모터의 데이터 핀은 6번으로 지정을 했고, 서보 모터형의 변수 servo를 선언을 했다. 이 객체를 통해서 서보 모터를 제어한다. 그리고 서보 모터의 각도는 시작할 때 정면 90도를 기준으로 하기 위해서 변수를 선언하고 90을 할당을 했다.

다음으로 해야 할 일은 setup 함수에서 서보 모터를 초기화 해 주는 일이다. servo 객체의 attach 함수를 이용해서 서보 모터의 데이터 라인이 아두이노의 어느 핀에 할당이 되어 있는지를 알려준다.

위의 코드에서 보면 %가 나오는데 이것은 나머지 연산자이다. 5%3를 하면 5를 3으로 나눴을 때 나머지 값이 나온다. 즉 답은 2가 된다.
그리고 loop에서는 각도를 45도 마다 증가시키면서 각도가 180보다 작으면 그 각도에 맞게 회전을 시킨다. 회전을 시킬 때는 servo 객체의 write 함수에 각도 값을 써 넣으면 된다. 180보다 작을 때에는 그 각도를 180으로 나눈 값의 나머지를 180에서 빼 준다. 좀 복잡해 보이기는 한데 처음에 90에서 시작해서 180도 까지 서보 모터를 회전시키고 다시 135도 90도를 거쳐 0까지 가게 하기 위함이다. 즉 0, 45, 90, 135, 180, 135, 90, 45, 0, 45와 같이 좌우로 회전하는 듯 한 효과를 내기 위함이다.
이러한 회전 효과가 제대로 나타나는지 검증하기 위해서 시리얼에 각도를 넣어 검증을 했다. 그리고 마지막으로 각 회전마다 0.2초의 delay를 줬다. delay가 없이 위의 코딩을 실행해 보면 그 이유를 쉽게 알 수 있을 것인데 모터가 회전하는 속도보다 회전 명령이 더 빨리 내려지기 때문에 우리가 원하는 효과를 얻을 수 없다.
'IT' 카테고리의 다른 글
#7/12 아두이노 로봇 HowTo (0) | 2022.11.04 |
---|---|
#6/12 아두이노 로봇 HowTo (0) | 2022.11.04 |
#4/12 아두이노 로봇 HowTo (0) | 2022.11.04 |
#3/12 아두이노 로봇 HowTo (0) | 2022.11.04 |
#2/12 아두이노 로봇 HowTo (0) | 2022.11.04 |
댓글