KY-040旋转编码器怎么接线?Arduino读数判方向还带按键

开源复现员硬件DIY 2026-10-16 08:57:01 3阅读 举报

调音量、调转速、翻菜单,旋钮往往比按钮手感好。KY-040就是一块很便宜的小型旋转编码器,模块自带旋钮和内部的按键,接几根线到Arduino,转一下就能读出角度变化和方向。这篇文章把它怎么接线、怎么读数讲清楚。

KY-040旋转编码器模块引脚说明

引脚认识:旋钮的两个信号和中间的按键

模块上一排引出GND、VCC、SW、DT、CLK这几个脚。CLK和DT是旋转时输出的两个方波信号,位置相差90度,靠谁超前谁滞后就能判断正转还是反转;SW对应的是旋钮内部那个按键,按下去输出低电平。模块板载了上拉电阻,所以VCC接对后信号比较干净。

多数KY-040每转一圈有20个定位档位——手感里的那一下“咔哒”就是触发了一个信号周期。它是增量式编码器,只给“转了几格、往哪转”,并不直接告诉你绝对角度,所以想测角度要用代码在上电时归零自己计数。

KY-040旋转编码器与Arduino接线场景

接线:五根线三分钟搞定

接线很简单:GND接Arduino的GND,VCC接3.3V或5V(看具体模块丝印,多数5V兼容),CLK接一个数字脚(比如D2),DT接另一个数字脚(比如D3),SW接一个数字脚(比如D4)。把CLK接在Arduino支持中断的引脚上,剩下的就交给程序。

因为旋一下CLK和DT会高速翻转,用轮询读经常丢步,标准做法是把CLK接中断脚、在中断服务函数里读DT的高低来判方向,一个计数变量就能记录旋了多少格。

代码要诀和两个高频坑

核心逻辑就三句:CLK触发上升沿中断,中断里看DT是高是低,高就计数加一、低就减一,这样把“旋了几格和往哪旋”都拿到手;SW那路再用软件消抖读一次按键,顺便用它做归零、确认之类的事。

坑一:用轮询读旋转会丢步,转速一快读数就乱跳,务必用中断。坑二:不接上拉电阻信号会抖,代码里把CLK、DT、SW都设成INPUT_PULLUP最省事。记住它是增量式,上电必须自己归零再往下算。

版权声明:
作者:开源复现员
链接:https://www.aiddithome.com/p/670f92d94a63e.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
电烙铁爱好者
1楼 · 16小时前

按键做软件消抖很实用,不然按一下弹跳当两次,调音量乱跳

老张装机
2楼 · 16小时前

增量式的不能直接读绝对角度,上电必须自己归零,搞懂这个就不懵了

触底反弹的Tony
3楼 · 16小时前

模块板载上拉这细节重要,我之前没设上拉读数乱跳,设成INPUT_PULLUP就干净了

阿伟不emo
4楼 · 16小时前

中断读方向这个点救我,我之前用轮询一转快就丢步,换中断立马稳了