找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2377|回復: 0
打印 上一主題 下一主題
收起左側(cè)

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

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:130183 發(fā)表于 2018-6-9 11:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    鞋碼匹配儀,利用超聲波測距的原理。通過使用超聲波遇到障礙返回的特性,計算超聲波放出與返回的時間計算來測定障礙與超聲波模塊的距離。

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

    1. 所需元器件

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

    2. 超聲波模塊工作原理

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



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

   

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



    4. 接線圖

    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
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表