回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(243)---JoyStick 双路机械臂摇杆扩展板 PS2 JoyStick Two-Way Shield for Uno r3 简单

头像 驴友花雕 2024.12.25 8 0

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十三:JoyStick 双路机械臂摇杆扩展板 PS2 JoyStick Two-Way Shield for Uno r3

 

00.jpg
01lper.jpg

 

 

 

2fach Joystickshield HU-M16  Arduino 摇杆是一款用于运动控制的扩展板,它连接到 Arduino 板,并允许通过 Arduino 板上的模拟引脚独立控制两个模拟摇杆。带有两个操纵杆的 Arduino UNO R3 扩展板。该模块与 Arduino IDE 可编程平台兼容。这使得使用来自操纵杆的数据来控制各种项目成为可能,例如机器人、遥控车辆和其他交互式设备。您可以通过以正确的方式对 Arduino 进行编程来根据您的需要自定义模拟棒的操作。

该扩展板带有 2 个 PS2 型 KY-023 操纵杆,可实现精确的运动控制。Arduino Shield Dual Joystick 具有用于伺服控制的数字支持连接器,以及用于通过 RF 与 NRF24L01 模块或蓝牙与 HC-06 模块进行无线连接的接口。

 

07.jpg

可插接蓝牙模块

 

08.jpg

扩展板不能直接使用,需要配合Arduino uno开发板。

 

15.jpg

JoyStick 双路机械臂摇杆扩展板电原理图

 

原理图.png

Arduino 双操纵杆扩展板是一款多功能且易于使用的工具,可让您独立控制两个轴上的运动。它是您的机器人项目、游戏和其他需要精确可靠运动控制的应用的绝佳选择。该板与 PS2 和 KY-023 摇杆型号兼容,是 Arduino 项目中运动控制的完整解决方案。

 

该模块与 PS2 控制器上的“模拟”摇杆非常相似。方向运动只是两个电位计,每个轴一个。该操纵杆还有一个选择按钮,当按下操纵杆时,该按钮将被激活。借助此模块,您可以测量 X 轴和 Y 轴上的位置坐标。

 

特性

用于 Arduino 的板载双操纵杆

2 个操纵杆,

2 个按钮(在操纵杆中),

1 个返回 LED,

4 个伺服输出,

1 个蓝牙贴合(首选 HC-05),

型号名称:HU-M16

- 2.54mm 引脚接口电缆

- 使用寿命长,性能稳定。

- 标准接口和电子构建块。

- 广泛用于 Arduino DIY 项目。


01.jpg11.jpg

DIY机械臂的应用方案

 

13.jpg
14.jpg

Shields HU-M16 双路机械臂摇杆扩展板的对应引脚

 

05.jpg

04.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百四十三:JoyStick 双路机械臂摇杆扩展板 PS2 JoyStick Two-Way Shield for Uno r3
 项目实验之一:测试摇杆与按钮

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百四十三:JoyStick 双路机械臂摇杆扩展板 PS2 JoyStick Two-Way Shield for Uno r3
  项目实验之一:测试所有接口上的 摇杆和按钮
*/

void setup(void)
{
  Serial.begin(9600); // 设置串口通信9600波特率
  for (int i = 0; i <= 13; i++) // 定义按钮位置
  {
    pinMode(i, INPUT_PULLUP); // 设置引脚为上拉输入模式
    digitalWrite(i, 1); // 设置引脚为高电平
  }
}

void loop(void)
{
   //*******************摇杆位置判断,从端口从0-13,;A1-A5(14-20)
   for (int i = 0; i <= 20; i++) // 从端口0到20
   {
     Serial.print(i);
     Serial.print("=");
     Serial.print(analogRead(i)); // 读取摇杆X轴的值,串口显示
     Serial.print(";");
   }

   //****************************Button位置判断,从端口0-13,;A1-A5(14-20)
   for (int i = 0; i <= 20; i++)  // 从端口0到20
   {
     if (digitalRead(i) == 0)  // 读取button状态,判断是否按下
     {
       Serial.print("button=");
       Serial.print(i);
       Serial.print(";");
     }
   }
   Serial.println(""); // 结束一行
   delay(100);   // 100ms刷新一次
}

代码解读

1、串口通信初始化:在setup函数中,使用Serial.begin(9600)初始化串口通信,以便通过串口监视器查看摇杆和按钮的状态。

2、引脚模式设置:使用pinMode(i, INPUT_PULLUP)函数将引脚设置为上拉输入模式,并通过digitalWrite(i, 1)将引脚初始化为高电平。

3、摇杆位置判断:在loop函数中,通过analogRead(i)函数读取从端口0到20的模拟输入值(摇杆X轴的值),并通过串口监视器输出。

4、按钮状态判断:通过digitalRead(i)函数读取从端口0到20的数字输入值(按钮状态),如果按钮按下(值为0),则通过串口监视器输出相应信息。

5、串口输出格式:在每次读取完摇杆和按钮状态后,通过Serial.print和Serial.println函数将结果输出到串口监视器,以便查看。

实验串口返回情况

 

08.jpg

实验场景图

 

09.jpg

评论

user-avatar
icon 他的勋章
    展开更多