Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@1:541aec45f686, 2015-08-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |