통신으로 움직이게 만들어보기
소스에 주석을 달아 놓긴 했지만 이해가 안되실 수 있습니다. 이해가 안가시더라도 일단 테스트를 해보고 차근 차근 이해하는 방향으로 진행하겠습니다.
이제 시리얼을 통해서 아두이노에게 신호를 보내 보겠습니다. 시리얼통신이라는 통신 방법을 사용합니다. 시리얼 통신은 아주 고전적이고 오랫동안 많이 사용되오던 통신 중 가장 기초중의 기초인 방법입니다. 추 후 블루투스 통신을 할 때도 이 방법을 이용합니다. 시리얼 통신은 영어, 한국어처럼 하나의 언어라고 생각하시면 쉽습니다. 그 언어를 통해서 우리는 서로 이야기를 나눌 수 있습니다. 가끔은 휴대폰으로, 가끔은 유선전화로 할 수 있지요. 지금은 유선전화를 이용해서 통신을 한다고 생각하면 이해하기 쉽습니다.
자, 그럼 아두이노에 어떻게 신호를 보낼 수 있을까요?
바로, 컴퓨터를 이용합니다. 컴퓨터->USB->시리얼->아두이노 이 통로로 아두이노에게 신호를 보낼 수 있습니다. 신호를 보내기 위해서는 신호를 보내는 프로그램이 필요한데요, 아두이노에서 미리 만들어 둔 프로그램을 사용하겠습니다. 시리얼모니터를 열어 보겠습니다. 단축키는 Ctrl + Shift + M 입니다.
주의할 점은, COM 번호를 확인해야 하는 것입니다.
그런데 아까부터 COM COM 하는데요, 이게 무엇인가요?
항구에 가 보신적 있으신가요? 혹은 버스 터미널, 공항에 가 보신적이 있으시다면 터미널 번호를 본 적있으실 것입니다. 버스가 출발하거나 어디에서 차를 타야 하는지 우리는 티켓에서 확인할 수 있습니다. 출발할 때는 비교적 쉽게 터미널을 확인할 수 있지요. 그런데 도착할 때, 우리가 어떤 터미널에서 내릴지 쉽게 예상할 수 있나요? 버스기사님도 그 것은 예측하기 다소 어려울 수 있습니다. 왜냐하면 도착할때 쯤 버스터미널의 상황을 예상하기는 어렵기 때문입니다. 원래는 4번 터미널에서 하차하기로 했지만 4번 터미널에 아직 다른 버스가 대기하고 있다면 버스 기사님은 4번이 빌 때까지 기다리지 않고 5번이나 3번 터미널에 주차를 해 주십니다.
위의 COM은 바로 시리얼 포트입니다. 시리얼 포트는 번호를 가질 수 있지요. 마치 4번 터미널처럼요. 아두이노를 버스라고 생각해 보면, COM 번호는 터미널 번호입니다. 아두이노가 컴퓨터에 도착하면 컴퓨터는 어떤 포트가 비어있는지 확인 후 비어있는 포트를 아두이노에 할당해 줍니다.
IDE 가 정품아두이노는 잘 확인해서 어떤 COM 포트에 꽂혀 있는지 확인을 잘 해주거든요, 중국제 저가형 아두이노는 이렇게 수동으로 확인해 줄 필요가 있습니다.
시리얼 모니터를 띄우면 위 처럼 채팅창같은 화면인 뜹니다. 위에 커서가 깜빡이는 곳에 글자를 입력하고 엔터나 SEND 버튼을 누르면 아까 선택한 그 포트에 그 글자를 배달합니다. 우리가 신경써야 할 것들은 저 아래 9600 이라는 숫자입니다. 혹시 소스코드 기억나시나요?
void setup() {
myservo1.attach(9); // 9번 핀을 서보1번이라는 이름으로 컨트롤 하겠음 (왼쪽 모터)
myservo2.attach(10); // 9번 핀을 서보2번이라는 이름으로 컨트롤 하겠음 (오른쪽 모터)
// 시리얼 통신을 시작하겠음. 9600 이라는 속도로 하겠음
// 9600 이라는 숫자는 미리 정해진 여러가지 속도 중 하나임
Serial.begin(9600);
}
Serial.begin(9600);
이 부분의 숫자와 같아야합니다. 통신 속도를 똑같이 맞춰줘야 서로 이해할 수 있습니다.
b 혹은 s 라고 입력하고 엔터를 쳐 봅니다. 그러면 왼쪽 모터가 움직이는 것을 확인할 수 있을 것입니다!
이런 식으로 아두이노와 컴퓨터가 통신할 수 있는 것입니다!