鱼C论坛

 找回密码
 立即注册
查看: 2962|回复: 1

MicroPython实例之PYBoard v114鞋码匹配仪

[复制链接]
发表于 2018-6-9 15:18:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    鞋码匹配仪,利用超声波测距的原理。通过使用超声波遇到障碍返回的特性,计算超声波放出与返回的时间计算来测定障碍与超声波模块的距离。

    鞋码匹配仪的固有大小已知,在脚放入时,大小会发生改变 使用已知距离对改变后的距离做差获得脚的尺寸,再通过尺寸与距离的转换得到正确的鞋码(此处使用标准鞋码)。

    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 回响信号输出等四个接口端。

1.png

   
    3. 控制四位数码管显示数字

   
2.png

3.png


    (1)1、2、3、4是“位选”针脚,用于控制具体哪一位显示。
    (2)a、b、c、d、e、f、g、dp(h)是“段选”针脚,用法和1位数码管一致,用来显示具体的数值。

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
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-9 20:22:51 | 显示全部楼层
你应该去Arduino板块的,那里很适合你。小白问问楼主你使用的绘制接线图软件叫什么名字呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 19:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表