gurapomu
/
speaker_test
圧電スピーカーでテトリスの音楽を流します
main.cpp@0:a864d5764edb, 2017-08-28 (annotated)
- Committer:
- gurapomu
- Date:
- Mon Aug 28 13:59:46 2017 +0000
- Revision:
- 0:a864d5764edb
initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 | } |