JoyStick Shield 实物图

利用时按下图办法,只要对齐Pin脚,向下插入即可,省去了连线的麻烦。

JoyStick与Arduino UNO 连接示意图

JoyStick Shield v1.A是早几年就生产的,干系图纸资料有点难找,于是笔者根据实物整理出下面的这份电路事理图。
这样就方便查找各个按键或插座利用的对应端口了。

若安在Arduino上运用JoyStick游戏手柄

JoyStick Shield v1.A Schematic

顺便画了个PCB,觉得比手里这块板子的走线看着要舒畅很多,各位如果有须要这款板子事理图和PCB文件的朋友,可以关注并留言。

JoyStick Shield v1.A PCB

JoyStick Shield 紧张功能及接口X/Y轴摇杆及按键K四个大按钮A、B、C、D两个小按钮E、F串口模块接口I2C接口nRF24L01无线模块接口Nokia5110 LCD接口3.3V/5V电源切换

X/Y轴摇杆及按键K

操纵杆的X轴电位器连接到A0。
Y轴电位器连接至A1。
微掌握器可在A0/A1仿照端口读取到0~1023范围内的值(对付范例的10位ADC输入)。
当控件静止时,X轴和Y轴控件的读数应为512(中点电压)。
随着操纵杆的移动,可读取到更高或更低的数值,这取决于控件如何运动。
操纵杆还具有一个按钮“K”,向下按压操纵杆即可触发该按钮,此按钮连接到D8。

按钮

板上共有6个标有A-F的按钮(不包括操纵杆上的按钮)。
4个大按钮常日用于上/下/左/右或类似功能。
这两个较小的按钮常日用于“选择”或“启动”等不太常用的功能,因其形状要小一些不随意马虎被意外按下。
所有按钮都有上拉电阻,按下时拉至接地。

Key A – Connects to D2Key B – Connects to D3Key C – Connects to D4Key D – Connects to D5Key E – Connects to D6Key F – Connects to D7

蓝牙连接器H2

RX/TX线与3.3V和接地一起引出至单独的4针母头。
这可用于连接4针3.3V蓝牙设备或TTL串行设备。
引脚定义如下:

Rx – Connects to D1Tx – Connects to D0GND – Ground.VCC – 3.3V

I2C连接器P2

I2C总线的SDA和SCL,5V、GND一起引出到单独的4针公头。
SDA和SCL对应Arduino的A4/A5位置。
这使得I2C设备易于连接。
引脚定义如下:

SCL – Connects to A5SDA – Connects to A4GND – Ground.VCC – 5V

nRF24L01连接器H1

该接口用于连接nRF24L01射频收发器模块。
引脚定义如下:

GND – Ground.VCC – 3.3VCE – Connects to D9CSN – Connects to D10SCK – Connects to D13MOSI – Connects to D11MISO – Connects to D12IRQ – No Connection

诺基亚5110液晶屏接口H3

此母头连接器设计用于安装最初为诺基亚手机设计的诺基亚5110 LCD,并供应48×84像素矩阵。
该接口与nRF24L01占用相同的D9-D13管脚,因此不能同时利用这两个管脚。
屏幕背光,高电平时点亮,低电平时熄灭

VCC – 3.3V/5VGND – Ground.BL – Connects to D13DIN – Connects to D12DC – Connects to D11CLK – Connects to D10CE – Connects to D9Vcc – 3.3V RST – Connects to D8

接口连接器P1

此双列黄色公头连接器P1供应了另一个接口,可接入所有按钮、操纵手柄电位器、VCC和GND。
这种扩展接口的设计使得添加游戏掌握或手动机器人掌握类型的功能到一个项目中更加方便。

接口连接器P1

下面这个程序可以用来检讨按钮和操纵杆的状态,并将结果打印到串行监视器窗口。

/This program explains how to use Joystick with ArduinoVersion 1.0Author Giacomo Bellazzi/ int A = 2;int B = 3;int C = 4;int D = 5;int x = A0;int y = A1;char key[] = {'A','B','C','D'}; void setup() { Serial.begin(9600);} void loop() { keyPressed(A); keyPressed(B); keyPressed(C); keyPressed(D); joystick(); delay(100);} / This function shows whether a pin has been shown/void keyPressed(int index){ if(digitalRead(index)==0){ Serial.print(key[index-2]); Serial.print(\"大众 has been pressed\"大众); Serial.print(\公众\n\"大众); }} / This function shows the joystick moving x and y/ void joystick(){ Serial.print(\公众x: \"大众); Serial.print(analogRead(x)); Serial.print(\"大众 y: \公众); Serial.print(analogRead(y)); Serial.print(\公众\n\"大众);}