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

아두이노로 만드는 빛과 소리의 생일 축하 DIY 프로젝트

프로젝트 개요

아두이노 우노(Arduino UNO)와 몇 가지 기본 부품만으로 생일 축하 노래를 연주하며 LED가 반짝이는 즐거운 장치를 직접 만들어 보세요. 초보자도 쉽게 따라 할 수 있는 난이도로, 전자공학 입문용 프로젝트로 안성맞춤입니다.

필요한 부품 및 재료

필요한 도구

소프트웨어

회로 구성 방법

1단계: 부품 준비 및 스피커 납땜

모든 부품을 준비합니다. 스피커에 리드선이 없으면 점퍼 와이어를 납땜해 연결합니다.

2단계: LED 브레드보드에 장착

빨강, 파랑, 흰색 LED 3개를 브레드보드에 서로 가깝게 꽂습니다. 긴 다리(애노드, +)와 짧은 다리(캐소드, -) 방향을 확인하세요.

3단계: LED 애노드(긴 다리) 아두이노 핀 연결

점퍼 와이어를 사용해 각 LED의 애노드를 다음 아두이노 디지털 핀에 연결합니다.

4단계: LED 캐소드(짧은 다리) 접지 연결

각 LED의 캐소드에 220Ω 저항을 하나씩 연결한 뒤, 저항의 다른 쪽을 브레드보드의 그라운드(-) 레일에 연결합니다. 브레드보드 그라운드 레일을 아두이노 GND 핀에 연결하세요.

5단계: 스피커 연결

스피커의 음극(-) 선을 브레드보드 그라운드 레일에, 양극(+) 선을 아두이노 디지털 핀 3번에 연결합니다.

소스 코드

아래 두 파일을 아두이노 IDE에 복사해 업로드하세요. pitches.h는 음계 주파수 정의 헤더 파일로, 메인 코드와 같은 폴더에 저장해야 합니다.

메인 코드: Happy Birthday Lights + Sounds

// RED 9; BLUE 10; WHITE 11;
#include "pitches.h"

// 멜로디 음표 배열 (생일 축하 노래)
int melody[] = {
  NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
  NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
  NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4,
  NOTE_D4, NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
};

// 음표 길이: 4=4분음표, 8=8분음표 등
int noteDurations[] = {
  8, 8, 4, 4, 4, 2,
  8, 8, 4, 4, 4, 2,
  8, 8, 4, 4, 4, 4,
  4, 8, 8, 4, 4, 4, 2
};

void setup() {
  pinMode(9, OUTPUT);   // 빨강 LED
  pinMode(10, OUTPUT);  // 파랑 LED
  pinMode(11, OUTPUT);  // 흰색 LED

  for (int thisNote = 0; thisNote < 25; thisNote++) {
    // 9~11번 핀 중 랜덤하게 2개 켜고 1개 끔
    int randomLight1 = random(9, 12);
    int randomLight2 = random(9, 12);
    int randomLight3 = random(9, 12);
    digitalWrite(randomLight1, HIGH);
    digitalWrite(randomLight2, HIGH);
    digitalWrite(randomLight3, LOW);

    // 음표 길이 계산 (ms)
    int noteDuration = 1130 / noteDurations[thisNote];
    tone(3, melody[thisNote], noteDuration);  // 핀 3번 스피커로 재생

    int pause = noteDuration * 1.275;  // 음표 간 간격
    delay(pause);
    noTone(3);
  }

  delay(3000);  // 곡 종료 후 3초 대기
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
}

void loop() {
  // 반복 재생 불필요 (한 번만 연주)
}

pitches.h (음계 주파수 정의 헤더)

/*************************************************
 * Public Constants - 표준 음계 주파수 (Hz)
 *************************************************/
#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047
#define NOTE_CS6 1109
#define NOTE_D6  1175
#define NOTE_DS6 1245
#define NOTE_E6  1319
#define NOTE_F6  1397
#define NOTE_FS6 1480
#define NOTE_G6  1568
#define NOTE_GS6 1661
#define NOTE_A6  1760
#define NOTE_AS6 1865
#define NOTE_B6  1976
#define NOTE_C7  2093
#define NOTE_CS7 2217
#define NOTE_D7  2349
#define NOTE_DS7 2489
#define NOTE_E7  2637
#define NOTE_F7  2794
#define NOTE_FS7 2960
#define NOTE_G7  3136
#define NOTE_GS7 3322
#define NOTE_A7  3520
#define NOTE_AS7 3729
#define NOTE_B7  3951
#define NOTE_C8  4186
#define NOTE_CS8 4435
#define NOTE_D8  4699
#define NOTE_DS8 4978

회로도

프로젝트 페이지에서 happy_birthday_lights__sounds_I16bf0SBDq.fzz (Fritzing 파일)를 다운로드해 회로도를 확인할 수 있습니다.

작동 원리 및 팁

마치며

간단한 부품만으로도 생일 파티 분위기를 띄울 수 있는 멋진 장치를 만들 수 있습니다. 아두이노 입문자에게 회로 구성, tone() 함수 활용, 배열 다루기 등을 연습하기에 좋은 프로젝트입니다. 직접 만들어 소중한 사람에게 선물해 보세요!

제조공정

  1. 티타늄 와이어: 종류, 특성 및 산업 적용
  2. 전기 회로도 배선 연결 표기법: 명확한 가이드
  3. 네트워크와 버스: 디지털 시스템 배선의 명확한 가이드
  4. 아두이노 메가에서 푸시 버튼으로 PWM을 이용해 LED 밝기 제어하기
  5. DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트
  6. Azure IoT Hub에서 공간 분석 기능을 갖춘 GPS 데이터로거 구축
  7. 아두이노 DHT11 이더넷 실드 온습도 데이터 로거
  8. DIY 기타 스피드 픽 & 스톰프 페달 - 3D 프린팅 모터식 픽 직접 만들기
  9. 자동차 계기판 경고등 완벽 가이드: 의미와 대처법
  10. 정밀 제조 50주년 기념: Metal Cutting Corporation 창립 반세기