20141120 【 Arduino - 电平时间测量(pulseIn) 】 用pulseIn函数测量按键时电平高低时间

利用 Arduino 自带函数 pulseIn() 测量按键按下时,

维持高电平的时间。(模拟引脚只有0和1两种值,抖动怎么办?我也不知道它怎么处理抖动的。。。)



线路图可以参考下图。



测了一下,最短维持时间小于 40ms(我的手速)。



也就是以后监控按键时,两次检测时间必须小于 40ms。

【10ms应该没问题,但是间隔太长。。】

【1ms的话,又不知道抖动时间有没有可能大于它,以后再测吧!!!】




介绍一下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)







#define ul	unsigned long
const int pin = 7;
const ul MAXHT = 3*1000*1000;
ul ht;

void setup()
{
	pinMode(pin, INPUT);
	Serial.begin( 9600 );
}

void loop()
{
	Serial.print("\n\n START:\t");
	ul ht = pulseIn(pin, HIGH, MAXHT);
	show_smu( ht );
}

void show_smu(ul t){
	int us = t%1000;	t /= 1000;
	int ms = t%1000;	t /= 1000;
	Serial.print( t );	Serial.print("s ");
	Serial.print( ms );	Serial.print("ms ");
	Serial.print( us );	Serial.print("us\n");
}


  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值