Logibotの動作用の基本ライブラリです
Dependents: Logibot_Temp Motor_Temp
beep_sound.h@0:a75357df7c88, 2017-03-03 (annotated)
- Committer:
- Jrobo
- Date:
- Fri Mar 03 20:36:06 2017 +0000
- Revision:
- 0:a75357df7c88
publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jrobo | 0:a75357df7c88 | 1 | #ifndef BEEP_SOUND_H |
Jrobo | 0:a75357df7c88 | 2 | #define BEEP_SOUND_H |
Jrobo | 0:a75357df7c88 | 3 | #include "mbed.h" |
Jrobo | 0:a75357df7c88 | 4 | #include <queue> |
Jrobo | 0:a75357df7c88 | 5 | struct gakuhu{ |
Jrobo | 0:a75357df7c88 | 6 | int octave; |
Jrobo | 0:a75357df7c88 | 7 | int note; |
Jrobo | 0:a75357df7c88 | 8 | float time_s; // 長さが-1:通常ノート -2:終了フラグ |
Jrobo | 0:a75357df7c88 | 9 | }; |
Jrobo | 0:a75357df7c88 | 10 | /* |
Jrobo | 0:a75357df7c88 | 11 | struct beep{ |
Jrobo | 0:a75357df7c88 | 12 | float userPeriod; |
Jrobo | 0:a75357df7c88 | 13 | float userWrite; |
Jrobo | 0:a75357df7c88 | 14 | float time_s; |
Jrobo | 0:a75357df7c88 | 15 | } |
Jrobo | 0:a75357df7c88 | 16 | */ |
Jrobo | 0:a75357df7c88 | 17 | const int frequencyTable[] = {261, 277, 294, 311, 330, 349, |
Jrobo | 0:a75357df7c88 | 18 | 370, 392, 415, 440, 466, 494, 100}; |
Jrobo | 0:a75357df7c88 | 19 | |
Jrobo | 0:a75357df7c88 | 20 | |
Jrobo | 0:a75357df7c88 | 21 | class beep_sound |
Jrobo | 0:a75357df7c88 | 22 | { |
Jrobo | 0:a75357df7c88 | 23 | public: |
Jrobo | 0:a75357df7c88 | 24 | beep_sound(PinName pwm); |
Jrobo | 0:a75357df7c88 | 25 | ~beep_sound(); |
Jrobo | 0:a75357df7c88 | 26 | void SetFrequency(int octave, int note, bool on_off); |
Jrobo | 0:a75357df7c88 | 27 | void onpu(int octave, int note, float time_s); |
Jrobo | 0:a75357df7c88 | 28 | void onpu_stop(int octave, int note, float time_s); |
Jrobo | 0:a75357df7c88 | 29 | void sinwave(float center,int speed,int width); |
Jrobo | 0:a75357df7c88 | 30 | void setwave(float frequency,float duty,float wait); |
Jrobo | 0:a75357df7c88 | 31 | // 以下サンプル音集 |
Jrobo | 0:a75357df7c88 | 32 | void boot(); |
Jrobo | 0:a75357df7c88 | 33 | void beep_right(int nTimes); |
Jrobo | 0:a75357df7c88 | 34 | void beep_wrong(int nTimes); |
Jrobo | 0:a75357df7c88 | 35 | void beep_notif1(int nTimes); |
Jrobo | 0:a75357df7c88 | 36 | void beep_notif2(int nTimes); |
Jrobo | 0:a75357df7c88 | 37 | void beep_readyGo(int nTimes); |
Jrobo | 0:a75357df7c88 | 38 | // 以下並列で鳴らすための関数 |
Jrobo | 0:a75357df7c88 | 39 | void stop(); |
Jrobo | 0:a75357df7c88 | 40 | void setGakuhu(int argOc, int argNo, float argTi); |
Jrobo | 0:a75357df7c88 | 41 | void setKyuhu(float argTi); |
Jrobo | 0:a75357df7c88 | 42 | void playGakuhu(); |
Jrobo | 0:a75357df7c88 | 43 | void playContinue(); |
Jrobo | 0:a75357df7c88 | 44 | void NoteOn(int octave, int note); |
Jrobo | 0:a75357df7c88 | 45 | private: |
Jrobo | 0:a75357df7c88 | 46 | PwmOut* m_pwm; |
Jrobo | 0:a75357df7c88 | 47 | int frequency; |
Jrobo | 0:a75357df7c88 | 48 | // 以下並列で鳴らすための宣言 |
Jrobo | 0:a75357df7c88 | 49 | queue<gakuhu> otoQue; |
Jrobo | 0:a75357df7c88 | 50 | gakuhu bufG; |
Jrobo | 0:a75357df7c88 | 51 | Timeout interruptStop; |
Jrobo | 0:a75357df7c88 | 52 | // 再生中にキューにsetGakuhuをさせないためのフラグ |
Jrobo | 0:a75357df7c88 | 53 | bool playing; // false:停止中 true:再生中 |
Jrobo | 0:a75357df7c88 | 54 | bool teishi; // true:再生を強制停止. ノート再生時に必ずチェック. |
Jrobo | 0:a75357df7c88 | 55 | }; |
Jrobo | 0:a75357df7c88 | 56 | |
Jrobo | 0:a75357df7c88 | 57 | #endif |