간단한 키 터치 음에서부터, 동작 개시음, 비상경보 음을 발생시키는 방법에 대하여 알아보겠습니다.
큐블록에서 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
PLAYSTR = "G5E3E3G3E3C5"
바로 이부분에 음정과 길이를 적어주었습니다. 여러분의 이 부분을 다른 걸로 한번 바꿔보세요. 그러면 다른 음악(?)을 즐길수도 있을 것입니다.