这几天闲来无事用扳子跑了一下超声波测试,效果还不错,在mbed平台下,代码比较简单(代码来自于网络). h( A$ O6 ?. S( s
! _& b5 J7 |- c9 k/ n2 T) e- #include "mbed.h"/ f6 Q/ _) @. N( {$ @# m( Q5 H
5 e2 r6 {. q) C" N k" r h
1 d$ r5 D/ o9 Q- 9 I$ O5 }$ r L! g) P* I
- Ticker tick;
% Y( ?- M1 J: D* c' ` - Timer timer;
0 |( R. N4 D( g2 e E V - RawSerial prtOut(USBTX, USBRX);//TX,RX# I0 X4 F8 q5 S& T) C2 g3 Q9 P
- DigitalOut plus27(D7);; y9 }' s" L7 \2 x; w; ?
- DigitalOut myled0(LED1);
8 Z/ V5 g$ V" ^$ ^, Z - InterruptIn plusIn28(D8);9 k' X5 [! m# l W1 m9 l0 c$ k
- * D: L9 J. |( J# c$ `
- //Define Avarible& `6 ^. t1 |" J9 a
- int32_t js;% G4 Y4 q7 Z' G- n$ B0 g
- float all,begin,end;
! z, o, g+ @' {) N% [7 ^# Q$ B; \ - , r v8 C# `. L2 M
- void tipInt(void){plus27=1;wait(0.000008f);plus27=0;}: y: T& I7 z# r9 X( C. e
- void PlusIn28(void){ ]( t! M9 Z. M0 g: u$ ^: {
- if(D8){4 R" A7 k# u" }
- timer.start();
z5 i5 X" r0 `# Z2 S8 } - begin=timer.read_us();& Y" h; g' ?8 {# f: k' I8 l
- 3 L% ]3 }: e# o! t% |, a/ `* x
- } Q' L/ s( |6 G/ A
- while(plusIn28){}* ^+ G& m# D$ g1 ^! h% q8 x5 |
- end=timer.read_us();
- A/ p9 [, k' f8 ], x; X - }
/ E9 [1 ]( z; U* |; } - int main(){+ E* f( ~/ u. I& y
- prtOut.baud(115200);0 m: W: a2 P! c4 z( }
- myled0.write(0);
9 c& ]; F6 Q) Z B! d - tick.attach(&tipInt,0.1f);
i' w0 k* c0 G5 l0 z. Y+ } - plusIn28.rise(&PlusIn28);
: r5 ?3 R5 t4 H. w- _ U/ s - while(true){
" _5 H' F8 c D$ _ - js++;( N0 T$ a; t$ N6 H$ C
- myled0.write(1);. }3 \5 m4 B4 T- k3 ^
- all=(end-begin)/57;4 G5 z( ]1 e1 k2 J% ^
- prtOut.printf("Begin=%6.2f end=%6.2f all=%6.2f\r\n",begin,end,all);
7 d4 g" k5 n% N- ]+ a9 n - }
& M: ~( o3 D& `- ?2 g3 o - }
复制代码 上个串口助手显示的图,精度还算可以的
. M2 L: y& B5 e! Y
5 E% l* B# e( q8 `+ U" i6 F! Z
6 B- G" f D9 C* s( n
- |, W- p* t6 B" n |
平台是不错,最大的问题是,这个小板子的在这个平台只有20K可用的(尽管说是32k),所以写一点还可以,再加个模块恐怕就超了。
windows10商店里直接查这个名字就可以安装