====== AN31005 - 사운드(경고음)발생 ====== 간단한 키 터치 음에서부터, 동작 개시음, 비상경보 음을 발생시키는 방법에 대하여 알아보겠습니다. 큐블록에서 PWM 채널을 이용해서 소리를 만드는 방법과 일반 I/O 포트를 이용해서 소리를 만드는 방법이 있습니다. 소리를 발생시키는 소자로 PIEZO 또는 스피커를 사용합니다. 스피커를 사용할 때에는 아래와 같이 콘덴서하나를 직렬로 연결해주세요. {{ :cublocapp:an31005:speaker.png?nolink |}} 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:index|큐블록 어플리케이션 노트]]