Arduino で、ようこそジャパリパークへを演奏してみた！

#　♪～ウェルカム とぅざ ジャパリパーク！～♪

##◆Arduino で、ようこそジャパリパークへを演奏してみた！
タイトル、そのまんまである。
http://www.nicovideo.jp/watch/sm30846698

##◆環境
Arduino Uno /duemilanoveで動く。

##◆How should I do?
①ライブラリ準備
Playtuneライブラリを入れてほしい。
https://github.com/jarv/PlayTune

(違うPlaytuneの、リンク貼ってた。
(修正(2017-07-23　11時59分

②曲を準備する。
Playtuneライブラリの、songsフォルダにWTJP328p.hを入れる。
（面倒だが、下からコピペして、ファイルに保存してほしい。）

③コンパイル＆書込み
Arduinoの設定
Arduino Uno /duemilanove → 328p 16Mhz
（これも面倒だが、下からコピペして、ファイルに保存してほしい。）

Ctrl+Rで書込み

④ ピエゾブザーを
6,9,11ピンにつなぐ。

完了

##ソース

```WTJP328p.h
#ifndef WTJP328P
#define WTJP328P
#include <stdint.h>
#include <avr/pgmspace.h>

#define WTJP328P0 256,WTJP328p0_notes,WTJP328p0_delays,sizeof(WTJP328p0_notes)/sizeof(*(WTJP328p0_notes)),sizeof(WTJP328p0_delays)/sizeof(*(WTJP328p0_delays))
#define WTJP328P1 64,WTJP328p1_notes,WTJP328p1_delays,sizeof(WTJP328p1_notes)/sizeof(*(WTJP328p1_notes)),sizeof(WTJP328p1_delays)/sizeof(*(WTJP328p1_delays))
#define WTJP328P2 256,WTJP328p2_notes,WTJP328p2_delays,sizeof(WTJP328p2_notes)/sizeof(*(WTJP328p2_notes)),sizeof(WTJP328p2_delays)/sizeof(*(WTJP328p2_delays))

/*

    Part: 0
    Freq: 16000000
    Number of voices: 1
    Note length: 306
    Delay length: 306

    Part: 1
    Freq: 16000000
    Number of voices: 1
    Note length: 160
    Delay length: 160

    Part: 2
    Freq: 16000000
    Number of voices: 1
    Note length: 444
    Delay length: 444

*/

const uint8_t WTJP328p0_notes[] PROGMEM = {88,94,88,79,88,79,70,66,62,59,70,79,88,88,0,52,0,59,0,88,0,105,66,70,79,88,0,0,0,0,0,0,0,88,74,88,74,88,74,66,66,74,66,62,66,74,88,99,88,0,0,0,0,88,74,88,74,88,74,66,66,66,74,74,66,62,66,74,88,99,88,0,0,88,0,99,0,118,0,0,70,70,70,70,70,52,70,70,70,70,79,79,88,88,79,79,79,79,59,79,66,0,70,0,79,0,70,0,66,105,105,0,70,118,118,0,118,112,99,88,59,70,66,70,70,79,0,0,88,94,88,79,88,79,70,66,62,59,0,70,79,88,88,0,52,0,59,0,88,0,66,70,79,88,79,0,88,94,88,79,88,79,70,66,62,59,0,70,79,88,88,0,52,59,88,105,66,70,79,88,0,88,79,74,79,88,112,118,70,70,70,0,74,70,66,59,66,70,0,70,66,70,88,105,88,0,0,70,66,70,88,112,112,118,79,88,0,0,0,70,88,105,79,0,79,94,118,88,141,133,88,94,105,105,118,141,118,0,70,88,105,79,0,79,70,66,70,79,88,133,88,94,88,88,79,88,88,0,70,88,105,79,0,79,94,118,88,141,133,88,94,105,105,118,141,118,0,70,88,105,79,0,79,70,66,70,79,88,133,88,94,88,88,79,88,88,0,133,88,94,88,79,88,79,88,0};
const uint8_t WTJP328p0_delays[] PROGMEM = {2,2,2,4,2,2,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,2,2,4,8,16,16,16,2,2,2,2,3,3,4,2,2,2,3,3,2,2,2,2,4,2,4,16,2,2,2,2,3,3,4,1,1,2,1,1,3,3,2,2,2,2,4,2,4,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,2,2,4,2,2,2,2,2,2,2,2,2,8,2,4,4,6,2,4,2,2,4,2,4,4,4,2,2,2,4,4,16,2,2,2,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,2,2,2,4,2,2,4,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,8,2,4,2,4,4,4,4,3,3,2,1,2,3,2,6,1,1,4,2,2,4,2,4,4,6,2,8,2,4,2,4,4,2,8,8,4,4,8,16,2,2,2,8,2,2,2,2,6,4,4,4,4,4,2,2,2,6,4,2,2,2,8,2,2,2,2,4,2,4,4,4,4,2,2,6,2,6,2,2,2,2,8,2,2,2,2,6,4,4,4,4,4,2,2,2,6,4,2,2,2,8,2,2,2,2,4,2,4,4,4,4,2,2,6,2,6,2,4,4,4,2,4,2,4,4,4};

const uint8_t WTJP328p1_notes[] PROGMEM = {0,0,158,0,0,141,0,133,126,118,0,0,178,0,141,0,158,0,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,141,0,158,0,158,0,0,158,0,168,0,158,0,141,0,133,0,141,149,118,0,0,0,0,0,0,141,133,126,118,0,178,141,158,141,178,158,141,133,126,118,0,0,178,141,212,133,141,158,0,0,0,149,149,149,0,178,178,178,0,141,0,0,133,133,133,0,141,141,141,0,133,0,133,141,178,212,178,0,0,0,0,0,0,141,158,158,178,158,141,178,141,141,158,238,178,158,141,158,178,141,158,158,178,158,141,178,141,141,158,238,178,158,141,158,178,200,141,158,0,158,0,0,178,0,0};
const uint8_t WTJP328p1_delays[] PROGMEM = {2,4,2,2,4,2,2,2,2,4,2,4,4,4,4,4,4,4,4,4,16,16,16,16,16,16,16,16,16,16,16,4,8,4,8,8,8,8,8,2,4,2,2,2,2,2,2,2,2,16,2,16,14,6,4,8,16,2,4,8,4,2,2,6,4,8,8,8,8,6,8,4,2,2,4,2,4,8,8,4,4,4,4,2,4,8,1,1,4,2,1,1,4,4,8,2,4,1,1,4,2,1,1,4,4,8,8,4,2,4,4,4,2,4,8,16,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,4,2,1,1,2,2,2,4};

const uint8_t WTJP328p2_notes[] PROGMEM = {88,0,88,0,0,88,212,189,178,178,118,178,0,133,0,133,0,141,0,141,0,178,0,178,0,189,0,189,189,200,0,200,200,212,212,212,212,224,0,224,0,238,0,238,238,252,0,252,252,238,224,212,200,178,0,178,0,189,0,189,189,200,0,200,200,212,212,212,212,224,0,224,0,238,0,238,238,252,0,252,252,238,224,212,200,0,0,88,0,88,0,94,0,94,94,99,0,99,99,105,105,105,105,112,0,112,0,118,0,118,118,126,0,126,126,118,112,105,99,0,0,88,0,88,0,94,0,94,94,99,0,99,99,105,105,105,105,133,0,0,126,0,0,118,0,0,0,141,141,141,141,105,105,88,105,158,158,158,158,112,112,88,112,158,158,158,158,118,118,94,99,0,99,0,99,0,0,0,0,0,0,0,118,0,105,0,112,112,105,99,94,88,0,0,118,0,118,0,141,141,141,0,88,79,88,79,79,112,105,99,94,88,0,0,0,88,0,88,0,105,66,70,79,88,112,133,88,112,133,88,133,88,112,133,88,112,133,88,0,70,88,118,70,88,118,70,118,99,99,99,99,99,99,99,99,88,88,0,88,0,88,0,88,0,88,88,112,112,0,112,0,112,112,178,0,178,0,189,0,189,189,200,0,200,200,212,212,212,212,224,0,224,0,238,0,238,238,252,0,252,252,238,224,212,200,88,88,0,88,0,79,79,79,94,94,0,94,0,88,88,88,88,0,88,88,79,0,79,79,88,88,0,88,0,88,88,88,88,88,0,88,0,79,79,79,94,94,0,94,0,88,88,88,88,0,88,88,79,0,79,79,88,88,0,88,0,88,88,88,88,88,0,88,0,79,79,79,94,94,0,94,0,88,88,88,88,0,88,88,79,0,79,79,88,88,0,88,0,88,88,88,88,88,0,88,0,79,79,79,94,94,0,94,0,88,88,88,88,0,88,88,79,0,79,79,88,88,0,88,0,88,88,88,79,0,0,94,0,88,88,88,0,0,88};
const uint8_t WTJP328p2_delays[] PROGMEM = {2,4,2,2,4,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,16,16,16,16,16,2,2,2,2,2,2,2,4,2,2,6,4,2,2,2,2,2,2,2,2,16,2,2,2,4,2,2,4,2,2,4,2,4,2,2,2,2,8,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,4,2,2,2,4,2,2,2,6,4,2,4,2,2,2,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,4,4,2,1,1,2,8};

#endif

```
```Playtune_WTJP328p.ino
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include <playtune.h>
#include <songs/WTJP328p.h>

void setup(void)
{
      // set everything low that we aren't using
    DDRB |= (1<<PB2) | (1<<PB4) | (1<<PB3) | (1<<PB5);
    PORTB &= ~(1<<PB2) | ~(1<<PB4) | ~(1<<PB3) | ~(1<<PB5);

    
    PlayTune p0(0,WTJP328P0);
    PlayTune p1(1,WTJP328P1);
    PlayTune p2(2,WTJP328P2);
    while ( p0.isPlaying() || p1.isPlaying() || p2.isPlaying()) {
      
        p0.playNote();
        p1.playNote();
        p2.playNote();
        _delay_ms(87);
    }
    

    /*
    PlayTune pk0(0,ASUHENO0);
    PlayTune pk1(1,ASUHENO1);
    PlayTune pk2(1,ASUHENO2);
    while ( pk0.isPlaying() || pk1.isPlaying() || pk2.isPlaying()) {
      
        pk0.playNote();
        pk1.playNote();
        pk2.playNote();
        _delay_ms(30);
    }
    */

    
    digitalWrite(6, LOW);
    digitalWrite(9, LOW); 
    digitalWrite(11, LOW); 
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_mode();
  }

void loop(void)
{
}
```