Logibotの動作用の基本ライブラリです

Dependents:   Logibot_Temp Motor_Temp

Committer:
Jrobo
Date:
Fri Mar 03 20:36:06 2017 +0000
Revision:
0:a75357df7c88
publish

Who changed what in which revision?

UserRevisionLine numberNew 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