PWM出力によって圧電スピーカーで容易に音を鳴らすことができるライブラリです。
Dependents: kiokuryoku_game escapeFromYou junirobo_sample001 ROBOX_Sample_IRcon ... more
beep_sound.h@6:adb925f93199, 2016-10-08 (annotated)
- Committer:
- RBH
- Date:
- Sat Oct 08 16:01:39 2016 +0000
- Revision:
- 6:adb925f93199
- Parent:
- 5:a64e653b0ce1
- Child:
- 7:5f1b0adb25ec
???playing?????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RBH | 0:c9832831c73f | 1 | #ifndef BEEP_SOUND_H |
RBH | 0:c9832831c73f | 2 | #define BEEP_SOUND_H |
RBH | 0:c9832831c73f | 3 | #include "mbed.h" |
RBH | 3:86238dba1529 | 4 | #include <queue> |
RBH | 3:86238dba1529 | 5 | struct gakuhu{ |
RBH | 3:86238dba1529 | 6 | int octave; |
RBH | 3:86238dba1529 | 7 | int note; |
RBH | 3:86238dba1529 | 8 | float time_s; |
RBH | 3:86238dba1529 | 9 | }; |
RBH | 4:237b642c2ffa | 10 | /* |
RBH | 4:237b642c2ffa | 11 | struct beep{ |
RBH | 4:237b642c2ffa | 12 | float userPeriod; |
RBH | 4:237b642c2ffa | 13 | float userWrite; |
RBH | 4:237b642c2ffa | 14 | float time_s; |
RBH | 4:237b642c2ffa | 15 | } |
RBH | 4:237b642c2ffa | 16 | */ |
RBH | 0:c9832831c73f | 17 | const int frequencyTable[] = {261, 277, 294, 311, 330, 349, |
RBH | 4:237b642c2ffa | 18 | 370, 392, 415, 440, 466, 494, 100}; |
RBH | 0:c9832831c73f | 19 | |
RBH | 2:259899b723ab | 20 | |
RBH | 0:c9832831c73f | 21 | class beep_sound |
RBH | 0:c9832831c73f | 22 | { |
RBH | 0:c9832831c73f | 23 | public: |
RBH | 0:c9832831c73f | 24 | beep_sound(PinName pwm); |
RBH | 0:c9832831c73f | 25 | ~beep_sound(); |
RBH | 0:c9832831c73f | 26 | void SetFrequency(int octave, int note, bool on_off); |
RBH | 0:c9832831c73f | 27 | void onpu(int octave, int note, float time_s); |
RBH | 0:c9832831c73f | 28 | void sinwave(float center,int speed,int width); |
RBH | 0:c9832831c73f | 29 | void setwave(float frequency,float duty,float wait); |
RBH | 0:c9832831c73f | 30 | void beep_right(int nTimes); |
RBH | 0:c9832831c73f | 31 | void beep_wrong(int nTimes); |
RBH | 0:c9832831c73f | 32 | void beep_1up(int nTimes); |
RBH | 0:c9832831c73f | 33 | void beep_konbini(int nTimes); |
RBH | 2:259899b723ab | 34 | void beep_readyGo(int nTimes); |
RBH | 0:c9832831c73f | 35 | void beep_encount(int nTimes); |
RBH | 3:86238dba1529 | 36 | // 以下並列で鳴らすための関数 |
RBH | 5:a64e653b0ce1 | 37 | void stop(); |
RBH | 3:86238dba1529 | 38 | void setGakuhu(int argOc, int argNo, float argTi); |
RBH | 3:86238dba1529 | 39 | void setKyuhu(float argTi); |
RBH | 3:86238dba1529 | 40 | void playGakuhu(); |
RBH | 3:86238dba1529 | 41 | void NoteOn(int octave, int note); |
RBH | 0:c9832831c73f | 42 | private: |
RBH | 0:c9832831c73f | 43 | PwmOut* m_pwm; |
RBH | 3:86238dba1529 | 44 | int frequency; |
RBH | 3:86238dba1529 | 45 | // 以下並列で鳴らすための宣言 |
RBH | 3:86238dba1529 | 46 | queue<gakuhu> otoQue; |
RBH | 4:237b642c2ffa | 47 | gakuhu bufG; |
RBH | 3:86238dba1529 | 48 | Timeout interruptStop; |
RBH | 6:adb925f93199 | 49 | // 再生中にキューにsetGakuhuをさせないためのフラグ |
RBH | 6:adb925f93199 | 50 | bool playing; // false:停止中 true:再生中 |
RBH | 0:c9832831c73f | 51 | }; |
RBH | 0:c9832831c73f | 52 | |
RBH | 0:c9832831c73f | 53 | #endif |