玩游戏的手柄里最核心的就是双轴摇杆,它其实就是两根电位器加一个按钮的组合,往哪个方向推,就输出对应的电压变化。把同一套东西搬到Arduino上(最典型的是KY-023摇杆模块),就能做出“推杆控制小车”的遥控器。这篇文章把接线讲清楚。
认识引脚:X、Y两轴加一个按钮
KY-023摇杆模块内部是两根10k的电位器,分别对应X轴和Y轴,还有一根直连的Z轴按钮摇杆一按就触发。模块引出五个脚:GND、+5V(也叫VCC)、VRX(X轴模拟输出)、VRY(Y轴模拟输出)、SW(下压按钮)。
它很方便的一点是模块自带上拉/输出结构,X和Y给的是模拟电压:摇杆居中时输出大约一半电源电压,推到两端输出接近0或接近满量程,方向一目了然。

接线表:X接A0、Y接A1、SW接数字口
KY-023接到Arduino Uno:+5V接5V、GND接GND、VRX接A0(模拟口)、VRY接A1(模拟口)、SW接D7(数字口)。SW要点是在程序里设成INPUT_PULLUP,摇杆按下时读到低电平。
接线表:+5V→5V、GND→GND、VRX→A0、VRY→A1、SW→D7。两根模拟线读坐标,一根数字线读按压,五根线就够。

怎么用:读两轴算速度,做成遥控器
程序里用analogRead(A0)和analogRead(A1)读X、Y,数值范围0到1023,居中大约是512附近。把摇杆幅度换算成速度,比如用map()把0到1023映射成对应的PWM占空比给电机驱动模块,或者映射成小车的左右轮速做差速转向,就能实现“推杆前进、回中停止”的遥控小车。
因为XY两轴天然对应二维舵量,它的想象空间很大:遥控有舵机云台的摄像头、控制机械臂末端在水平面移动、甚至当游戏手柄的模拟摇杆。SW还能当“发射/急停”键,很实用。
读数失控、按下没反应,几个排查点
一个轴没反应或读数恒定,先看那根VRX/VRY是不是接对模拟口了,两根调换错位是常态;数值只在0或1023两头跳、没有中间值,多半是analog引脚接线松动或供电不稳;SW按下无反应,确认用的是INPUT_PULLUP并且没和旁边的脚短路。摇杆返回时会有些抖动,采样后加个简单平均或阈值判断,控制就平滑。
KY-023把游戏手柄的体验搬到了Arduino上。两根模拟脚读XY、一个数字脚读按键,再接上当小车底盘和电机驱动,一台“推杆就走”的遥控机器人就呼之欲出了。







map成PWM给电机驱动,推杆就走的小车就出来了
回中采样有抖动,加个阈值判断控制就平滑了
VRX接A0、VRY接A1,两轴坐标读出来就能遥控
SW设成INPUT_PULLUP按下去读低电平,别忘这步
内部就俩电位器加个按钮,这原理一说就懂