项目二 触摸压电开关 - 任务二_第1页
项目二 触摸压电开关 - 任务二_第2页
项目二 触摸压电开关 - 任务二_第3页
项目二 触摸压电开关 - 任务二_第4页
项目二 触摸压电开关 - 任务二_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《传感器应用》主讲教师:XXX

项目二触摸压电开关PART02※开关的选型与检测※实现轻触开关控制小夜灯02※压电传感器选型和检测※实现触摸压电开关小夜灯认识开关的作用和种类01掌握开关的检测方法03认识常见的开关02掌握开关的选用方法04学习目标objectiveTASKTWO任务二实现轻触开关控制小夜灯4任务要求储备知识任务实施任务目标231编写程序实现轻触开关控制小夜灯的点亮和关闭,当按钮按下并抬起时灯亮起,再次按下按钮时灯熄灭。任务要求4任务要求储备知识任务实施任务目标231TASKTWO任务二实现轻触开关控制小夜灯01.了解按键抖动原理02.了解编写按钮代码流程任务目标03.掌握查看绘制程序流程图方法04.掌握编写轻触开关的方法4任务要求储备知识任务实施任务目标231TASKTWO任务二实现轻触开关控制小夜灯01.按键的抖动02.认识程序流程图储备知识通常按键所用的都是机械弹性开关,由于机械触点的弹性作用,一个按键被按下时在理论上并非马上就能处于一个稳定电平的状态,他可能是一个高电平或者低电平的一个不稳定状态,如果这个时候去判断是否被按下往往会造成一个误判断的情况。图:抖动产生01.按键的抖动树莓派的运行速度很快,按键的抖动会导致在一次按下过程中,树莓派会识别到多次按下和抬起。处于抖动状态的时间长短一般由按钮的机械特性决定。一般为5~10ms左右的时间。一个按键按下有效时间为几百毫秒到数秒内。由于为了避免这种情况的出现,需要想办法来消除抖动的影响。所以去抖动一般的方法硬件消抖法软件消抖法使用电路设计来过滤按键输出的信号,将抖动的信号进行过滤把理想的信号输出给树莓派。这种做法需要添加硬件的负担并且添加不必要的成本故不建议使用该方法。通过程序进行过滤的方法,即在软件检测到有按钮被按下时,等一会也就是延时一会(延时的妙用),这里的一会指的就是抖动产生的最大时间如10ms。然后再一次判断是否真的被按下了,这时的状态必然处于比较完美的情况,否则则认为是抖动状态按下不有效。图:消除抖动流程图上拉树莓派的GPIO通过一个电阻连接到电源(高电平),当外界没有信号输入到GPIO时,GPIO被上拉电阻固定高电平。知识补充下拉树莓派的GPIO通过一个电阻连接到地(低电平),当外界没有信号输入到GPIO时GPIO被下拉电阻固定在低电平。如果树莓派的I/OGPIO没有外接器件没有为树莓派提供输入信号,那么树莓派的GPIO电压就变得不确定,这样树莓派就无法判断GPIO上的状态,所以在实际应用中需要使用上拉或下拉来将树莓派的GPIO上的电平固定在一个确定的的值中。1接近电源电压值的电平信号即认为是1树莓派的I/O通过GPIO上电平的高/低来判断输入信号时0还是1。0接近0V电压的电平信号认为是逻辑值0作为一个新手程序员或者一个优秀的程序员,都经常需要绘制流程图来展示系统的运行流程或者是来表述某些业务的业务逻辑。可以说画流程图已经是程序员必须掌握的一个技能,那么什么是流程图。02.认识程序流程图在计算机语言中必须逐行定义每一个动作,这样计算机才能执行动作,因为计算机只能一步步执行我们定义的动作,如制作可乐鸡翅:01将鸡翅洗净02将鸡翅过油03捞起放入姜、蒜04放入鸡翅、盐、生抽、汤、可乐中火慢煮20分钟计算机程序就如同这样的一个过程,需要有1,2,3,4执行的过程。计算机没有那么聪明,必须将所有需要执行的每一个小动作都明白地告诉它。在理解完什么是流程图后,就需要理解什么是程序流程图,既然叫程序流程图那必然有他的格式与要求,如图所示,将可乐鸡翅的做法用程序流程图的方式来绘制。图:可乐鸡翅程序流程图根据图可以发现,将可乐鸡翅的做法变成程序流程图只需要加入一个开始跟结束的方框,在中间加入制作的过程的内容即可,不过需要注意的是开始和结束的方框是一个四边有弧形的四边形,而执行的过程的方框是正的四边形即可,还有一个示菱形一般表示判断时使用,如图所示。图:程序流程图方框表示说明绘制“计算林先生支出情况”程序流程图在绘制计算林先生支出情况程序流程图时需要对程序编写的每个步骤有个清晰的流程,再进行绘制,绘制图如图所示。思考练习(1)程序流程图中用于判断的形状是_______。(2)树莓派上拉电阻起到_______作用。(3)___________是产生按钮抖动的原因。4任务要求储备知识任务实施任务目标231TASKTWO任务二实现轻触开关控制小夜灯03.按钮驱动程序任务实施04.编写按钮开关LED灯任务所需软件如下所示:环境准备任务所需硬件如下所示:VNC-ViewerTF卡读卡器TF卡树莓派4B电源线按钮模块03.按钮驱动程序3.1.编写按钮驱动程序步骤1:根据连线图连接线路(转接板模式)(1)设备对应接口如下表说明:树莓派T型转接板按钮模块GNDGNDGND5V5VV+GPIO13G27V-(2)如图所示,使用杜邦线将树莓派连接面包板后的GPIO与按键连接起来,由板载的5V为按键供电。 图:按钮模块连线图步骤2:编写简单按钮驱动代码(1)开启树莓派电源->打开“VNC-Viewer”软件连接树莓派->输入IP地址->用户名密码。(2)打开“MU”软件新建一个名称为“key.py”的文件。 (3)输入代码并执行,代码与执行效果如下所示,当按下按钮时程序消息栏中会弹出“keyPress”提示。#-*-coding:utf-8-*-//支持中文注释importRPi.GPIOasGPIO#导入RPi模块importtime#使用延时功能GPIO.setmode(GPIO.BCM)#设置BCM编码KEY=27

#BCM第27引脚GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)#设置输入,上拉while

True:

if(GPIO.input(KEY)==0):#判断是否按下time.sleep(0.1)#消抖

if(GPIO.input(KEY)==0):

print("keyPress")time.sleep(0.05)#等待由于使用的是转接板,所以需要将GPIO设置成BCM模式。GPIO.setmode(GPIO.BCM)设置GPIO的编号方式。GPIO.setup(channel,direction,pull)确定哪一个GPIO信号以及它们用来作为输入还是输出。参数channel为IO引脚编号参数direction为输入输出方向参数pull为IO口为上拉或者下拉IO为输入模式下可设置代码详解GPIO.input(channel)确定某一个GPIO信号的高电平和低电平。高电平返回值则为1,低电平返回值为0。GPIO.cleanup()释放使用的GPIO引脚,避免偶然损坏树莓派。#-*-coding:utf-8-*-用来告诉编辑器代码是utf-8格式的。假如没有文件头的声明,用编辑器UE打开,UE发现居然用gbk,会自动将其转换成utf-8.这时候将这个转换之后的utf-8的文件拿去给gbk的python解释器执行就会乱码。importtime导入时间模块,使用其中的sleep函数,用于按键消抖,使按键更灵敏。whileTrue循环语句,后面为循环条件表示循环次数(条件),当数字为True时为死循环,既无限次执行while中的内容。if(GPIO.input(KEY)==1)if为如果的意思,这行代码的意思是:如果输入口27号引脚的状态为1(高电平),那么执行print()函数,打印出“keypress”。04.编写按钮开关LED灯任务所需软件如下所示:环境准备任务所需硬件如下所示:VNC-ViewerTF卡读卡器TF卡树莓派4B电源线按钮模块三色灯模块4.1.编写轻触开关控制程序步骤1:根据连线图连接线路(转接板模式)(1)设备对应接口如下表说明:树莓派T型转接板按钮模块GNDGNDGND5V5VV+GPIO13G27V-树莓派T型转接板三色灯模块GNDGNDGNDGPIO14-08G23RGPIO13-07G24G(2)使用杜邦线将树莓派连接面包板后的GPIO与按键、三色灯模块连接起来,由板载的5V为按键供电。图:按钮模块、三色灯模块连线图步骤2:编写简单按钮驱动代码(1)开启树莓派电源->打开“VNC-Viewer”软件连接树莓派->输入IP地址->用户名密码。(2)打开“MU”软件新建一个名称为“key.py”的文件。 (3)输入代码并执行,代码与执行效果如下所示,当按下按钮时程序消息栏中会弹出“keyPress”提示。#-*-coding:utf-8-*-//支持中文注释importRPi.GPIOasGPIO#导入RPi模块importtime#使用延时功能KEY=27

#BCM第27引脚LED_R=21

#BCM第21引脚flag=FalseGPIO.setmode(GPIO.BCM)#设置BCM编码GPIO.setwarnings(False)GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP)#设置输入,上拉GPIO.setup(LED_R,GPIO.OUT,initial=GPIO.LOW)while

True:

if(GPIO.input(KEY)==0):#判断是否按下time.sleep(0.1)#消抖

if(GPIO.input(KEY)==0):time.sleep(0.2)#消抖

ifflag==False:flag=TrueGPIO.output(LED_R,1)

else:flag=FalseGPIO.output(LED_R,0)由于使用的是转接板,所以需要将GPIO设置成BCM模式。GPIO.setmode(GPIO.BCM)设置GPIO的编号方式GPIO.setup(channel,direction,pull)确定哪一个GPIO信号以及它们用来作为输入还是输出。参数channel为IO引脚编号参数direction为输入输出方向参数pull为IO口为上拉或者下拉IO为输入模式下可设置代码详解GPIO.input(channel)确定某一个GPIO信号的高电平和低电平。高电平返回值则为1,低电平返回值为0。GPIO.cleanup()释放使用的GPIO引脚,避免偶然损坏树莓派。#-*-coding:utf-8-*-用来告诉编辑器代码是utf-8格式的。假如没有文件头的声明,用编辑器UE打开,UE发现居

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论