用户工具

站点工具


ocrobot:kit:arduino_star_kit:tutorial015

脉冲计时

这个例程展示如何计算按下一个按钮多长时间。

什么是脉冲? 可以怎么理解,脉冲是一个物理量在短时间或者是持续时间内突变后迅速回到其初始状态的过程。在OCROBOT中所说的脉冲其实就是引脚上的高低电平变化。 脉冲计时常常用在光电码盘、霍尔元件等测速上。

搭建电路

一个按键与一个10K电阻做上拉。

代码

int pin = 2;  //定义引脚为D2
unsigned long duration;  //定义duration变量为无符号长整数型变量
 void setup()
{
 Serial.begin(9600);  //串口波特率为9600
 pinMode(pin, INPUT); //设置引脚为输入模式
}
 void loop()
{
 duration = pulseIn(pin, HIGH,60000000); //读取引脚上的高电平脉冲,最大脉冲时间间隔为60秒,并且把结果赋值给duration变量
  Serial.println(duration); //通过串口输出duration变量
}

pulseIn()

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)

效果参考

打开串口监视器后,按下按钮,就会返回每次按下松开这段时间有多长。比如第一条是177109,第二条是126049。他们对应的单位是微秒,单位换位秒以后分别是0.177秒与0.126秒。

返回上一级

ocrobot/kit/arduino_star_kit/tutorial015.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1