想给小车、机械臂或云台加一个"手感"控制器,KY-023双轴摇杆是性价比最高的输入模块。它本质上就是两颗互相垂直的电位器加一个按键,拨动摇杆输出X、Y两路模拟电压,按下还能给出一个数字按键信号,Arduino读三个脚就能做直观的方向操控。这篇讲接线、读值和做死区控制。

KY-023模块引脚和工作原理
模块引出5个脚:VCC接电源(推荐5V)、GND接地、VRx是X轴模拟输出、VRy是Y轴模拟输出、SW是按键数字输出。内部两颗10K电位器和摇杆联动组成分压电路,静止时X/Y输出约2.5V(对应Arduino模拟值约512),拨到一边接近0V、另一边接近5V,所以模拟值范围是0到1023。

这是KY-023和Arduino的接线图,VRx/VRy分别接A0/A1两个模拟口,SW接一个数字口。按键平时是高电平,按下去拉低,需要在代码里开内部上拉(INPUT_PULLUP)才能正确检测。
Arduino读X、Y和按键的代码
接线是VRx接A0、VRy接A1、SW接D2、VCC接5V、GND接地。代码里用analogRead(A0)、analogRead(A1)读两个轴,digitalRead(2)读按键,串口就能看到摇杆位置。因为按键按下是低电平,digitalRead返回LOW就代表按下。
有个关键点是"死区"(deadzone):摇杆静止时读数不会正好是512,会有一点点抖动,没处理的话舵机或小车会小幅乱晃。代码里判断读数如果在512附近的一小段范围内(比如±15)就直接当0,超出部分再映射到实际控制的数值范围,这样手不碰摇杆设备就完全静止。
用摇杆控制舵机和小车
控制舵机:把X轴模拟值用map()从(0~1023)映射到舵机角度(0~180),一个摇杆控一个舵机的云台就出来了,拨一下就转头。控制小车:X控制方向、Y控制油门,Y往前推转速加大、往后拉倒车,左右拨转向,配合死区就是一台能"手感"操作的遥控小车。
摇杆模块吃IO少、手感直观,特别适合做遥控器、游戏手柄、机械爪示教器这类需要人来实时操控的设备,很推荐作为人机交互的入门传感器先玩起来。







SW是按下去拉低,要开INPUT_PULLUP才能正确检测
X控方向Y控油门,一台手感操作的小遥控车就这么出来了
VRx接A0、VRy接A1、SW接D2,三根线就够手感控制的玩法
配个舵机云台,拨一下就转头,很好玩的输入设备
死区一定要处理,不处理的话摇杆静止舵机也会小幅乱晃