圧電スピーカーでテトリスの音楽を流します

Dependencies:   mbed

main.cpp

Committer:
gurapomu
Date:
2017-08-28
Revision:
0:a864d5764edb

File content as of revision 0:a864d5764edb:

#define mC 261.626
#define mD 293.665
#define mE 329.628
#define mF 349.228
#define mG 391.995
#define mA 440.000
#define mB 493.883
 
#include "mbed.h"
 
DigitalOut sp1(p5);
Ticker timer;
Ticker stop_tick;
InterruptIn stop_s(p6), restart_s(p7);
int i;
 
int oto=0;
 
void tick(void)
{
    sp1.write(oto);
    oto=!oto;
}

void stop (){
    wait(0.1); 
}

void stop_start(){
    stop_tick.attach_us(&stop, 1);   
}

void restart(){
    i = 65535;
    stop_tick.detach();
}
 
int main() {
    float mm[]={659,2,493,1,523,1,587,2,523,1,493,1,440,2,440,1,523,1,659,2,587,1,523,1,493,3,523,1,587,2,659,2,523,2,440,2,440,2,0,3,587,2,698,1,880,2,783,1,698,1,659,2,0,1,523,1,659,2,587,1,523,1,493,2,493,1,523,1,587,2,659,2,523,2,440,2,440,2,0,2,659,2,493,1,523,1,587,2,523,1,493,1,440,2,440,1,523,1,659,2,587,1,523,1,493,3,523,1,587,2,659,2,523,2,440,2,440,2,0,3,587,2,698,1,880,2,783,1,698,1,659,2,0,1,523,1,659,2,587,1,523,1,493,2,493,1,523,1,587,2,659,2,523,2,440,2,440,2,0,2,329,4,261,4,293,4,246,4,261,4,220,4,207,4,246,4,329,4,261,4,293,4,246,4,261,2,329,2,440,4,415,8};
    stop_s.mode(PullNone);
    stop_s.fall(&stop_start);
    restart_s.mode(PullNone);
    restart_s.fall(&restart);
    while(1){
        for (i=0;i<sizeof(mm)/sizeof(float);i+=2) {
            timer.attach(&tick,1.0/mm[i]/2.0);
            wait(0.2*mm[i+1]);
            timer.detach();
            sp1.write(0);
        }
    }
}