Arduino教程入门系列-第二十一课-脉冲计时(看你按住开关有多久)

我们通过计算你按下一个按钮多长时间,来介绍一下怎样对脉冲计时。



什么是脉冲?

可以怎么理解,脉冲是一个物理量在短时间或者是持续时间内突变后迅速回到其初始状态的过程。在Arduino中所说的脉冲其实就是引脚上的高低电平变化。



脉冲计时常常用在光电码盘、霍尔元件等测速上。



首先我们看一下电路连接图,只需要一个按键与一个10K电阻做下拉。


2012-11-20 21-33-18.png

2012-11-20 21:40 上传
(124.74 KB)





然后把下面的代码复制进入IDE进行编译下载。



ARDUINO 代码复制打印

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变量
}<br />

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


2012-11-27 23-26-21.png

2012-11-27 23:27 上传
(33.03 KB)





我们看一下这个代码配合按钮后的效果



介绍一下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)
via - 极客工坊

标签: Arduino教程