a
us015.cpp@2:d377daf497e2, 2017-11-05 (annotated)
- Committer:
- firlight1034
- Date:
- Sun Nov 05 01:55:08 2017 +0000
- Revision:
- 2:d377daf497e2
- Parent:
- 1:ac45a449d413
- Child:
- 3:e842315ec717
us015
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
firlight1034 | 0:fec7088c8dcb | 1 | //************************************************** |
firlight1034 | 0:fec7088c8dcb | 2 | // |
firlight1034 | 0:fec7088c8dcb | 3 | // us015.cpp |
firlight1034 | 1:ac45a449d413 | 4 | // 概要:超音波距離センサ US-015 |
firlight1034 | 0:fec7088c8dcb | 5 | // |
firlight1034 | 0:fec7088c8dcb | 6 | //************************************************** |
firlight1034 | 0:fec7088c8dcb | 7 | #include "mbed.h" |
firlight1034 | 0:fec7088c8dcb | 8 | #include "us015.h" |
firlight1034 | 0:fec7088c8dcb | 9 | |
firlight1034 | 0:fec7088c8dcb | 10 | |
firlight1034 | 0:fec7088c8dcb | 11 | |
firlight1034 | 0:fec7088c8dcb | 12 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 13 | // コンストラクタ |
firlight1034 | 0:fec7088c8dcb | 14 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 15 | US015::US015(PinName trg, PinName ech) |
firlight1034 | 0:fec7088c8dcb | 16 | :_trigerOut(trg),_interruptEcho(ech) |
firlight1034 | 0:fec7088c8dcb | 17 | { |
firlight1034 | 0:fec7088c8dcb | 18 | // タイマーの開始 |
firlight1034 | 0:fec7088c8dcb | 19 | timer.start(); |
firlight1034 | 0:fec7088c8dcb | 20 | // トリガー信号の定期出力を行う |
firlight1034 | 1:ac45a449d413 | 21 | //tk.attach_us(this,&US015::TrigerOut,US015_PERIODIC_TRIGER); |
firlight1034 | 0:fec7088c8dcb | 22 | // エコーバック信号の立ち上がり・立ち下がり処置の割り込み |
firlight1034 | 0:fec7088c8dcb | 23 | _interruptEcho.fall(this,&US015::EchoFall); |
firlight1034 | 0:fec7088c8dcb | 24 | _interruptEcho.rise(this,&US015::EchoRise); |
firlight1034 | 0:fec7088c8dcb | 25 | } |
firlight1034 | 0:fec7088c8dcb | 26 | // End of Constructor |
firlight1034 | 0:fec7088c8dcb | 27 | |
firlight1034 | 0:fec7088c8dcb | 28 | |
firlight1034 | 0:fec7088c8dcb | 29 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 30 | // トリガー信号を出力する |
firlight1034 | 0:fec7088c8dcb | 31 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 32 | void US015::TrigerOut() |
firlight1034 | 0:fec7088c8dcb | 33 | { |
firlight1034 | 0:fec7088c8dcb | 34 | // トリガー出力として10[us]のパルス信号を出す |
firlight1034 | 0:fec7088c8dcb | 35 | _trigerOut = US015_TRIGER_ON; |
firlight1034 | 0:fec7088c8dcb | 36 | wait_us(US015_TRIGER_PALUSE_WIDTH); |
firlight1034 | 0:fec7088c8dcb | 37 | _trigerOut = US015_TRIGER_OFF; |
firlight1034 | 0:fec7088c8dcb | 38 | } |
firlight1034 | 0:fec7088c8dcb | 39 | // End of TrigerOut |
firlight1034 | 0:fec7088c8dcb | 40 | |
firlight1034 | 0:fec7088c8dcb | 41 | |
firlight1034 | 0:fec7088c8dcb | 42 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 43 | // 距離情報の取得 |
firlight1034 | 0:fec7088c8dcb | 44 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 45 | float US015::GetDistance() |
firlight1034 | 0:fec7088c8dcb | 46 | { |
firlight1034 | 0:fec7088c8dcb | 47 | return distance; |
firlight1034 | 0:fec7088c8dcb | 48 | } |
firlight1034 | 0:fec7088c8dcb | 49 | // End of GetDistance |
firlight1034 | 0:fec7088c8dcb | 50 | |
firlight1034 | 0:fec7088c8dcb | 51 | |
firlight1034 | 0:fec7088c8dcb | 52 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 53 | // エコーの信号の立ち下がり |
firlight1034 | 0:fec7088c8dcb | 54 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 55 | void US015::EchoFall() |
firlight1034 | 0:fec7088c8dcb | 56 | { |
firlight1034 | 0:fec7088c8dcb | 57 | //エコー信号の立ち下がり時間を取得 |
firlight1034 | 0:fec7088c8dcb | 58 | tmEnd=timer.read_us(); |
firlight1034 | 0:fec7088c8dcb | 59 | |
firlight1034 | 0:fec7088c8dcb | 60 | // 反射面距離の計算(往復の距離を音速と経過時間から求め、その半分を片道の距離とする) |
firlight1034 | 0:fec7088c8dcb | 61 | // (エコー受信時間 - トリガー発信時間)* 音速0.340[mm/us]/2 |
firlight1034 | 0:fec7088c8dcb | 62 | distance = ((tmEnd-tmBegin)*(0.340))/2; |
firlight1034 | 0:fec7088c8dcb | 63 | } |
firlight1034 | 0:fec7088c8dcb | 64 | // End of EchoFall |
firlight1034 | 0:fec7088c8dcb | 65 | |
firlight1034 | 0:fec7088c8dcb | 66 | |
firlight1034 | 0:fec7088c8dcb | 67 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 68 | // エコーの信号の立ち上がり処理 |
firlight1034 | 0:fec7088c8dcb | 69 | //********************************* |
firlight1034 | 0:fec7088c8dcb | 70 | void US015::EchoRise() |
firlight1034 | 0:fec7088c8dcb | 71 | { |
firlight1034 | 0:fec7088c8dcb | 72 | //エコー信号の立ち上がり時間を記録 |
firlight1034 | 0:fec7088c8dcb | 73 | tmBegin=timer.read_us(); |
firlight1034 | 0:fec7088c8dcb | 74 | } |
firlight1034 | 0:fec7088c8dcb | 75 | // End of EchoRise |