kitac_mbed_WS / Mbed 2 deprecated example_03_analogin_to_speaker Featured

Dependencies:   mbed

Committer:
hagi_hara
Date:
Sun Aug 16 12:29:00 2015 +0000
Revision:
1:541aec45f686
Parent:
0:ca1e30a0c763
Child:
2:63b2a561690e
??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hagi_hara 0:ca1e30a0c763 1 //example_03_analogin_to_speaker
hagi_hara 0:ca1e30a0c763 2 //センサから入力される値を使ってスピーカーを鳴らすサンプルコード
hagi_hara 0:ca1e30a0c763 3 #include "mbed.h"
hagi_hara 0:ca1e30a0c763 4
hagi_hara 0:ca1e30a0c763 5 #define SP_OFF 0.0
hagi_hara 0:ca1e30a0c763 6 #define SP_ON 0.5
hagi_hara 0:ca1e30a0c763 7
hagi_hara 0:ca1e30a0c763 8 //ピン設定
hagi_hara 0:ca1e30a0c763 9 PwmOut speaker(dp1); //dp1ピンを出力ピンに設定
hagi_hara 0:ca1e30a0c763 10 AnalogIn analogInModule(dp13); //dp13ピンをアナログ入力ピンに設定
hagi_hara 0:ca1e30a0c763 11
hagi_hara 0:ca1e30a0c763 12 //シリアル通信設定
hagi_hara 0:ca1e30a0c763 13 Serial pc(USBTX, USBRX);
hagi_hara 0:ca1e30a0c763 14
hagi_hara 0:ca1e30a0c763 15 //変数
hagi_hara 0:ca1e30a0c763 16 float analogInValue; //入力部品からの入力値を格納
hagi_hara 0:ca1e30a0c763 17 float tunedValue; //出力ように修正した入力値を格納
hagi_hara 0:ca1e30a0c763 18 float interval; //音出力の周期(ミリ秒)を格納
hagi_hara 0:ca1e30a0c763 19
hagi_hara 0:ca1e30a0c763 20 /*---------------------------------------------------------------------------*/
hagi_hara 0:ca1e30a0c763 21 //tuning関数
hagi_hara 0:ca1e30a0c763 22 //引数inputValueの値をもとに戻り値outputValueを計算する。
hagi_hara 0:ca1e30a0c763 23 //サンプルではanalogInValueの値を出力に使えるよう変更するため使用
hagi_hara 0:ca1e30a0c763 24 float tuning(float inputValue)
hagi_hara 0:ca1e30a0c763 25 {
hagi_hara 0:ca1e30a0c763 26 float outputValue;
hagi_hara 0:ca1e30a0c763 27 //欲しい入力値の範囲になるよう入力値を調整
hagi_hara 0:ca1e30a0c763 28 //inputVlaueは0.0~1.0の範囲
hagi_hara 0:ca1e30a0c763 29 //このサンプルでは300Hz〜540Hzの周波数になるように変換している。
hagi_hara 0:ca1e30a0c763 30 outputValue = ((inputValue * 240.0) + 300.0);
hagi_hara 0:ca1e30a0c763 31 return outputValue;
hagi_hara 0:ca1e30a0c763 32 }
hagi_hara 0:ca1e30a0c763 33 /*---------------------------------------------------------------------------*/
hagi_hara 0:ca1e30a0c763 34
hagi_hara 0:ca1e30a0c763 35 int main()
hagi_hara 0:ca1e30a0c763 36 {
hagi_hara 0:ca1e30a0c763 37 pc.printf("Hello World!\n\r");
hagi_hara 0:ca1e30a0c763 38 while(true) {
hagi_hara 0:ca1e30a0c763 39 //入力:センサーなどから入力値を読み取る
hagi_hara 0:ca1e30a0c763 40 analogInValue = analogInModule;
hagi_hara 0:ca1e30a0c763 41 pc.printf("analogInValue='%f' :", analogInValue);
hagi_hara 0:ca1e30a0c763 42 //analogValue小さい時はスピーカーをオフにする。
hagi_hara 1:541aec45f686 43 if(analogInValue < 0.05) {
hagi_hara 0:ca1e30a0c763 44 speaker.write(SP_OFF);
hagi_hara 0:ca1e30a0c763 45 pc.printf("OFF\n\r");
hagi_hara 0:ca1e30a0c763 46 } else {
hagi_hara 0:ca1e30a0c763 47 //処理:
hagi_hara 1:541aec45f686 48 tunedValue = tuning(analogInValue); //tuning関数で入力値を調整
hagi_hara 1:541aec45f686 49 interval = 1.0 / tunedValue; //周波数(Hz)を周期(秒)に変換
hagi_hara 0:ca1e30a0c763 50 //出力設定
hagi_hara 0:ca1e30a0c763 51 speaker.period(interval);
hagi_hara 0:ca1e30a0c763 52 speaker.write(SP_ON);
hagi_hara 0:ca1e30a0c763 53 //確認用:PCへ現在の各変数の値を送信
hagi_hara 0:ca1e30a0c763 54 pc.printf("ON tunedValue= '%f' interval= '%f' \n\r", tunedValue, interval);
hagi_hara 0:ca1e30a0c763 55 }
hagi_hara 0:ca1e30a0c763 56 wait(0.1);
hagi_hara 0:ca1e30a0c763 57 }
hagi_hara 0:ca1e30a0c763 58 }