ハッピイバースデイの音楽が鳴りながらLEDが点滅するプログラムです 改変等自由にご利用ください

Dependencies:   mbed

main.cpp

Committer:
kohacraft
Date:
2016-07-16
Revision:
0:0bd468acb2cb

File content as of revision 0:0bd468acb2cb:

/* ハッピイバースデイの音楽が鳴る人形のプログラムです */
#include "mbed.h"

PwmOut sp(dp1); //スピーカーのピンを設定します
DigitalOut l1(dp13);//1つ目のLEDのピンを設定します
DigitalOut l2(dp14);//2つ目のLEDのピンを設定します
Ticker flipper;     //タイマー割り込みを利用します

void flip() {   //定期的にここのプログラ実行されます
    l1 = !l1;   //LED1がONだったら反対のOFFに、OFFだったら反対のONにします
    l2 = !l2;
}

//指定した周波数の音を指定した時間鳴らします  ヘルツ,秒
 void tone( float t , float n ){
    float na;

    na = 1 / n;
    for( int i=0 ; i< t / na  ; i++ ){
        sp = 1; 
        wait(1.0 / t / 2);
        sp = 0; 
        wait(1.0 / t / 2);
    }
}
                   
int main() {
    sp.period(0.00001); //PWMの周期を細かくしておく
    
    l1 = 0;
    l2 = 1; //片方のLEDだけを光らせておく    
    flipper.attach(&flip, 0.2); //0.2秒ごとにflipというプログラムを実行する
    
    while(1) {
        //  ヘルツ  秒
        tone( 523.3 , 0.25 );
        wait(0.05);
        tone( 523.3 , 0.1 );
        
        tone( 587.3 , 0.4 );
        tone( 523.3 , 0.4 );
        tone( 698.5 , 0.4 );
        
        tone( 659.3 , 0.8 );
        tone( 523.3 , 0.25 );
        wait(0.05);
        tone( 523.3 , 0.1 );
        
        tone( 587.3 , 0.4 );
        tone( 523.3 , 0.4 );
        tone( 784 , 0.4 );
        
        tone( 698.5 , 0.8 );
        tone( 523.3 , 0.25 );
        wait(0.05);
        tone( 523.3 , 0.1 );
        
        tone( 1049 , 0.4 );
        tone( 880 , 0.4 );
        tone( 698.5 , 0.4 );
        
        tone( 659.3 , 0.4 );
        tone( 587.3 , 1.2 );
        wait(0.2);    
        tone( 932.33 , 0.25 );
        wait(0.05);
        tone( 932.33 , 0.1 );
        
        tone( 880 , 0.4 );
        tone( 698.5 , 0.4 );
        tone( 784 , 0.4 );
        tone( 698.5 , 0.8 );
     
        wait(0.4);
    }
}