본문 바로가기

교육 자료/Raduino mini

6. SOUND

SOUND

  • 준비물


  • 회로도

  • 코드 

     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include "pitches.h"         // Buzzer를 사용하기 위한 라이브러리 선언
    #define SOUND PB4            // Buzzer 신호(S) 핀 설정
     
    int melody[] = {             // 멜로디를 배열로 저장함
    NOTE_E4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_F4,NOTE_G4,
    NOTE_E4,NOTE_F4,NOTE_D4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_E4,NOTE_B4,
    NOTE_C5,NOTE_A4,NOTE_F4,NOTE_E4,NOTE_G4,NOTE_F4,NOTE_E4,NOTE_D4,
    NOTE_D4,NOTE_D4,NOTE_E4,NOTE_D4,NOTE_B3,NOTE_D4,NOTE_C4,NOTE_G4,
    NOTE_A4,NOTE_F4,NOTE_D4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_C5,NOTE_B4,
    NOTE_C5,NOTE_A4,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_C5,NOTE_G4,NOTE_C5,
    NOTE_E5,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_C5,NOTE_A4,NOTE_G4,
    NOTE_G4,NOTE_A4,NOTE_B4,NOTE_C5
    };
    int noteDurations[] = {      // 해당 음의 박자 수    
      8,8,8,2,8,8,8,8,8,8,8,8,8,8,2,8,3,4,3,2,8,8,8,8,8,8,4,8,8,4,
      3,8,2,4,8,2,4,8,2,4,8,2,4,8,4,8,2,8,2,8,8,8,4,8,2,4,8,4,8,1
    };
     
     
    void setup() {
      pinMode(SOUND, OUTPUT);   // SOUND 출력핀으로 설정
    }
     
    void loop() {
        for (int thisNote = 0; thisNote < 60; thisNote++) {    
        int noteDuration = 1800/noteDurations[thisNote];    // 박자 시간 변환 
        tone(SOUND, melody[thisNote], noteDuration);        // 음색(tone) 설정
        int pauseBetweenNotes = noteDuration * 1.30 ;       // 음 길이를 계산   
        delay(pauseBetweenNotes);                           // pauseBetweenNotes 동안 대기
        noTone(SOUND);                                      // 음 출력 중지
      }
    }
    cs


위 해당 소스 헤더파일 다운로드 

pitches.h


※ 본 코드에 쓰인 헤더파일의 출처

https://gist.github.com/mikeputnam/2820675


  • 완성


  • 예제 2. iKON의 '사랑을 했다' 사운드 드론 

  • 소스코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include pitches.h
 
#define SOUND PB4
  
int melody[] = {0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,NOTE_G4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,
                NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_G4,NOTE_G4,
                NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,
                NOTE_E5,NOTE_G5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,  NOTE_E5,NOTE_D5,0,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,
                
                NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_B4,NOTE_A4,NOTE_B4,NOTE_B4,NOTE_A4,  NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_G4,NOTE_A4,NOTE_B4,NOTE_B4,NOTE_A4,  NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,  NOTE_B4,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_G4,NOTE_A4,0,NOTE_G4,
                NOTE_D5,NOTE_D5,NOTE_B4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_A4,NOTE_A4,  NOTE_A4,NOTE_A4,NOTE_B4,0,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_D5,NOTE_D5,NOTE_B4,0,NOTE_B4,NOTE_A4,NOTE_A4,NOTE_A4,NOTE_G4,NOTE_A4,0,NOTE_A4,NOTE_A4,NOTE_A4,  NOTE_A4,NOTE_B4,NOTE_B4,0,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_D5,
                
                NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_A5,  NOTE_A5,NOTE_A5,0,NOTE_G5,NOTE_G5,NOTE_E5,  NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_G5,  NOTE_G5,NOTE_E5,NOTE_E5,0,NOTE_D5,NOTE_D5,NOTE_D5,
                NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_A5,  NOTE_A5,NOTE_A5,0,NOTE_A5,NOTE_A5,NOTE_G5,  NOTE_G5,0,NOTE_E5,NOTE_E5,NOTE_D5,  0,0,NOTE_B4,NOTE_A4,NOTE_G4,
                
                NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,NOTE_G4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,
                NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,NOTE_G4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_G4,NOTE_G4,
                NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,
                NOTE_E5,NOTE_G5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,  NOTE_E5,NOTE_D5,0,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,0,NOTE_G5,0,NOTE_D5,NOTE_D5,NOTE_D5,
                
                NOTE_E5,NOTE_D5,NOTE_D5,0,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,  NOTE_E5,NOTE_E5,NOTE_D5,NOTE_D5,NOTE_C5,0,NOTE_D5,NOTE_D5,  NOTE_E5,NOTE_D5,NOTE_D5,0,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,0,NOTE_D5,NOTE_D5,  NOTE_E5,NOTE_E5,NOTE_D5,NOTE_D5,NOTE_C5,0,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D5,
                NOTE_E5,NOTE_D5,0,NOTE_B4,NOTE_B4,NOTE_B4,NOTE_A4,0,NOTE_D5,  NOTE_E5,NOTE_D5,0,NOTE_B4,NOTE_B4,NOTE_G4,0,NOTE_G4,  NOTE_A4,NOTE_G4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_A4,NOTE_G4,NOTE_A4,0,NOTE_G4,NOTE_A4,  NOTE_A4,NOTE_G4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,0,NOTE_D5,
 
                NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_A5,  NOTE_A5,NOTE_A5,0,NOTE_G5,NOTE_G5,NOTE_E5,  NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_G5,  NOTE_G5,NOTE_E5,NOTE_E5,0,NOTE_D5,NOTE_D5,NOTE_D5,
                NOTE_E5,NOTE_B5,NOTE_A5,NOTE_A5,NOTE_G5,NOTE_A5,  NOTE_A5,NOTE_A5,0,NOTE_A5,NOTE_A5,NOTE_G5,  NOTE_G5,0,NOTE_E5,NOTE_E5,NOTE_D5,  0,0,NOTE_B4,NOTE_A4,NOTE_G4,
                
                NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,NOTE_G4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,
                NOTE_B4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,NOTE_G4,  NOTE_G4,NOTE_G4,0,NOTE_D5,NOTE_D5,
 
                NOTE_A5,NOTE_G5,NOTE_G5,0,NOTE_E5,  NOTE_D5,NOTE_E5,NOTE_B4,NOTE_B4,0,NOTE_G4,  NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,  NOTE_B4,0,0,NOTE_D5,NOTE_D5,NOTE_D5,
                NOTE_A5,NOTE_G5,NOTE_G5,0,NOTE_E5,  NOTE_D5,NOTE_E5,NOTE_B4,NOTE_B4,0,NOTE_G4,  NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_B4,  NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_G4,NOTE_G4,
 
                NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,  NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_G4,NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_G4,NOTE_G4,
                NOTE_E5,NOTE_G5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_F5,  NOTE_E5,NOTE_D5,0,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E5,NOTE_D5,NOTE_B4,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,
 
                NOTE_D5,NOTE_E5,NOTE_D5,NOTE_E5,NOTE_E5,NOTE_D5,  NOTE_E5,NOTE_D5,0,  NOTE_A4,NOTE_B4,NOTE_A4,NOTE_B4,NOTE_B4,NOTE_G4,  NOTE_A4,NOTE_G4,0,
                NOTE_D5,NOTE_E5,NOTE_D5,NOTE_E5,NOTE_E5,NOTE_D5,  NOTE_E5,NOTE_D5,0,  NOTE_A4,NOTE_B4,NOTE_A4,NOTE_B4,NOTE_B4,NOTE_G4,  NOTE_A4,NOTE_G4,0,NOTE_B4,NOTE_A4,NOTE_G4,
 
                NOTE_G4,NOTE_D5,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_B4,NOTE_A4,NOTE_A4,0,NOTE_B4,NOTE_A4,NOTE_G4,  NOTE_A4,NOTE_A4,0,NOTE_G4,NOTE_A4,NOTE_G4,NOTE_A4,NOTE_G4,  NOTE_G4,NOTE_E4,0
                
};     멜로디를 배열로 저장함
int noteDurations[] = {4,4,4,4,  4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,4,4,4,4,4,4,
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,4,4,4,4,4,4,
                       2,4,4,2,4,4,  4,4,2,4,4,4,42,4,4,2,4,4,  4,4,2,4,4,4,4,
                       2,4,4,2,4,4,  4,1.8,4,4,4,4,  2,4,4,2,4,4,  4,4,2,2,1.8,
                       
                       4,4,4,8,8,8,2.6,4,8,8,  8,8,4,8,2.6,2,4,8,8,  4,4,8,8,4,8,8,4,8,8,4,  8,8,4,8,2.6,2,4,4,
                       4,8,8,8,8,4,8,4,8,4,8,8,  4,8,8,8,8,4,4,2.6,8,  4,8,8,8,8,8,8,4,8,8,8,8,8,84,8,8,8,8,4,2,4,4,
                       
                       2,4,4,4,2,4,  2,2,4,4,4,4,  2,2.6,8,4,2,4,  4,4,2,4,4,4,4,
                       2,4,4,4,2,4,  2,2,4,4,4,4,  2,4,4,2,2,  1,4,4,4,4,
 
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,4,4,4,4,4,4,
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,4,4,4,4,4,4,
                       2,4,4,2,4,4,  4,4,2,4,4,4,4,  2,4,4,2,4,4,  4,4,2,4,4,4,4,
                       2,4,4,2,4,4,  4,1.8,4,4,4,4,  2,4,4,2,4,4,  4,4,4,4,4,4,4,4,
 
                       8,4,8,8,8,4,8,4,8,4,4,  4,8,8,8,2.6,2,4,4,  4,8,8,8,8,8,8,4,8,8,8,8,4,  4,8,8,8,2.6,4,8,8,4,4,
                       2.6,8,8,8,8,8,2,4,4,  2.6,8,4,8,8,2,4,4,  4,8,8,8,8,4,4,8,8,8,8,4,  4,8,8,8,8,4,2,4,4,
 
                       2,4,4,4,2,4,  2,2,4,4,4,4,  2,2.6,8,4,2,4,  4,4,2,4,4,4,4,
                       2,4,4,4,2,4,  2,2,4,4,4,4,  2,4,4,2,2,  1,4,4,4,4,
 
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,4,4,4,4,4,4,
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  2,2,2,4,4,
 
                       1.8,4,2,4,4,  2,4,4,2,4,4,  4,4,4,4,4,4,2,  2,2,4,4,4,4,
                       1.8,4,2,4,4,  2,4,4,2,4,4,  4,4,4,4,4,4,2,  2,4,4,4,4,4,4,
 
                       2,4,4,2,4,4,  4,4,2,4,4,4,4,  2,4,4,2,4,4,  4,4,2,4,4,4,4,
                       2,4,4,2,4,4,  4,1.8,4,4,4,4,  2,4,4,2,4,4,  4,4,2,1,
 
                       4,2,4,2,4,4,  4,1.8,1.25,  4,2,4,2,4,4,  4,1.8,1.25,
                       4,2,4,2,4,4,  4,1.8,1.25,  4,2,4,2,4,4,  4,1.8,4,4,4,4,
 
                       4,1.8,4,4,4,4,  4,4,2,4,4,4,4,  4,4,4,4,4,4,4,4,  1.8,4,1
 
                       
};        해당 음의 박자 수        
 
 
void setup() {
  pinMode(SOUND, OUTPUT);
}
 
void loop() {
    for (int thisNote = 0; thisNote  1000; thisNote++) {    
    int noteDuration = 1000noteDurations[thisNote];   박자 시간 변환 
    tone(SOUND, melody[thisNote],noteDuration);     
    int pauseBetweenNotes = noteDuration  ;  음 길이를 계산   
    delay(pauseBetweenNotes);
    noTone(SOUND);            음 출력 중지
  }
}
cs

  • 소스코드 다운로드

  • 동영상



'교육 자료 > Raduino mini' 카테고리의 다른 글

11. SBUS 비행제어  (0) 2018.10.08
8. Dot Matrix LED  (0) 2018.10.01
5. RGB  (0) 2018.10.01
7. RGB + SOUND  (0) 2018.10.01
4. 라두이노 미니 조종  (0) 2018.09.21