可能一开始接触这个会很懵,但其实这个很容易理解,内部有两个开关,在正旋转和反旋转时候会按顺序切换,因此共有四种状态:00,01,10,11,这个图会容易理解一些:
接线示意图 旋转时,两个开关交替切换状态因此只需读出此时两个开关状态,并和之前作比较,很容易能得出是在正旋转还是反旋转,很巧妙。
接下来是编程,网上看了好多讲这个编程的,有用什么异或运算的,还有写非常复杂的状态比较的,都比较难懂,我最终发现了一个非常巧妙的算法:
转自一个不错的Arduino库: https://github.com/PaulStoffregen/Encoder
本质上是,定义一个变量,把新读到的状态放到[3:2]位,第[1:0]位存储之前的状态,这样一共就有了16个状态,一下就可以做出判断了。
网友评论