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