[아두이노] 스피커 모듈 사용해보기

 안녕하세요 대짜이찐입니다.

이번에는 LM386 칩을 사용한

앰프 + 스피커 모듈을 아두이노로 제어해보는

방법을 알려드리겠습니다.

해당 제품은 LM386 amp가 들어간 모듈과

8Ω 0.5W 스펙의 스피커가 세트로 구성되어 있습니다.



Arduino Uno

 Amp Module

5V

VCC

GND

GND

D9

IN

연결은 위 회로도와 표대로 연결해줍니다


(출처-https://m.blog.naver.com/newmusicac/221788755732)

이번시간에는 아두이노와 스피커 모듈을 사용해서

'상어가족'의 앞부분을 연주해볼 예정입니다.

옥타브\코드

C(도)

C#

D(레)

D#

E(미)

F(파)

F#

G(솔)

G#

A(라)

A#

B(시)

1

33

35

37

39

41

44

46

49

52

55

58

62

2

65

69

73

78

82

87

93

98

104

110

117

123

3

131

139

147

156

165

175

185

196

208

220

233

247

4

262

277

294

311

330

349

370

392

415

440

466

494

5

523

554

587

622

659

698

740

784

831

880

932

988

6

1047

1109

1175

1245

1319

1397

1480

1568

1661

1760

1865

1976

7

2093

2217

2349

2489

2637

2794

2960

3136

3322

3520

3729

3951

8

4186

4435

4699

4978









위의 표는 우리가 사용하는 음계를 주파수값으로 표현한 것입니다.


아두이노 tone함수를 사용해서 사용할 음계의 주파수를 사용해서

원하는 음을 출력할 수 있습니다.


int speak = 9

 

//쉼표

int rest =0;

 

// 계이름을 순서대로 배열로 선언

int melody[] = {294, 330, 392, 392, 392, 392, 392, 392, 392, 294, 330, 392, rest,

                      // 레    미    솔     솔    솔    솔     솔    솔    솔     레    미    솔 

                     //  아    기    상     어    뚜    루     룻    뚜    루     귀    여    운  

                       392, 392, 392, 392, 392, 294, 330, 392, rest,

                     //  솔    솔    솔     솔    솔    레     미    솔

                     //  뚜    루    룻     뚜    루    바     다    속

                      392, 392, 392, 392, 392, 392, 392, 370, 370, rest};

                    // 솔    솔    솔     솔    솔    솔     솔    파#   파#

                    // 뚜    루    룻     뚜    루    아     기    상     어

 

// 연주 유지시간을 배열로 선언

int damper[] = {400, 400, 200, 200, 200, 100, 300, 100, 200, 200, 200, 100, 30,

                        200, 100, 300, 100, 200, 200, 200, 10030,  

                        200, 100, 300, 100, 200, 200, 200, 200, 200, 3000};

 

void setup ()

{

  pinMode(speak,OUTPUT); //  핀 9번을 출력 설정

}

 

void loop()

{

  for(int a=0; a<32; a++)

  {

    tone(speak,melody[a],damper[a]); // 각 음계와 유지시간으로 스피커 연주

    delay(damper[a]+100); // 유지시간+100ms 만큼 대기하여 연주 박자 유지

  }

}

 

Colored by Color Scripter

cs


이번엔 아두이노에서 tone 함수를 사용했습니다.

tone()함수는 tone(출력 핀번호,주파수,유지시간) 형식으로 되어 있으며,

출력 핀 번호에는 PWM 출력이 가능한핀을 사용합니다. 

주파수는 위의 표를 참고 하셔서 작성해주시면 됩니다. 

유지시간은 말 그대로 소리를 얼마나 낼지 밀리초(ms)단위로 기록하시면 됩니다. 

이 함수는 한번에 1개의 핀만 제어할 수 있으며, 

이미 tone 함수를 사용해 연주하고 있다면, 

다른핀에 tone 함수를 적용해도 작동하지 않습니다. 

delay 함수를 통해 유지시간이 끝나기를 기다렸다가 순서대로 연주해야합니다.


본 포스팅에 사용된 제품은 디바이스마트에서 구매하실 수 있습니다.


감사합니다.


댓글 쓰기

0 댓글