int i;
unsigned long time =0;
-----------------------------------------
while(digitalRead(pin)==LOW)
{} //如果该端口低电平,则循环
time = micros(); //跳出循环后(出现高电平),记录时间
while(digitalRead(pin)==HIGH)
{} //如果该端口高电平,则循环
if ((micros()-time)>2)
i++; //如果高电平持续时间大于2微秒(不是毫秒哦),则“i”加一。