test

Dependencies:   mbed TB6612FNG HMC6352

Committer:
ushiroji
Date:
Wed Oct 13 10:49:38 2021 +0000
Revision:
0:4c10d798d1bb
test

Who changed what in which revision?

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