我是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)
}
答案 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);
}