a

Committer:
miyajitakenari
Date:
Sat Nov 06 03:07:24 2021 +0000
Revision:
3:e842315ec717
Parent:
2:d377daf497e2
a

Who changed what in which revision?

UserRevisionLine numberNew 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