在传感器配置的例程中,提供了相应的频率测试程序getFlicker.ino,经程序编译其结果如图1所示。
图1 频率测试程序
在程序下载后,其运行结果如图2所示。之所以能有这样的结果,原因无他因为夜色已晚,用于照明的日光灯被点亮,工频的50 Hz频率在起作用。
当把光源换为LED节能灯后,频率就不可辩了,见图3所示。
图2 频率测试结果
图3 频率测试
那能否识别其他的频率呢?
这首先要有一个可变频率的光源,其程序也可在例程中得到,如:led_50Hz.ino和led_60Hz.ino。但遗憾的是你必须有两块Arduino UNO开发板,否则你无法同时运行他们呀!
当在另一块开发板上下载50 Hz的例程后,检测正常。然后又下载了60 Hz的例程,其结果如图5所示。
图4 生成指定频率闪烁光
图5 频率测试结果
产生60Hz闪光的程序为:
void setup() {
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delayMicroseconds(4167);
digitalWrite(13, LOW);
delayMicroseconds(4167);
}
此时,又突发奇想是否可以调整一下闪光程序的延时值来改变频率来检测呢?
经测试,这种设想是失败的,似乎检测程序只能用用这2个频率的检测,对其他频率就不认账了!
不错啊,Arduino的代码是真的简洁,几句话就可以输出指定频率的脉冲波了。
引用: w494143467 发表于 2021-1-13 13:30 不错啊,Arduino的代码是真的简洁,几句话就可以输出指定频率的脉冲波了。
的确如此,要是程序都这样就太好了!
引用: jinglixixi 发表于 2021-1-13 16:41 的确如此,要是程序都这样就太好了!
但是出了问题就不太好找哈,也不好改。
引用: w494143467 发表于 2021-1-13 17:12 但是出了问题就不太好找哈,也不好改。
实际它是调用了更高一个层级函数,灵活性会减弱些。
引用: jinglixixi 发表于 2021-1-13 17:28 实际它是调用了更高一个层级函数,灵活性会减弱些。
就是类似于在APP端进行开发,不去管底层。对新手非常友好,但是一旦接触别的MCU就会比较慌了。
引用: w494143467 发表于 2021-1-13 18:04 就是类似于在APP端进行开发,不去管底层。对新手非常友好,但是一旦接触别的MCU就会比较慌了。
有理!!!