모터로 악기를 두드려 보기

소스를 조금씩 수정해 가면서 우리는 모터를 움직일 것입니다. 하나씩 바꿔가면서 하면 전체적인 흐름을 이해하는 데에 아주 큰 도움이 됩니다.

어디를 바꾸면 각도가 바뀌나요?

소스 프로그램의 모든 부분 중에서 단 한 군데 숫자만 바꾸면 각도가 바뀝니다. 여러분도 예상했을 수 있는 바로 그 자리입니다.

#include <Servo.h>
Servo myservo1;  // 첫 번째 서보모터 (왼쪽 모터)
Servo myservo2;  // 두 번째 서보모터 (오른쪽 모터)

void setup() {
  myservo1.attach(9);   // 9번 핀을 서보1번이라는 이름으로 컨트롤 하겠음 (왼쪽 모터)
  myservo2.attach(10);  // 9번 핀을 서보2번이라는 이름으로 컨트롤 하겠음 (오른쪽 모터)
}

void loop() {
  myservo1.write(90); // 서보 1번에게 90도로 이동하라고 명령 (왼쪽 모터)
  myservo2.write(90); // 서보 1번에게 90도로 이동하라고 명령 (오른쪽 모터)
}

위의 모든 소스에서 90 이라는 숫자만 다른 숫자로 바꿔 주면 모터의 각도가 바뀌게 됩니다. 한 번 0도 바꿔보겠습니다. 우리는 두 서보모터를 사용하고 있습니다. 두 모터를 사용하고 있는데 두 모터를 서로 등을 지게 고정했기 때문에 각 모터는 다른 방향으로 돌아갈 것입니다. 마치 두 친구가 등을 맞대고 오른손을 들어서 오른쪽으로 뻗어보라고 하면 서로 다른 곳을 향해 뻗는 것과 마찬가지인 것입니다.

변경된 소스는 다음과 같은 모양일 것입니다.

#include <Servo.h>
Servo myservo1;  // 첫 번째 서보모터  (왼쪽 모터)
Servo myservo2;  // 두 번째 서보모터 (오른쪽 모터)

void setup() {
  myservo1.attach(9);   // 9번 핀을 서보1번이라는 이름으로 컨트롤 하겠음 (왼쪽 모터)
  myservo2.attach(10);  // 9번 핀을 서보2번이라는 이름으로 컨트롤 하겠음 (오른쪽 모터)
}

void loop() {
  myservo1.write(0); // 서보 1번에게 0도로 이동하라고 명령 (왼쪽 모터)
  myservo2.write(0); // 서보 1번에게 0도로 이동하라고 명령 (오른쪽 모터)
}
그런데 어떻게 왔다 갔다 할 수 있나요?

로봇이 드럼을 연주하기 위해서는 위에서 아래로 움직여야 할 것입니다. 그렇다면 어떻게 고치면 될까요?

소스를 한 군데에서 고정할 것이 아니라 시간에 따라서 어떤 시간에는 위로, 어떤 시간에는 아래로 가도록 해야겠지요? 이제 우리는 시간 개념이 들어간 프로그램을 할 것입니다.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *