メロディーIC SM6201
メロディーIC SM6201スペックシートの通りに、演奏テンポを調整する抵抗とスイッチを付ければ使えます。
出力はちょっと弱いのでアンプが必要 PAM8012使用2ワットD級アンプモジュール を使用しました。


ArduinoUNOで制御
TK0~TK3のいずれかをLOWにすれば演奏を開始できます。PENの状態で演奏終了を感知することができます。


/*
* MelodyIC Contril
*/
#define IS_PLAY 6
#define MELODY1 8
#define MELODY2 9
#define MELODY3 10
#define MELODY_SEQ 11
#define LED 13
void setup() {
pinMode(IS_PLAY,INPUT) ;
pinMode(MELODY1,OUTPUT) ;
pinMode(MELODY2,OUTPUT) ;
pinMode(MELODY3,OUTPUT) ;
pinMode(MELODY_SEQ,OUTPUT) ;
pinMode(LED,OUTPUT) ;
digitalWrite(MELODY1,HIGH) ;
digitalWrite(MELODY2,HIGH) ;
digitalWrite(MELODY3,HIGH) ;
digitalWrite(MELODY_SEQ,HIGH) ;
}
void loop() {
// Start playing
digitalWrite(MELODY_SEQ,LOW) ;
while(digitalRead(IS_PLAY) == LOW){
digitalWrite(13,digitalRead(IS_PLAY)) ;
}
digitalWrite(MELODY_SEQ,HIGH) ;
// WWait for the end of the playing
while(digitalRead(IS_PLAY) == HIGH){
digitalWrite(LED,digitalRead(IS_PLAY)) ;
}
digitalWrite(LED,digitalRead(IS_PLAY)) ;
delay(5000) ;
}