旋转编码开关

2020-05-23  本文已影响0人  Simpreative

可能一开始接触这个会很懵,但其实这个很容易理解,内部有两个开关,在正旋转和反旋转时候会按顺序切换,因此共有四种状态:00,01,10,11,这个图会容易理解一些:

接线示意图 旋转时,两个开关交替切换状态

因此只需读出此时两个开关状态,并和之前作比较,很容易能得出是在正旋转还是反旋转,很巧妙。

接下来是编程,网上看了好多讲这个编程的,有用什么异或运算的,还有写非常复杂的状态比较的,都比较难懂,我最终发现了一个非常巧妙的算法:

转自一个不错的Arduino库: https://github.com/PaulStoffregen/Encoder

本质上是,定义一个变量,把新读到的状态放到[3:2]位,第[1:0]位存储之前的状态,这样一共就有了16个状态,一下就可以做出判断了。

上一篇 下一篇

猜你喜欢

热点阅读