나만의 춤추는 로봇: 간단한 댄싱 로봇 프로젝트 > 초보자를 위한 로봇 프로젝트

본문 바로가기
사이트 내 전체검색

초보자를 위한 로봇 프로젝트

나만의 춤추는 로봇: 간단한 댄싱 로봇 프로젝트

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 255회 작성일 25-11-20 12:39

본문

나만의 춤추는 로봇: 간단한 댄싱 로봇 프로젝트

춤추는 로봇은 특정 시퀀스에 따라 모터를 움직여 재미있는 동작을 만들어냅니다. 여기서는 주로 '서보 모터'를 사용하여 로봇의 '팔'이나 '다리'를 제어하여 간단한 춤 동작을 구현해 보겠습니다.

1단계: 댄싱 로봇의 '원리' 이해하기

댄싱 로봇은 다음과 같은 원리로 움직입니다.


동작 계획 (코드): 춤 동작의 시퀀스를 미리 정의합니다. (예: 팔 올리기 → 팔 내리기 → 몸 흔들기 등)

명령 (컨트롤러/코드): 아두이노가 정의된 시퀀스에 따라 각 서보 모터에게 특정 각도로 움직이라는 명령을 내립니다.

행동 (서보 모터): 서보 모터가 명령받은 각도만큼 정확하게 움직여 로봇의 특정 부분을 동작시킵니다.

2단계: 필수 준비물 확인 및 구매

컨트롤러:

아두이노 우노 R3 (Arduino Uno R3) 호환 보드: 1개

USB 케이블: 아두이노와 컴퓨터 연결용.

액추에이터:

SG90 마이크로 서보 모터: 2개 또는 4개 (로봇의 '팔'이나 '다리'를 담당합니다. 많을수록 복잡한 춤 가능)

로봇 프레임/바디:

아크릴 판, 골판지, 레고 블록, PET병 등: 로봇의 몸체를 만들 재료 (간단한 판떼기 형태도 무방)

서보 혼 (Servo Horn): 서보 모터에 기본 제공되는 플라스틱 부품. 팔/다리 연결에 사용.

전원:

9V 배터리 & 스냅 커넥터: 1개 (아두이노 전원용)

(선택 사항) AA 배터리 홀더 & AA 배터리: 3~4개 (서보 모터가 3개 이상이라면 별도 전원 공급이 안정적입니다. 서보 모터는 아두이노의 5V 핀에 직접 연결하기보다 외부 전원을 사용하는 것이 좋습니다.)

연결 재료:

브레드보드: 1개 (선택 사항이나 테스트에 유용)

점퍼 케이블 (수-수, 수-암): 넉넉하게

공구:

드라이버 세트, 니퍼, 글루건 또는 양면테이프.

3단계: 로봇의 '몸' 조립하기 (기계적 조립)

간단한 몸체에 서보 모터를 부착하여 춤을 추게 해봅시다.


기본 몸체 제작:

가장 간단한 방법: 플라스틱 통이나 두꺼운 골판지로 로봇의 몸체가 될 정사각형/직사각형 모양의 플랫폼을 만듭니다. (크기: 10cm x 10cm 정도)

컨트롤러 고정: 아두이노 보드를 양면테이프나 글루건으로 이 플랫폼 위에 고정합니다.

서보 모터 부착:

'팔' 만들기: 로봇 몸체 양옆에 서보 모터 2개를 글루건이나 양면테이프를 이용해 고정합니다. 서보 모터의 축이 몸체 밖을 향하도록 합니다.

'다리' 만들기 (선택 사항): 몸체 아래쪽에 2개 이상의 서보 모터를 '다리'처럼 부착할 수도 있습니다.

서보 혼 부착: 서보 모터의 축에 서보 혼(플라스틱 십자/일자 부품)을 끼웁니다. 이 혼이 로봇의 팔/다리가 될 것입니다. (또는 길쭉한 플라스틱 막대 등을 글루건으로 서보 혼에 연결하여 팔/다리 길이를 길게 만듭니다.)

팁: 서보 모터가 움직일 때 주변 부품에 걸리지 않도록 충분한 공간을 확보하세요.


4단계: 로봇의 '신경망' 연결하기 (전기 배선)

서보 모터는 일반적으로 3개의 전선(VCC, GND, Signal)을 가집니다.


서보 모터와 아두이노 연결:

서보 모터 1 갈색/검은색 (GND) → 아두이노 GND


서보 모터 1 빨간색 (VCC) → 아두이노 5V (혹은 외부 전원 +)


서보 모터 1 주황/노란색 (Signal) → 아두이노 핀 9 (PWM 핀 중 아무거나 가능)


서보 모터 2 갈색/검은색 (GND) → 아두이노 GND


서보 모터 2 빨간색 (VCC) → 아두이노 5V (혹은 외부 전원 +)


서보 모터 2 주황/노란색 (Signal) → 아두이노 핀 10


(다른 서보 모터도 동일하게 아두이노의 다른 PWM 핀에 연결)


주의: SG90 같은 작은 서보 모터 1~2개는 아두이노의 5V 전원으로 구동이 가능합니다. 하지만 3개 이상 사용하거나 더 큰 서보 모터를 사용할 경우, 아두이노의 5V 레귤레이터에 과부하가 걸려 불안정해질 수 있습니다. 이 경우, 별도의 배터리(AA 배터리 3~4개 직렬 연결)를 사용하여 서보 모터의 VCC에 전원을 공급하고, 아두이노의 GND와 서보 모터의 GND는 반드시 함께 연결해야 합니다.


아두이노 전원: 9V 배터리 스냅 커넥터를 아두이노의 DC 잭에 연결합니다. (컴퓨터 USB 연결만으로도 가능하나, 휴대성을 위해 배터리를 사용합니다.)

배선 시 주의사항: (이전 프로젝트와 동일) 모든 배선은 전원이 없는 상태에서 하고, 정확한 연결을 거듭 확인해야 합니다.


5단계: 로봇의 '명령' 프로그래밍하기 (아두이노 코딩)

이제 로봇에게 어떤 춤을 춰야 할지 가르쳐 줄 차례입니다. 아두이노 IDE를 사용하여 코드를 업로드합니다.


5.1. 아두이노 IDE 설정 (이전 프로젝트와 동일)

5.2. 댄싱 로봇 기본 코드 예시

cpp



#include <Servo.h> // 서보 모터 라이브러리 포함


// 서보 모터 객체 생성 (사용하는 서보 수만큼 선언)

Servo myServo1; // 첫 번째 서보 (예: 왼쪽 팔)

Servo myServo2; // 두 번째 서보 (예: 오른쪽 팔)

// Servo myServo3; // 세 번째 서보 등...


// 서보 모터 연결 핀 정의

const int servoPin1 = 9;  // 왼쪽 팔 서보를 핀 9에 연결

const int servoPin2 = 10; // 오른쪽 팔 서보를 핀 10에 연결


void setup() {

  myServo1.attach(servoPin1); // 서보 모터 1을 핀 9에 연결

  myServo2.attach(servoPin2); // 서보 모터 2를 핀 10에 연결


  // 초기 자세 (중앙 또는 대기 자세)

  myServo1.write(90); // 90도는 서보 모터의 중앙 각도

  myServo2.write(90);

  delay(1000); // 1초 대기

}


void loop() {

  // 춤 동작 1: 양 팔 벌렸다 모으기

  danceMove1();

  delay(500); // 동작 사이 대기


  // 춤 동작 2: 한 팔씩 위로 올리기

  danceMove2();

  delay(500);


  // 춤 동작 3: 몸통 흔들기 (선택 사항, 로봇 프레임이 유연하다면)

  // danceMove3();

  // delay(500);


  // 원하는 만큼 춤 동작을 추가하고 반복 (loop 함수는 계속 반복됨)

}


// ---------------------- 춤 동작 정의 함수 ----------------------


void danceMove1() { // 양 팔 벌렸다 모으기

  Serial.println("Dance Move 1: Arms out & in");

  // 팔 벌리기 (0도 ~ 180도 사이에서 원하는 각도 설정)

  for (int angle = 90; angle <= 150; angle += 1) { // 왼쪽 팔을 바깥으로

    myServo1.write(angle);

    myServo2.write(180 - angle); // 오른쪽 팔도 바깥으로 (대칭)

    delay(15);

  }

  delay(200);


  // 팔 모으기

  for (int angle = 150; angle >= 90; angle -= 1) { // 왼쪽 팔을 안으로

    myServo1.write(angle);

    myServo2.write(180 - angle); // 오른쪽 팔도 안으로 (대칭)

    delay(15);

  }

  delay(200);

}


void danceMove2() { // 한 팔씩 위로 올리기

  Serial.println("Dance Move 2: One arm up");

  // 왼쪽 팔 올리기 (90도 ~ 45도)

  for (int angle = 90; angle >= 45; angle -= 1) {

    myServo1.write(angle);

    delay(15);

  }

  delay(200);


  // 왼쪽 팔 내리고 오른쪽 팔 올리기

  for (int angle = 45; angle <= 90; angle += 1) {

    myServo1.write(angle);

    delay(15);

  }

  for (int angle = 90; angle >= 45; angle -= 1) {

    myServo2.write(angle);

    delay(15);

  }

  delay(200);


  // 오른쪽 팔 내리기

  for (int angle = 45; angle <= 90; angle += 1) {

    myServo2.write(angle);

    delay(15);

  }

}


/*

// 예시: 2개의 서보 모터로 몸통을 흔드는 듯한 효과 (몸체가 유연해야 함)

void danceMove3() {

  Serial.println("Dance Move 3: Body sway");

  for (int angle = 90; angle <= 110; angle += 1) {

    myServo1.write(angle);

    myServo2.write(180 - angle);

    delay(15);

  }

  for (int angle = 110; angle >= 70; angle -= 1) {

    myServo1.write(angle);

    myServo2.write(180 - angle);

    delay(15);

  }

  for (int angle = 70; angle <= 90; angle += 1) {

    myServo1.write(angle);

    myServo2.write(180 - angle);

    delay(15);

  }

}

*/

5.3. 코드 업로드 및 춤 동작 구상

위 코드를 아두이노 IDE에 복사하여 붙여넣기 합니다.

스케치(Sketch) → 컴파일/업로드(Upload)를 클릭하여 코드를 아두이노 보드에 업로드합니다.

나만의 춤 구상: 코드 안의 danceMove1(), danceMove2() 함수를 참고하여 myServo1.write(각도)와 delay(시간) 명령어를 조합하여 자신만의 춤 동작 함수를 만들어 보세요.

서보 모터는 일반적으로 0도부터 180도까지 움직입니다. 각도를 바꿔가며 로봇의 팔이 어떻게 움직이는지 직접 확인해 보세요.

delay() 함수를 사용하여 동작 간의 간격을 조절하면 춤에 리듬감을 더할 수 있습니다.

for 문: 특정 각도 범위(예: 90도에서 150도까지)를 부드럽게 움직이게 할 때 for 문을 사용하면 자연스러운 동작을 만들 수 있습니다.

6단계: 로봇 테스트 및 최적화

춤추는 로봇 감상: 아두이노에 전원을 공급하면 로봇이 당신이 프로그래밍한 춤 동작을 반복할 것입니다.

디버깅 및 조정:

모터 방향: 서보 모터가 의도한 방향(0도가 가장 왼쪽, 180도가 가장 오른쪽)으로 움직이는지 확인합니다. 만약 반대라면 코드의 각도 값을 조정합니다 (예: 90도를 0도로, 0도를 90도로 바꿔보는 등).

각도 조정: 각 서보 모터의 최대/최소 각도를 테스트하여 로봇 몸체에 부딪히지 않고 최대한의 움직임을 보이도록 조정합니다.

춤 동작 부드럽게: delay() 값을 줄이거나 늘려 동작의 속도나 부드러움을 조절합니다. for 문 안의 delay(15)와 같은 값은 춤 동작의 '흐름'을 결정합니다.

전원 안정성: 서보 모터가 불안정하게 움직이거나 춤을 추는 도중 아두이노가 재부팅된다면, 서보 모터에 별도의 외부 전원 공급이 필요한 신호일 수 있습니다.

음악에 맞춰 춤추게 하기: (고급 응용)

음악을 틀고 로봇의 춤 동작에 걸리는 시간과 delay() 값을 조정하여 음악의 비트와 로봇의 움직임을 맞춰보세요.

나중에는 마이크 센서를 추가하여 음악의 비트를 감지하고 로봇이 반응하도록 만들 수도 있습니다.

축하합니다! 이제 당신만의 춤추는 로봇이 완성되었습니다!


이 프로젝트는 로봇에게 '움직임'의 예술을 부여하고, 당신의 창의력을 마음껏 발휘할 수 있는 즐거운 경험을 선사합니다. 춤 동작을 더 다채롭게 만들고, 더 많은 서보 모터를 추가하여 복잡한 안무를 구현해 보세요. 로봇과 함께 즐거운 시간을 보내시길 바랍니다!

[이 게시물은 관리자님에 의해 2025-11-22 10:15:07 초보자를 위한 로봇 프로젝트에서 이동 됨]
[이 게시물은 관리자님에 의해 2025-11-29 13:01:12 18에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.


회사소개 개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

작크와콩나무
대표:이강복 등록번호:129-30-34337 개인정보관리책임자:이경영

Copyright © https://roboman.co.kr/ All rights reserved.