KY-040旋转编码器怎么接线?Arduino旋钮调速菜单选择教程

2026-10-19 16:38:38 76阅读

想加一个能转、一格格有手感、还能当按钮按的旋钮,旋钮旋转编码器(常见型号KY-040)比传统电位器好用太多。它转动一格就输出一个脉冲,不靠电压模糊判断,所以能精确数出“转了多少格、转了哪个方向”,做音量旋钮、菜单选择、调速都很合适。这篇文章把接线讲清楚。

先认识它的引脚和“刻度”

KY-040旋转编码器带有两个关键输出脚:CLK(也叫A,是脉冲主输出)和DT(也叫B,用来判断方向),另外还有一个SW是中间的按压开关,那就是个小按钮。模块一般五个脚:CLK、DT、SW、+(电源)、GND。

它通常一圈有20个刻度(detent),每转一个刻度,CLK引脚的电平就变化一次。判断方向靠的是CLK和DT两个信号之间的相位:CLK变高时,如果DT和CLK不同步,就说明是正转还是反转,这个逻辑搞清楚就能把“转的方向”读出来。

接线表:CLK和DT用中断引脚更稳

KY-040接到Arduino Uno:+接5V(通常2到5V都能用,拿不准先接3.3V)、GND接GND、CLK接D2、DT接D3、SW接D4。SW是接内部上拉的,按下去读到低电平,这样就不用外接电阻。

接线表:+ →5V(或3.3V)、GND→GND、CLK→D2、DT→D3、SW→D4。D2和D3是Uno上能接外部中断的引脚,旋转编码器这种“稍纵即逝”的脉冲用中断来读最可靠,不会漏计数。

怎么读:比较CLK和DT,或者直接用库

读取思路有两种。手写版是做一个循环扫描,每次CLK引脚变化时就看一下当前DT的状态:如果DT和CLK不一样,就是正转一个刻度,反过来就是反转。想省事,直接用现成库(比如Encoder或RotaryEncoder)也行,它会替你处理消抖和方向判断。

拿到的“转动计数”就能做很多事:把它当调速旋钮,计数值直接换算成PWM输出控制电机或灯的亮度;当菜单导航,向上翻向下翻选项,按下SW确认,再配一块LCD1602 I2C屏,一个小型交互面板就成型了。

读数跳、方向反,几个排查点

转动时计数乱跳或漏格,多半是没接在中断引脚上、扫描频率不够,或者没做消抖,加个几十毫秒的防抖,或改用中断就能稳下来。方向反了不是接错,只是CLK和DT两根线互换一下、或在程序里把方向取反即可。按下没反应,检查SW是不是用的INPUT_PULLUP、有没有和GND接对。

KY-040是把“手拧”变成“精确数值”的一只好旋钮。三根信号线、一个中断思路、一个库,旋钮调速和菜单操作就能顺手落地,比电位器高级而且可重复。


作者:电机传感器师
链接:https://www.aiddithome.com/p/efffb89ec2207.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
5条评论
线比代码多
1楼 · 2026-10-19 16:38:40

配个1602屏做菜单导航,一套交互就成型了

刷着刷着入坑了
2楼 · 2026-10-19 16:38:39

旋钮调速比电位器高级,能精确数格还能当按键用

入门没多久的新手
3楼 · 2026-10-19 16:38:39

方向看反了就把CLK/DT互换,或者程序里取反,小事

调参到凌晨
4楼 · 2026-10-19 16:38:38

CLK和DT两个信号判断方向,这思路比自己瞎估准多了

拆开看看再说
5楼 · 2026-10-19 16:38:38

接D2/D3中断引脚读才不漏格,普通脚扫描容易丢刻度