如何使用pulseIn()函数测量arduino中的频率?

时间:2018-05-15 09:20:31

标签: arduino frequency

我是arduino的新手,我有一个小项目  我读到 pulseIn 函数返回脉冲的长度(以微秒为单位)和

  

频率(HZ)= 1 /时间(秒)

所以我希望下面的代码测量频率值是正确的,否则请通知我

int senserpin=8;
int sensordelay=1000; 
float duration;
float freq;

void setup{
pinMode(senserpin,INPUT);
serial.begin(9600);
}

void loop()
{
duration=pulsein(senserpin,high)
freq=1/(duration*1000000)// multiply duration *1000000 to convert from microseconds to seconds 
serail.print("frequency");
serail.print(freq);

delay(sensordelay)
}

2 个答案:

答案 0 :(得分:0)

频率是两个相同事件之间的时间(例如从一个上升沿到下一个上升沿)

pulseIn 仅测量该时段的一部分时间(例如信号为高电平的时间)

您要么知道HIGH阶段与LOW阶段具有相同的持续时间,要么您必须同时测量两者。

答案 1 :(得分:0)

你只测量了很长时间。您需要测量两者来计算频率和周期。我希望这对你有用。

int highTime;    //integer for storing high time
int lowTime;     //integer for storing low time
float period;    // integer for storing period
float freq;      //storing frequency

void setup()
{
    pinMode(8,INPUT);  //Setting pin as input
}

void loop()
{
    highTime=pulseIn(8,HIGH);  //read high time
    lowTime=pulseIn(8,LOW);    //read low time
    period = highTime+lowTime; // Period = Ton + Toff
    freq=1000000/period;       //getting frequency with totalTime is in Micro seconds
    delay(1000);
}