查看“第八课--脉冲计时(看你按住开关有多久)/zh”的源代码
←
第八课--脉冲计时(看你按住开关有多久)/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language|Lesson_8--Pulse_timing_(check_how_long_you_hold_down_the_switch)}} {| style="width: 800px;" |- | ==目的== 第三课讲了按键的使用,其中注意了按键防抖的问题,解决方案是加一个延时,延时时间要根据具体情况而定,因为每个人按的按键时间不一样。这堂课将介绍如何获取按下一个按钮的时间,方案采用脉冲计时来计算。 今天还将简单介绍arduino的串口通讯,通过串口监视数据。 ==设备== *'''[[Microduino-Core/zh]]''' *'''[[Microduino-USBTTL/zh]]''' *其他硬件设备 **面包板跳线 一盒 **面包板 一块 **按键 一个 **USB数据连接线 一根 [[File:lesson8All.jpg|600px|center|thumb]] ==脉冲== 脉冲是一个物理量在短时间或者是持续时间内突变后迅速回到其初始状态的过程,在Microduino中的脉冲其实就是一个高低变化的数字信号,一般具有周期性。脉冲计时常常用在光电码盘、霍尔元件等测速上。 ==原理图== [[File:lesson8-schematic.jpg|600px|center|thumb]] 采用内部上拉,另外接104瓷片电容防抖。 ==程序== <source lang="cpp"> int pin = 2; //定义引脚为D2 float time1,time2; //定义变量为浮点数 void setup() { Serial.begin(115200); //串口波特率 pinMode(pin, INPUT_PULLUP); //设置引脚为内部上拉输入模式 } void loop() { //读取引脚上的低电平脉冲,最大脉冲时间间隔为60秒,并且把结果赋值给time1变量 time1= pulseIn(pin, LOW,60000000)/1000;//将读取的时间转换成ms Serial.print(time1); //通过串口输出time1变量 Serial.print("ms "); time2= pulseIn(pin, LOW,60000000)/1000.0;//将读取的时间转换成ms Serial.print(time2); //通过串口输出time1变量 Serial.println("ms");//通过串口打印出单位并换行准备输出下一个值 } </source> ==串口监视== ===打开串口监视器=== *点击串口监视监视器按钮,弹出串口监视界面。 [[File:lesson8-serialmonitor.jpg|600px|center|thumb]] [[File:lesson8-serialwindow.jpg|600px|center|thumb]] *注意: **在setup()函数里加上Serial.begin(xxxx)语句才能使用串口,xxxx为波特率; **用串口监视波特率要一致。波特率是对信号传输速率的一种度量。波特率没匹配好,很容易乱码。 *单位转换时需要注意数据类型,看似一样的计算,结果却不一样: [[File:lesson-calculate.jpg|600px|center|thumb]] ===PulseIn()函数=== *功能:用来读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位毫秒。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) *语法: **pulseIn(pin, value) **pulseIn(pin, value, timeout) *参数: **pin:你要进行脉冲计时的引脚号(int) **value:要读取的脉冲类型,HIGH或LOW(int) **timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long) ==结果== 为了防抖,在按键信号变化端口加了一个104瓷片,可以更好的看到效果。 [[File:lesson8-capacitance.jpg|600px|center|thumb]] [[File:lesson8Result.jpg|600px|center|thumb]] ==视频== |} http://v.youku.com/v_show/id_XNzEwMDA0Njgw.html
该页面使用的模板:
模板:Language
(
查看源代码
)
模板:Nmbox
(
查看源代码
)
返回至
第八课--脉冲计时(看你按住开关有多久)/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息