사용자 도구

사이트 도구

English

cublocapp:an31005:index

AN31005 - 사운드(경고음)발생

간단한 키 터치 음에서부터, 동작 개시음, 비상경보 음을 발생시키는 방법에 대하여 알아보겠습니다.

큐블록에서 PWM 채널을 이용해서 소리를 만드는 방법과 일반 I/O 포트를 이용해서 소리를 만드는 방법이 있습니다.

소리를 발생시키는 소자로 PIEZO 또는 스피커를 사용합니다. 스피커를 사용할 때에는 아래와 같이 콘덴서하나를 직렬로 연결해주세요.

CB220/CB280 에서 I/O 포트 5 번은 PWM 0 번 채널이므로 간단하게 Freqout 명령만으로 소리를 만들 수 있습니다.

 Const Device = CB280
 Low 5
 Freqout 0,5236  '440Hz 의 주파수를 발생
 Delay 500       '일정시간을 유지
 Pwmoff 0        '파형출력 멈춤

Freqout 명령과 Delay 명령만으로 간단한 음 (키터치음, 시작음)정도는 발생시킬 수 있습니다.

 Const Device = CB280
 Low 5
 Freqout 0,4403
 Delay 200
 Freqout 0,3703
 Delay 200
 Freqout 0,3114
 Delay 200
 Freqout 0,2202
 Delay 200
 Pwmoff 0 

이 기능을 이용하여 음악을 연주할 수 있는 프로그램을 작성해 보았습니다.

옥타브 4 옥타브 5
A B C D E F G H I J K L M N

한 음을 2 개의 캐릭터로 표현하는데, 옥타브에 따라서 다른 알파벳으로 음계를 적어주고, 이어서 숫자로 된 음길이를 적어줍니다. 음 길이 숫자가 클수록 음의 길이도 길어지게 됩니다.

 Const Device = cb280
 Dim PLAYSTR As String
 Low 5
 PLAYSTR = "G5E3E3G3E3C5"
 PLAY 0,PLAYSTR
 
 Do
 Loop
 End
Sub PLAY(CH As Byte,NOTE As String)
 Dim PL As Byte
 Dim CHAR As Byte
 Const Integer PLAYTABLE = (5236,4665,4403,3923,3495,3299,2939,
 2618,2333,2202,1961,1747,1649,1469,0)
 For PL=1 To Len(NOTE) Step 2
 CHAR = Asc(Mid(NOTE,PL,1)) - &H41
 Freqout CH,PLAYTABLE(CHAR)
 CHAR = Asc(Mid(NOTE,PL+1,1)) - &H30
 Delay CHAR*100
 Next
 Pwmoff CH
End Sub 
  • 위 소스 프로그램을 선택한뒤 ctrl+c로 카피해서, CUBLOC STUDIO에 ctrl+v하면 소스를 그대로 카피할 수 있습니다.

PLAYSTR = "G5E3E3G3E3C5"

바로 이부분에 음정과 길이를 적어주었습니다. 여러분의 이 부분을 다른 걸로 한번 바꿔보세요. 그러면 다른 음악(?)을 즐길수도 있을 것입니다.

큐블록 어플리케이션 노트

cublocapp/an31005/index.txt · 마지막으로 수정됨: 2017/10/16 01:32 저자 Comfile Technology