test
Dependencies: mbed TB6612FNG HMC6352
Diff: us015.cpp
- Revision:
- 0:4c10d798d1bb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/us015.cpp Wed Oct 13 10:49:38 2021 +0000 @@ -0,0 +1,75 @@ +//************************************************** +// +// us015.cpp +// 概要:超音波距離センサ US-015 +// +//************************************************** +#include "mbed.h" +#include "us015.h" + + + +//********************************* +// コンストラクタ +//********************************* +US015::US015(PinName trg, PinName ech) + :_trigerOut(trg),_interruptEcho(ech) +{ + // タイマーの開始 + timer.start(); + // トリガー信号の定期出力を行う + //tk.attach_us(this,&US015::TrigerOut,US015_PERIODIC_TRIGER); + // エコーバック信号の立ち上がり・立ち下がり処置の割り込み + _interruptEcho.fall(this,&US015::EchoFall); + _interruptEcho.rise(this,&US015::EchoRise); +} +// End of Constructor + + +//********************************* +// トリガー信号を出力する +//********************************* +void US015::TrigerOut() +{ + // トリガー出力として10[us]のパルス信号を出す + _trigerOut = US015_TRIGER_ON; + wait_us(US015_TRIGER_PALUSE_WIDTH); + _trigerOut = US015_TRIGER_OFF; +} +// End of TrigerOut + + +//********************************* +// 距離情報の取得 +//********************************* +float US015::GetDistance() +{ + return distance; +} +// End of GetDistance + + +//********************************* +// エコーの信号の立ち下がり +//********************************* +void US015::EchoFall() +{ + //エコー信号の立ち下がり時間を取得 + tmEnd=timer.read_us(); + + // 反射面距離の計算(往復の距離を音速と経過時間から求め、その半分を片道の距離とする) + // (エコー受信時間 - トリガー発信時間)* 音速0.340[mm/us]/2 + distance = ((tmEnd-tmBegin)*(0.340))/2; +} +// End of EchoFall + + +//********************************* +// エコーの信号の立ち上がり処理 +//********************************* +void US015::EchoRise() +{ + //エコー信号の立ち上がり時間を記録 + tmBegin=timer.read_us(); +} +// End of EchoRise