这几天闲来无事用扳子跑了一下超声波测试,效果还不错,在mbed平台下,代码比较简单(代码来自于网络)1 v2 q' f- E8 W7 R5 M" d* k
4 z( Z: x5 P) |
- #include "mbed.h"7 ]4 Y4 u, o: x& ^
- % d/ f& `+ ~( l$ ^' |' f
- ' q+ G2 z* ~9 c. a
+ o& K2 m0 n* i; m- Ticker tick;0 z0 g G1 H) r3 W8 O
- Timer timer;
1 D" n! X5 i4 n4 M7 v$ q) O: [, S, g - RawSerial prtOut(USBTX, USBRX);//TX,RX
# x# d- {6 k" J* z/ s- N - DigitalOut plus27(D7);
' w/ a. \7 L3 t$ p - DigitalOut myled0(LED1);
7 i" K, I9 B2 { - InterruptIn plusIn28(D8);
& q) s9 [% \4 x6 L4 q2 z9 [ - # j5 \/ w3 @ O' V* F$ c! j# I
- //Define Avarible1 e( n, l& H) v# j4 z" m
- int32_t js;/ W5 E* T7 c2 K4 z) u: i
- float all,begin,end;4 \) c4 }" ?2 E: `
- 0 f/ e$ V3 v8 [. _1 [/ B
- void tipInt(void){plus27=1;wait(0.000008f);plus27=0;}
6 ~+ E3 O6 G7 n9 u2 `) m) M& B - void PlusIn28(void){9 M. T2 z8 B( e/ J* q" K1 u
- if(D8){5 a& U5 C! N# u5 @
- timer.start();/ r( l2 k' U E% D" {
- begin=timer.read_us();8 W6 ]8 a3 D a! M
- 6 f/ B- ]0 o, Q# C5 M8 h; x8 w
- }
# ~- p& `( N9 x0 E - while(plusIn28){}& }. S9 N6 ~3 p
- end=timer.read_us();/ `! t, X5 Q, J1 }6 X
- }, o; s$ d# C2 q3 B) L" m6 F
- int main(){
, E9 O6 H& P/ I+ L* R: O) Y; |7 A+ K - prtOut.baud(115200);
9 \& T0 N. f5 V8 |( |& e1 l- ~ - myled0.write(0);/ r5 u: u: Z7 ?3 k0 n3 g+ G; A
- tick.attach(&tipInt,0.1f);
/ x; z s: Q7 f# a - plusIn28.rise(&PlusIn28);
- y! |8 ?2 P% ^! @, W - while(true){
( n9 S% u1 h+ b7 p1 ^: f/ S - js++;
7 x4 X9 {1 O6 S0 b" { - myled0.write(1);
3 I$ b" N [- M - all=(end-begin)/57;
: i9 k0 c* t8 S0 } - prtOut.printf("Begin=%6.2f end=%6.2f all=%6.2f\r\n",begin,end,all);1 `* v' `: W9 G* F
- }
# L+ H3 V: \8 b! e) ] - }
复制代码 上个串口助手显示的图,精度还算可以的
6 T, Y+ z! V2 \6 K) {- z) A
) `3 O8 I( V0 R$ y# {) v
: `7 H$ \! p% w) C1 z5 a
6 X: G( s* ~, f7 t
|
平台是不错,最大的问题是,这个小板子的在这个平台只有20K可用的(尽管说是32k),所以写一点还可以,再加个模块恐怕就超了。
windows10商店里直接查这个名字就可以安装