1.实验目的

1.学习在PC机系统中扩展简单I/O接口的方法。

2.进一步学习编制数据输出程序的设计方法。

3.学习超声波模块的测距原理。

4.学习LCD5110接线方法

5.学习TPYboard控制超声波模块测距。

2.所需元器件

超声波模块一个

TPYBoardv102一块

5110LCD显示屏一个

数据线一条

杜邦线若干

3.TPYBoardv102开发板

TPYBoardv102.png (181.13 KB, 下载次数: 11)

2017-7-6 16:25 上传

TPYBoardv102是一款典型的MicroPython开发板,搭载STM32F405芯片,支持DFU和SWD两种调试方式,现分为三个版本,简约版、以及分别兼容MicroPython官方板的PYBoardv1.0、PYBoardv1.1,大小64mm*54mm。功能上能完美的兼容PYBoardv1.0、v1.1的固件。是MicroPython开发和入门的不二选择!

4.超声波模块工作原理

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。

(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。

如下图接线,VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四个接口端。

2.png (161.74 KB, 下载次数: 10)

2017-7-6 16:25 上传

5.控制5110显示屏显示6x8字符

先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的)

TPYBoard的针脚与5110的针脚对应关系如下:

[AppleScript] 纯文本查看 复制代码TPYBoard LCD5110 memo

————————————————————————————

# any Pin => RST Reset pin (0=reset, 1=normal)

# any Pin => CE Chip Enable (0=listen for input, 1=ignore input)

# any Pin => DC Data/Command (0=commands, 1=data)

# MOSI => DIN data flow (Master out, Slave in)

# SCK => CLK SPI clock

# 3V3 or any Pin => VCC 3.3V logic voltage (0=off, 1=on)

# any Pin => LIGHT Light (0=on, 1=off)

# GND => GND

还是看不明白的话,直接上针脚编号吧

[AppleScript] 纯文本查看 复制代码TPYBoard LCD5110 memo

————————————————————————————

Y10 => RST Reset pin (0=reset, 1=normal)

Y11 => CE Chip Enable (0=listen for input, 1=ignore input)

Y9 => DC Data/Command (0=commands, 1=data)

X8 => DIN data flow (Master out, Slave in)

X6 => CLK SPI clock

VCC

Y12 => LIGHT Light (0=on, 1=off)

GND

3.png (7.7 KB, 下载次数: 10)

2017-7-6 16:26 上传

接线ok后,并且导入font.py文件和upcd8544.py文件,编写main.py将测到的距离显示在5110显示屏上,运行main.py就ok了。(font.py和upcd8544.py可以从官网上下载,最后会告诉下载地址)。

6.源代码

[Python] 纯文本查看 复制代码import pyb

from pyb import Pin

from pyb import Timer

import upcd8544

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)

while True:

if(run==1):

SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK

#DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)

#CLK =>SPI(1).SCK 'X6' SPI clock

RST = pyb.Pin('Y10')

CE = pyb.Pin('Y11')

DC = pyb.Pin('Y9')

LIGHT = pyb.Pin('Y12')

lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)

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/10000*34000/2

print('Distance')

print(distance,'cm')

lcd_5110.lcd_write_string('Distance',0,0)

lcd_5110.lcd_write_string(str(distance),6,1)

lcd_5110.lcd_write_string('cm',58,1)

lcd_5110.lcd_write_string('This is a test of Distance',0,2)

flag=0

run=0

(2)产品应用领域机器人避障、物体测距、液位检测、公共安防、停车场检测。

micropython做产品开发_Micropython开发实例之TPYBoard制作简易超声波测距仪相关推荐

  1. micropython做产品开发_关于MicroPython是否可以真正用在产品开发的讨论

    这几天,在MicroPython官方论坛上,发起了关于MicroPython是否可以真正用在产品开发上(Is MicroPython ready for real world deployment)的 ...

  2. 做产品与做项目的区别

    1  背景概述 在软件行业飞速发展的今天,我们可以将软件公司分大体分为两类,一类是使用框架进行开发的软件公司,另一类是套装软件产品的提供商,前者公司多数定位是项目类公司,后者则可以称为产品类公司.但做 ...

  3. Arduino适合做产品吗?

    关注+星标公众号,不错过精彩内容 来源 | Arduino中文社区 Arduino一直受到众多非"Arduino派"的争议,下面分享几个Arduino社区常见的问题(以下观点来自A ...

  4. 电压放大器在超声波测距仪中的应用实例研究

    超声波测距仪是一种用于测量距离的设备,其原理是利用超声波在空气中传播的速度和反射特性来计算距离.而电压放大器则是超声波测距仪中的一个重要组成部分,它可以将超声波信号放大到足够强的水平,以便于后续处理和 ...

  5. 实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下H5场景支付,使用手机浏览器打开就是H5方式,最常见的推广是短信内置链接,这种场景需要调用微信 ...

  6. MicroPython做嵌入式开发的优缺点

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 Python的火热程度相信大家都看到了,自然,MCU和嵌入式也紧跟"潮流",随之 ...

  7. 继续C#开发or转做产品

    本人今年大四,C#开发,在一家公司实习了一年后,面临一个选择,是继续C#开发还是转做产品?我C#开发能力目前还一般,但很有兴趣.也喜欢设计与创意,做过产品专员.求大婶们指导! 转载于:https:// ...

  8. 软件开发中,做产品与做项目有什么区别?

    对于个体程序员对于产品与项目的选择性问题 在IT行业,产品和项目一直是程序员们讨论的热话题.下面是我看到的一篇文章,我觉得写的比较不错.和大家来共享一下. 我始终不能避免的是程序员的最终归宿,人都有老 ...

  9. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...

最新文章

  1. 用go语言制作读取excel模板批量生成word工具
  2. Python 文件写操作
  3. 关于Android SDK工具Lint的误报分析
  4. 省常中模拟 Test4
  5. mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
  6. 对已经add的文件不在跟踪
  7. SQLAlchemy 嵌套事务的解决方案
  8. django2.0media用户上传文件配置及使用方法
  9. 【DCTWVRP】基于matlab遗传算法求解带容量+距离+时间窗的车辆路径规划问题【含Matlab源码 1211期】
  10. protues 快捷键和元件
  11. 阅读VDN:Value-Decomposition Networks For Cooperative Multi-Agent Learning Based On Team Reward
  12. 更换ip地址后虚拟机无法联网,连接失败
  13. 地形图测量中的等高线裁剪方法
  14. 短信在用户运营、召回流失用户中的重要作用
  15. Spring容器是什么?为什么要使用Spring容器?
  16. Android按键音
  17. 用Python实现微信翻译机器人
  18. Vue2:组件及组件通信
  19. opencv python 多张jpg图片转成avi视频
  20. Ubuntu 22.04 解决使用 .AppImage 文件方法

热门文章

  1. Linux awk命令详解
  2. Mybatis-plus分页查询records为空,total不为空的问题
  3. sqlmap图形化_sqlmap详解
  4. 餐饮行业新媒体营销玩法
  5. C# 第七章『I/O数据流』◆第5节:数据流—StreamWriter类、StreamReader类
  6. VBA主要函数使用方法
  7. 基于深度学习的手写数字识别算法Python实现
  8. 悯农--写给程序员的诗
  9. 手机经常性很烫?又是吃电怪兽?Android DrainerBot来袭
  10. 爱普生Epson EP-301 打印机驱动