산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 우노로 어벤져스 테마 폴리포닉 연주기 만들기 (Playtune 라이브러리)

부품 및 소모품

아두이노 우노 1개
브레드보드 하프 사이즈 1개
스피커 3W 4Ω (또는 소형 스피커 박스) 1개 ※ 부저는 음량 부족
저항 220Ω 3개 (각 채널 직렬)
저항 10kΩ 1개
저항 4.75kΩ 1개
저항 56Ω 1개
LED (채널별 신호 표시용, 옵션) 3개

회로도

디지털 핀 10, 11, 12 → 각각 220Ω 저항 → 공통 연결 → 스피커 + 단자. 스피커 - 단자 → GND. 각 채널 중간에서 LED + 저항으로 GND 연결 시 채널 활동 표시 가능 (옵션).

아두이노 우노로 어벤져스 테마 폴리포닉 연주기 만들기 (Playtune 라이브러리)

브레드보드 조립

간단하게 브레드보드에 구성 가능. 스피커 박스(무전원)를 사용하면 음질/음량 향상.

아두이노 우노로 어벤져스 테마 폴리포닉 연주기 만들기 (Playtune 라이브러리)
아두이노 우노로 어벤져스 테마 폴리포닉 연주기 만들기 (Playtune 라이브러리)

핵심 아이디어: Playtune 라이브러리

아두이노 기본 tone() 함수는 단음(모노포닉)만 가능. Len Shustek의 Playtune 라이브러리를 사용하면 타이머 인터럽트를 활용해 **최대 3채널(우노) / 6채널(메가) 폴리포닉 재생**이 가능합니다.

프로그래밍

악보 데이터는 PROGMEM 바이트 배열로 저장. tune_initchan(핀)으로 3채널 초기화 후 tune_playscore()로 재생. 재생 중에는 tune_playing 플래그로 대기, 곡 끝나면 3초 대기 후 반복.

#include <Playtune.h>

// 어벤져스 테마 악보 데이터 (PROGMEM)
const byte PROGMEM avengers[] = {
  0x90,0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,0x3E,
  0x00,0x7A,0x80,0x01,0x79,0x90,0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,0x3E,0x00,0x7A,
  0x80,0x00,0x02,0x90,0x3E,0x00,0x7A,0x80,0x01,0x79,0x90,0x3E,0x00,0x7A,0x80,0x00,
  0x02,0x90,0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,
  0x3E,0x00,0x7A,0x80,0x00,0x02,0x90,0x3F,0x00,0x7A,0x80,0x00,0x02,0x90,0x3F,0x00,
  0x7A,0x80,0x00,0x02,0x90,0x3F,0x00,0x7A,0x80,0x01,0x79,0x90,0x3F,0x00,0x7A,0x80,
  0x00,0x02,0x90,0x3F,0x00,0x7A,0x80,0x00,0x02,0x90,0x40,0x00,0x7A,0x80,0x01,0x79,
  0x90,0x40,0x00,0x7A,0x80,0x00,0x02,0x90,0x40,0x00,0x7A,0x80,0x00,0x02,0x90,0x40,
  0x00,0x7A,0x80,0x00,0x02,0x90,0x40,0x00,0x7A,0x80,0x00,0x02,0x90,0x41,0x00,0x7A,
  0x80,0x00,0x02,0x90,0x41,0x00,0x7A,0x80,0x00,0x02,0x90,0x41,0x00,0x7A,0x80,0x01,
  0x79,0x90,0x41,0x00,0x7A,0x80,0x00,0x02,0x90,0x41,0x00,0x7A,0x80,0x00,0x02,0x90,
  0x40,0x00,0x7A,0x80,0x01,0x79,0x90,0x40,0x00,0x7A,0x80,0x00,0x02,0x90,0x40,0x00,
  0x7A,0x80,0x00,0x02,0x90,0x40,0x00,0x7A,0x80,0x00,0x02,0x90,0x40,0x00,0x7A,0x80,
  0x00,0x02,0x90,0x3F,0x00,0x7A,0x80,0x00,0x02,0x90,0x3F,0x00,0x7A,0x80,0x00,0x02,
  0x90,0x3F,0x00,0x7A,0x80,0x01,0x79,0x90,0x3F,0x00,0x7A,0x80,0x00,0x02,0x90,0x3F,
  0x00,0x7A,0x80,0x00,0x02,0x90,0x3A,0x00,0xF7,0x80,0x00,0xFC,0x90,0x3C,0x00,0xF7,
  0x80,0x00,0xFC,0x90,0x4A,0x91,0x37,0x92,0x4F,0x00,0x7A,0x80,0x81,0x00,0x02,0x90,
  0x3E,0x91,0x4A,0x00,0x7A,0x80,0x81,0x00,0x02,0x90,0x3E,0x91,0x4A,0x00,0x7A,0x80,
  0x81,0x01,0x79,0x90,0x3E,0x91,0x4A,0x00,0x7A,0x80,0x81,0x00,0x02,0x90,0x3E,0x91,
  0x4A,0x00,0x7A,0x80,0x81,0x00,0x02,0x90,0x3E,0x91,0x4A,0x00,0x7A,0x80,0x81,0x01,
  0x79,0x90,0x3E,0x91,0x4A,0x00,0x7A,0x80,0x81,0x00,0x02,0x90,0x3E,0x91,0x4A,0x00,
  0x7A,0x80,0x81,0x00,0x02,0x90,0x3E,0x91,0x4A,0x00,0x7A,0x82,0x80,0x81,0x00,0x02,
  0x92,0x4F,0x90,0x3F,0x91,0x4B,0x00,0x7A,0x80,0x81,0x00,0x02,
  // ... (이하 생략, 전체 데이터는 GitHub 또는 원문 참조)
  0x0F,0x9D,0x82,0x81,0x80,0xF0
};

Playtune p;

void setup() {
  p.tune_initchan(10); // 채널 0
  p.tune_initchan(11); // 채널 1
  p.tune_initchan(12); // 채널 2
}

void loop() {
  p.tune_playscore(avengers); // 재생 시작
  while (p.tune_playing);     // 재생 대기
  p.tune_delay(3000);         // 3초 쉼 (아두이노 delay() 사용 금지)
}

악보 데이터 생성 팁

MIDI 파일을 Playtune 포맷으로 변환하는 툴(midi2playtune)이 라이브러리에 포함되어 있습니다. 원하는 곡의 MIDI를 구해 변환하면 손쉽게 새 곡 추가 가능.

추가 자료

마무리

단 3개의 디지털 핀과 간단한 저항/스피커 구성으로 영화관급 웅장한 폴리포닉 사운드를 아두이노 우노에서 구현할 수 있습니다. Playtune 라이브러리의 강력함을 체감해 보세요. 어벤져스 테마 외에도 좋아하는 곡을 MIDI로 변환해 넣어 나만의 미니 오케스트라를 만들어 보시길 추천합니다!

제조공정

  1. 스마트 식물 갈증 알림기 – DIY 토양 수분 센서로 최적의 수분 관리
  2. 이탈리안 워드 클럭(Word Clock) 제작: 아두이노 나노 + 네오픽셀 + LCD + RTC
  3. 아두이노 핀 절약: 4x3 키패드를 단 3개 연결으로 사용하기
  4. 아두이노 MKR Fox 1200으로 신뢰성 높은 시그폭스 kWh 미터 만들기
  5. 블루투스 온도 모니터: 아두이노 나노와 NTC 서미스터로 구현
  6. DIY 오토레인지 정전용량 측정기 (10pF~10µF) – 간단한 Arduino 제작
  7. 터치프리 제스처 잠금장치: APDS-9960과 아두이노로 보안 액세스 구현
  8. 아두이노 나노 컴패니언 키트 – DIY 전자 작업을 위한 필수 부품 및 도구
  9. 아두이노용 절연 아날로그 입력 회로 만들기
  10. 아두이노 우노로 정밀 반응 속도 테스터 만들기