a

Committer:
firlight1034
Date:
Sat Oct 14 09:24:12 2017 +0000
Revision:
1:ac45a449d413
Parent:
0:fec7088c8dcb
Child:
2:d377daf497e2
?????U015

Who changed what in which revision?

UserRevisionLine numberNew 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
firlight1034 1:ac45a449d413 76