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