
#<함수형>**********************************
void _Pwm_멜로디_(unsigned char   p장치번호,
                 unsigned char   p옥타브,
                 unsigned char   p음계);

#<인수>
'p장치번호'
PWM 장치 번호(0 - 2 사이값).
'p옥타브'
음계 옥타브(1 - 8 사이값).
'p음계'
12음계값(1 - 12 사이값).
1  : 도
2  : 도#
3  : 레
4  : 레#
5  : 미
6  : 파
7  : 파#
8  : 솔
9  : 솔#
10 : 라
11 : 라#
12 : 시

#<반환값>

#****************************************

#<적용구분>

"맷돌 전용"

#<선언문서>

"_Pwm_멜로디_.h"

#<설명>

지정된 PWM 장치의 멜로디음을 설정합니다.
이 기능은 반드시 해당 PWM 장치가 <멜로디 발생기> 로 생성돼 있어야 합니다.

옥타브는 1 - 8 까지 지원(가청 주파수 범위)되며, 음계는 12 음계 전부를 다 지원합니다.
각각 해당 상수값을 사용하는 것 만으로 간단하게 해당 음을 출력할수 있습니다.
출력되는 PWM 은 50% 듀티비로 고정돼 있습니다.

PWM 장치당 4개의 채널을 지원하지만 멜로디 기능은 1 개의 주파수 자체를 사용하므로 모두에 같은 음을 출력하거나 
채널중 한개만 골라서 지정음을 출력할수 있습니다.

해당 PWM 출력핀에 스피커나 피에조부저 등을 연결하면 지정 음을 들을수 있습니다(이어폰에 연결해도 됨).

음의 출력을 켜고 끄는 것은 <API:_Pwm_채널_> 이나 <API:_Pwm_핀_> 을 사용하여 처리하면 됩니다.
타이머와 같이 사용하면 정확한 박자를 구현 가능하며 PWM 장치가 3 개 지원되므로 3중주를 연주가능합니다.
관련 예제를 참고하십시요.

#<예제>

  // ...
  
  void 시간지연(int  p지연시간값) 
  {
    while(p지연시간값--);
  
  }
  
  void main(void)
  {
    // ...
  
    //PWM 장치 0번을 [멜로디 발생기] 로 생성합니다.
    _Pwm_생성_(0, 3);
  
    //PWM 장치 0번의 채널 0번으로 [멜로디] 를 출력하기 위하여 채널을 열어줍니다.
    _Pwm_채널_(0, 0, true);
  
    //채널의 핀을 열어주어 최종적으로 PWM 을 출력합니다.
    _Pwm_핀_(0, 0, true);
 
    //3옥타브의 [ 도, 레, 미, 파, 솔, 라, 시, 도 ] 를 출력합니다.
  
    _Pwm_멜로디_(0, 3, 1);  시간지연(0xaff); //도.
    _Pwm_멜로디_(0, 3, 3);  시간지연(0xaff); //레.
    _Pwm_멜로디_(0, 3, 5);  시간지연(0xaff); //미.
    _Pwm_멜로디_(0, 3, 6);  시간지연(0xaff); //파.
    _Pwm_멜로디_(0, 3, 8);  시간지연(0xaff); //솔.
    _Pwm_멜로디_(0, 3, 10); 시간지연(0xaff); //라.
    _Pwm_멜로디_(0, 3, 12); 시간지연(0xaff); //시.
    _Pwm_멜로디_(0, 4, 12); 시간지연(0xaff); //도(4옥타브).
 
    //핀의 PWM 을 닫아 PWM 출력을 중지합니다(소리 끄기). 
    _Pwm_핀_(0, 0, false);
  
    // ...

  }

