사용자 도구

사이트 도구

English

cublocapp:an31005:index

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
cublocapp:an31005:index [2017/10/16 01:27]
Comfile Technology
cublocapp:an31005:index [2017/10/16 01:32] (현재)
Comfile Technology
줄 1: 줄 1:
 +====== AN31005 - 사운드(경고음)발생 ======
  
 +간단한 키 터치 음에서부터,​ 동작 개시음, 비상경보 음을 발생시키는 방법에 대하여 알아보겠습니다. ​
 +
 +큐블록에서 PWM 채널을 이용해서 소리를 만드는 방법과 일반 I/O 포트를 이용해서 소리를 만드는 방법이 있습니다. ​
 +
 +소리를 발생시키는 소자로 PIEZO 또는 스피커를 사용합니다. 스피커를 사용할 때에는 아래와 같이 콘덴서하나를 직렬로 연결해주세요.
 +
 +{{ :​cublocapp:​an31005:​speaker.png?​nolink |}}
 +
 +
 +CB220/CB280 에서 I/O 포트 5 번은 PWM 0 번 채널이므로 간단하게 Freqout 명령만으로 소리를 만들 수 있습니다.
 +
 +<code xbasic>
 + Const Device = CB280
 + Low 5
 + ​Freqout 0,​5236 ​ '440Hz 의 주파수를 발생
 + Delay 500       '​일정시간을 유지
 + ​Pwmoff 0        '​파형출력 멈춤
 +</​code>​
 +
 +<​html><​center>​
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​R6fqjPk3kpk"​ frameborder="​0"​ allowfullscreen></​iframe>​
 +</​center></​html>​
 +
 +Freqout 명령과 Delay 명령만으로 간단한 음 (키터치음,​ 시작음)정도는 발생시킬 수 있습니다. ​
 +
 +<code xbasic>
 + 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 
 +</​code>​
 +
 +<​html><​center>​
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​lezn64LwhUw"​ frameborder="​0"​ allowfullscreen></​iframe>​
 +</​center></​html>​
 +
 +이 기능을 이용하여 음악을 연주할 수 있는 프로그램을 작성해 보았습니다.
 +
 +^  옥타브 4  ^^^^^^^ 옥타브 5  ^^^^^^^
 +|라 |시 |도 |레 |미 |파 |솔 |라 |시 |도 |레 |미 |파 |솔|
 +|A |B |C |D |E |F |G |H |I |J |K |L |M |N|
 +
 +한 음을 2 개의 캐릭터로 표현하는데,​ 옥타브에 따라서 다른 알파벳으로 음계를 적어주고,​ 이어서 숫자로 된 음길이를 적어줍니다. 음 길이 숫자가 클수록 음의 길이도 길어지게 됩니다.
 +
 +<code xbasic>
 + 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 
 +</​code>​
 +
 +  * 위 소스 프로그램을 선택한뒤 ctrl+c로 카피해서,​ CUBLOC STUDIO에 ctrl+v하면 소스를 그대로 카피할 수 있습니다.
 +
 +<​html><​center>​
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​EcrbGYni0wQ"​ frameborder="​0"​ allowfullscreen></​iframe>​
 +</​center></​html>​
 +
 +  PLAYSTR = "​G5E3E3G3E3C5"​
 +  ​
 +바로 이부분에 음정과 길이를 적어주었습니다. 여러분의 이 부분을 다른 걸로 한번 바꿔보세요. 그러면 다른 음악(?​)을 즐길수도 있을 것입니다.
 +
 +
 +[[cublocapp:​index|큐블록 어플리케이션 노트]]