我想用STM32L单片机来计算机械水表中的脉冲数。水表的输出来自两个簧片开关。
开关的操作说明如下:
如何读取这两个输入,并能够计算C中的脉冲数?注:1脉冲= 100升。
发布于 2016-11-02 16:27:08
我不知道你到底在问什么,因为不管你是投票还是使用边缘触发的中断,你所问的都是如此简单。主要问题是取消开关信号。对于脱扣器,您应该确定您的仪表的最大流量,这并不是您真正关心的直接,但它将允许您计算最大开关周期。使用最小开启或关闭时间的一些重要部分来执行您的退出。
发布于 2016-11-09 17:36:21
两个开关相距180度,一次只能做一个开关,这一点就是不需要拆下开关。
实际上,代码需要更复杂,但基本算法可以用以下方式表示:
while(1) {
while(switchA() == 0); // wait for switch A to be made
litres += 100; // clock up unit volume
display(litres); // tell the user
while(switchB() == 0); // wait for switch B to be made
}当一个簧片开关靠近磁铁的时候,有多少脉冲来自它并不重要--除了第一个脉冲之外,所有的脉冲都会被忽略,因为算法会看到另一个开关。
https://stackoverflow.com/questions/40380972
复制相似问题