鞋碼匹配儀,利用超聲波測距的原理。通過使用超聲波遇到障礙返回的特性,計算超聲波放出與返回的時間計算來測定障礙與超聲波模塊的距離。
鞋碼匹配儀的固有大小已知,在腳放入時,大小會發生改變 使用已知距離對改變后的距離做差獲得腳的尺寸,再通過尺寸與距離的轉換得到正確的鞋碼(此處使用標準鞋碼)。
1. 所需元器件
超聲波模塊 1個
TPYBoard v102板子 1塊
四位數碼管 1個
micro USB數據線 1條
杜邦線 若干
2. 超聲波模塊工作原理
(1)采用IO口TRIG觸發測距,給最少10us的高電平信號。
(2)模塊自動發送 8 個 40khz 的方波,自動檢測是否有信號返回。
(3)有信號返回,通過 IO 口 ECHO 輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2。
如下圖接線,VCC 供 5V電源, GND 為地線,TRIG 觸發控制信號輸入,ECHO 回響信號輸出等四個接口端。
3. 控制四位數碼管顯示數字
(1)1、2、3、4是“位選”針腳,用于控制具體哪一位顯示。
(2)a、b、c、d、e、f、g、dp(h)是“段選”針腳,用法和1位數碼管一致,用來顯示具體的數值。
4. 接線圖
5. 源代碼
- import pyb
- from pyb import Pin
- from pyb import Timer
- from machine import SPI,Pin
-
- Trig = Pin('X2',Pin.OUT_PP)
- Echo = Pin('X1',Pin.IN)
- num=0
- flag=0
- run=1
- def start(t):
- global flag
- global num
- if(flag==0):
- num=0
- else:
- num=num+1
- def stop(t):
- global run
- if(run==0):
- run=1
- start1=Timer(1,freq=10000,callback=start)
- stop1=Timer(4,freq=2,callback=stop)
-
- sizecc = [35,36,37,38,39,40,41,42,43,44,45,46,47]#280-47 -5
- while True:
- if(run==1):
- Trig.value(1)
- pyb.udelay(100)
- Trig.value(0)
- while(Echo.value()==0):
- Trig.value(1)
- pyb.udelay(100)
- Trig.value(0)
- flag=0
- if(Echo.value()==1):
- flag=1
- while(Echo.value()==1):
- flag=1
- if(num!=0):
- #print('num:',num)
- distance=num/1000*34000/2
- print('Distance')
- print(distance,'mm')
- cc = (int)((distance-215)/5)
- if cc<0:
- cc=0
- elif cc>12:
- cc=12
- print(sizecc[cc],'cc')
- flag=0
- run=0
復制代碼
|