1.实验目的

  1. 学习在PC机系统中扩展简单I/O 接口的方法。
  2. 进一步学习编制数据输出程序的设计方法。
  3. 学习超声波模块的测距原理。
  4. 学习LCD5110接线方法
  5. 学习TPYboard控制超声波模块测距。

2.所需元器件

超声波模块一个
TPYBoard板子一块
5110LCD显示屏一个
数据线一条

详细教程请参考TPYBoard官网链接内容

3.超声波模块工作原理

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回。
(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。

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

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

先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的)
TPYBoard的针脚与5110的针脚对应关系如下:
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
还是看不明白的话,直接上针脚编号吧
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

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

5.源代码

import pyb
from pyb import Pin
from pyb import Timer
import upcd8544
from machine import SPI,PinTrig = Pin('X2',Pin.OUT_PP)
Echo = Pin('X1',Pin.IN)
num=0
flag=0
run=1
def start(t):global flagglobal numif(flag==0):num=0else:num=num+1
def stop(t):global runif(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 clockRST    = 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=0if(Echo.value()==1):flag=1while(Echo.value()==1):           flag=1if(num!=0):#print('num:',num)distance=num/10000*34000/2print('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=0run=0

Python超声波测距仪制作教程相关推荐

  1. 2个Python学习网站制作教程

    最近次条总结了一些2个Python学习网站制作教程的一些核心技术,这里整理了下一些目录,分别是两个网站,大部分技术都在前端,熟悉前端的话直接可以查看网页源码对应去了解学习,这些教程重在理解思路,思路通 ...

  2. python小软件制作教程_[Python]手把手教程:Python制作番茄钟

    这篇文章是根据Udacity的免费课程 编程基础:Python所做的笔记,适合零基础学习Python 我们先了解这个番茄钟的概念,就是每隔一段固定的时间就提醒你休息一下,可能是播放一段音乐, 弹出一个 ...

  3. python可视化报表制作教程_如何使用Python快速制作可视化报表

    数据可视化能力已经越来越成为各岗位的基础技能.领英的数据报告显示,数据可视化技能在2017年中国最热门技能中排名第一. 就数据分析而言,可视化探索几乎是你正式进行数据分析的第一步,通过SQL拿到数据之 ...

  4. python利用thinker制作多页面切换的桌面应用实例教程

    本篇文章主要讲解,python利用thinker制作多页面的桌面实例教程.可以在一个主界面中相互进行切换和设置相关的表单信息,布局等方法 代码片段的实际效果 视频演示: python使用thinker ...

  5. 超声波测距仪设计制作

    一.硬件设计 在现实的生活生产中,测距的应用比较多,比如汽车倒车时到障碍物的距离.水塔中顶部到液面的距离等很多方面都需要使用到测距,伴随着电子技术的迅速发展,超声波的出现为测距提供了良好的实现方法,利 ...

  6. 超声波测距仪编程_简易超声波测距仪的制作

    没有进行补偿, 能达到简单应用的基本要求. 3 电路结构 根据超声波测距基本原理, 可 以设计出超声波测距系统的 组成框图如图 3- 1 所示. 3.1 单片机系统及显示电路 单片机用 P1.0 端口 ...

  7. 如何使用Arduino Uno开发板制作超声波测距仪

    测距仪是用于查找从点到最近障碍物的距离的设备.该装置使用超声波技术测量距离.您可以将它视为一种无障碍的电子卷尺,测量范围为2cm至400cm,精度为1cm. Arduino超声波测距仪的典型应用包括停 ...

  8. Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用)

    Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用).内有制作雷达扫描GIF图的源代码包含. ''' matplotlib雷达扫描 ''' ...

  9. chatgpt赋能python:Python平面图制作教程

    Python平面图制作教程 Python是一种高级编程语言,也是数据科学和机器学习领域中使用最广泛的编程语言之一.在数据可视化中,Python语言具有优秀的表现力和灵活性,可以为用户展示各种数据可视化 ...

最新文章

  1. 论文被拒,项目被砍?斯坦福最惨在读博士教你如何直面失败
  2. (一)安装docker
  3. php多表数据排除,thinkphp中多表查询中防止数据重复的sql语句(必看)
  4. SilverLight学习笔记--建立Silverlight自定义控件(1)--外观设计
  5. (转载)大数据实战:站在JMP分析平台上的FIT足迹识别技术
  6. 【S操作】冰箱正常运行监控系统需求整理
  7. java 继承 冒号_java继承(extends)简单介绍
  8. Codeforces Round #243 (Div. 1)
  9. iOS - 视频开发
  10. 使用poi生成word文档(最全例子)
  11. 泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow
  12. 最受欢迎Java数据库访问框架大比拼,你独爱哪一款?
  13. python-random
  14. 创新不是突然而至——它是慢慢成长的
  15. 软件系统设计-13-质量属性
  16. 求100以内奇数的和
  17. 闲时整理(5)--圆形标签
  18. 英特尔处理器后缀字母的意思
  19. ORA-20001: Invalid or inconsistent input values
  20. 爬虫pyquery查找节点

热门文章

  1. 前端复盘: knockout + require + director 构建单页面程序
  2. 红米k20 android版本,红米k20pro入手哪个版本好 红米k20pro哪个更值得入手
  3. 社会工程学——无法忽略的另类安全
  4. vscode编译程序c语言,如何用VS code编译C语言代码?
  5. WIFI环境搭建与测试
  6. Apache Doris的动态分区dynamic_partition
  7. 工作流 activiti 自定义下一审批人和多人会签的简单实现
  8. iterable类型
  9. 惠普星14青春版12代酷睿值不值得买 好不好
  10. 举个栗子~Tableau 技巧(242):学做 条形图 和 桑基图 的组合图表