找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2287|回復(fù): 0
收起左側(cè)

MicroPython實(shí)例之TPYBoardv102自動(dòng)澆花系統(tǒng)

[復(fù)制鏈接]
ID:130183 發(fā)表于 2018-6-9 11:03 | 顯示全部樓層 |閱讀模式
    鞋碼匹配儀,利用超聲波測距的原理。通過使用超聲波遇到障礙返回的特性,計(jì)算超聲波放出與返回的時(shí)間計(jì)算來測定障礙與超聲波模塊的距離。

    鞋碼匹配儀的固有大小已知,在腳放入時(shí),大小會(huì)發(fā)生改變 使用已知距離對改變后的距離做差獲得腳的尺寸,再通過尺寸與距離的轉(zhuǎn)換得到正確的鞋碼(此處使用標(biāo)準(zhǔn)鞋碼)。

    1. 所需元器件

    超聲波模塊 1個(gè)
    TPYBoard v102板子 1塊
    四位數(shù)碼管 1個(gè)
    micro USB數(shù)據(jù)線 1條
    杜邦線 若干

    2. 超聲波模塊工作原理

    (1)采用IO口TRIG觸發(fā)測距,給最少10us的高電平信號(hào)。
    (2)模塊自動(dòng)發(fā)送 8 個(gè) 40khz 的方波,自動(dòng)檢測是否有信號(hào)返回。
    (3)有信號(hào)返回,通過 IO 口 ECHO 輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測試距離=(高電平時(shí)間*聲速(340M/S))/2。
    如下圖接線,VCC 供 5V電源, GND 為地線,TRIG 觸發(fā)控制信號(hào)輸入,ECHO 回響信號(hào)輸出等四個(gè)接口端。

1.png

    3. 控制四位數(shù)碼管顯示數(shù)字

    2.png
3.png
    (1)1、2、3、4是“位選”針腳,用于控制具體哪一位顯示。
    (2)a、b、c、d、e、f、g、dp(h)是“段選”針腳,用法和1位數(shù)碼管一致,用來顯示具體的數(shù)值。

4.png

    4. 接線圖

5.png
    5. 源代碼
  1. import pyb
  2. from pyb import Pin
  3. from pyb import Timer
  4. from machine import SPI,Pin
  5.   
  6. Trig = Pin('X2',Pin.OUT_PP)
  7. Echo = Pin('X1',Pin.IN)
  8. num=0
  9. flag=0
  10. run=1
  11. def start(t):
  12.          global flag
  13.          global num
  14.          if(flag==0):
  15.                    num=0
  16.          else:
  17.                    num=num+1
  18. def stop(t):
  19.          global run
  20.          if(run==0):
  21.                    run=1
  22. start1=Timer(1,freq=10000,callback=start)
  23. stop1=Timer(4,freq=2,callback=stop)
  24.   
  25. sizecc = [35,36,37,38,39,40,41,42,43,44,45,46,47]#280-47 -5
  26. while True:
  27.          if(run==1):
  28.                    Trig.value(1)
  29.                    pyb.udelay(100)
  30.                    Trig.value(0)
  31.                    while(Echo.value()==0):
  32.                                      Trig.value(1)
  33.                                      pyb.udelay(100)
  34.                                      Trig.value(0)
  35.                                      flag=0
  36.                    if(Echo.value()==1):
  37.                                      flag=1
  38.                                      while(Echo.value()==1):
  39.                                                flag=1
  40.                    if(num!=0):
  41.                                      #print('num:',num)
  42.                                      distance=num/1000*34000/2
  43.                                      print('Distance')
  44.                                      print(distance,'mm')
  45.                                      cc = (int)((distance-215)/5)
  46.                                      if cc<0:
  47.                                                cc=0
  48.                                      elif cc>12:
  49.                                                cc=12
  50.                                      print(sizecc[cc],'cc')
  51.                    flag=0
  52.                    run=0
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表