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

Dependencies:   mbed

Committer:
gurapomu
Date:
Mon Aug 28 13:59:46 2017 +0000
Revision:
0:a864d5764edb
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gurapomu 0:a864d5764edb 1 #define mC 261.626
gurapomu 0:a864d5764edb 2 #define mD 293.665
gurapomu 0:a864d5764edb 3 #define mE 329.628
gurapomu 0:a864d5764edb 4 #define mF 349.228
gurapomu 0:a864d5764edb 5 #define mG 391.995
gurapomu 0:a864d5764edb 6 #define mA 440.000
gurapomu 0:a864d5764edb 7 #define mB 493.883
gurapomu 0:a864d5764edb 8
gurapomu 0:a864d5764edb 9 #include "mbed.h"
gurapomu 0:a864d5764edb 10
gurapomu 0:a864d5764edb 11 DigitalOut sp1(p5);
gurapomu 0:a864d5764edb 12 Ticker timer;
gurapomu 0:a864d5764edb 13 Ticker stop_tick;
gurapomu 0:a864d5764edb 14 InterruptIn stop_s(p6), restart_s(p7);
gurapomu 0:a864d5764edb 15 int i;
gurapomu 0:a864d5764edb 16
gurapomu 0:a864d5764edb 17 int oto=0;
gurapomu 0:a864d5764edb 18
gurapomu 0:a864d5764edb 19 void tick(void)
gurapomu 0:a864d5764edb 20 {
gurapomu 0:a864d5764edb 21 sp1.write(oto);
gurapomu 0:a864d5764edb 22 oto=!oto;
gurapomu 0:a864d5764edb 23 }
gurapomu 0:a864d5764edb 24
gurapomu 0:a864d5764edb 25 void stop (){
gurapomu 0:a864d5764edb 26 wait(0.1);
gurapomu 0:a864d5764edb 27 }
gurapomu 0:a864d5764edb 28
gurapomu 0:a864d5764edb 29 void stop_start(){
gurapomu 0:a864d5764edb 30 stop_tick.attach_us(&stop, 1);
gurapomu 0:a864d5764edb 31 }
gurapomu 0:a864d5764edb 32
gurapomu 0:a864d5764edb 33 void restart(){
gurapomu 0:a864d5764edb 34 i = 65535;
gurapomu 0:a864d5764edb 35 stop_tick.detach();
gurapomu 0:a864d5764edb 36 }
gurapomu 0:a864d5764edb 37
gurapomu 0:a864d5764edb 38 int main() {
gurapomu 0:a864d5764edb 39 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};
gurapomu 0:a864d5764edb 40 stop_s.mode(PullNone);
gurapomu 0:a864d5764edb 41 stop_s.fall(&stop_start);
gurapomu 0:a864d5764edb 42 restart_s.mode(PullNone);
gurapomu 0:a864d5764edb 43 restart_s.fall(&restart);
gurapomu 0:a864d5764edb 44 while(1){
gurapomu 0:a864d5764edb 45 for (i=0;i<sizeof(mm)/sizeof(float);i+=2) {
gurapomu 0:a864d5764edb 46 timer.attach(&tick,1.0/mm[i]/2.0);
gurapomu 0:a864d5764edb 47 wait(0.2*mm[i+1]);
gurapomu 0:a864d5764edb 48 timer.detach();
gurapomu 0:a864d5764edb 49 sp1.write(0);
gurapomu 0:a864d5764edb 50 }
gurapomu 0:a864d5764edb 51 }
gurapomu 0:a864d5764edb 52 }