雷竞技注册
项目

如何使用Arduino Joystick Shield v2.4

2015年6月17日经过蒂姆杨ood

在本教程中,我们将看到如何使用Arduino Joystick Shield。有不同的版本,但我们将使用V2.4,它具有一些有趣的功能和一些额外的按钮,可以以不同的方式在您的应用程序中使用。

在本教程中,我们将看到如何使用Arduino Joystick Shield。有不同的版本,但我们将使用V2.4,它具有一些有趣的功能和一些额外的按钮,可以以不同的方式在您的应用程序中使用。

Arduino Joystick Shield v2.4提供七个瞬间按钮开关(六个单独的按钮和操纵杆下的按钮)和具有两个电位计的拇指操纵杆。此屏蔽为您的Arduino提供旧的任天堂控制器上的功能。操纵杆可用于控制屏幕上的旋律或像素等输出。按钮可用于导航或游戏控制。

注意:标准Arduino Board将不支持带诺基亚5110液晶显示器的操纵杆盾。这是因为标准的Arduino 3.3 V电源只能提供50 mA,诺基亚5110背光需要更多电流。

实验1:阅读操纵杆值

操纵杆有两个电位仪,您可以在Arduino上连接到模拟引脚A0和A1。A0的值对应于X位置。A1的值对应于Y位置。要读取这些模拟值,请使用Analogread()函数。

硬件

1 x arduino uno
1 x arduino操纵杆盾v2.4

脚步:

  1. 将您的Joy Stick Shield连接到Arduino Board。
  2. 将您的Arduino Board连接到您的PC。
  3. LED将在您的操纵杆屏蔽上亮起,显示它正常工作。
  4. 在上传到董事会之前,写下草图并编译它;在上传前编译草图是很好的做法。
  5. 上传草图后,运行串行监视器以观察值。
  6. 将操纵杆移动不同的方向,并会注意到串行监视器上的值将改变。

您可以在8个方向上移动操纵杆:向上,立即,正确,右下,向下,向左,向左,向左,左侧。如果值在串行显示器上更改,则屏蔽正常工作。

如果屏蔽连接到5 V,则此代码将显示这样的内容。

代码

//定义模拟引脚的全局变量。// x值将从引脚0和y读取从引脚1 #define pin_analog_x 0 #define pin_analog_y 1 void setup(){//开始串行,因为我们将在串行监视器串行监视器中观察值.Begin(9600);void循环(){//打印X轴值序列号(“x:”);serial.println(analogread(pin_analog_x));//打印y轴值serial.print(“Y:”);serial.println(analogread(pin_analog_y));//一些延迟以清楚地观察串行监视器的值。延迟(500);}

Joystick_1.zip.

实验2:使用操纵杆控制运动

要控制沿X轴的运动,首先必须读取X轴电位器的帖子,并确定用户是否将控件按到右侧或左侧,或根本不按下。当未按向右或向左按下时,A0的值通常为523.为了考虑在不同屏蔽单元之间的读数中的一些变化,我们将设置30的容差。这意味着当我们读取值时在493和553之间,我们将假设用户没有按下操纵杆。读数小于493意味着用户正在将操纵杆按向左,并希望被控制的对象向左移动。读数大于553表示用户将操纵杆按向右,并希望控制对象移动右侧。

此代码将显示如下所示:

脚步

  1. 将您的Joy Stick Shield附加到Arduino Board。
  2. 将您的Arduino Board连接到您的PC。
  3. LED将打开,在您的操纵杆盾牌上显示它正常工作。
  4. 在上传到您的电路板之前,写下草图并编译它,这只是一个很好的做法,在上传之前编译草图。
  5. 上传草图后运行串行监视器以观察值。
  6. 当您移动操纵杆时,串行显示器会告诉您您移动操纵杆的方向。

下面的代码将显示用户按下操纵杆而不是显示模拟值的方向。

代码

//定义模拟引脚的全局变量。// x值将从引脚0和y读取从引脚1 #define pin_analog_x 0 #define pin_analog_y 1 void setup(){//开始串行,因为我们将在串行监视器串行监视器中观察值.Begin(9600);void循环(){//打印X轴值序列号(“x:”);serial.println(analogread(pin_analog_x));//打印y轴值serial.print(“Y:”);serial.println(analogread(pin_analog_y));//一些延迟以清楚地观察串行监视器的值。延迟(500);}

Joystick_2.zip.

实验3:阅读操纵杆按钮开关

按钮交换机简单地连接到Arduino数字I / O引脚,如下表所示:


当按下键A时,数字信号将被发送到D2等。我们将使用DigitalRead()函数来确定按钮的状态。

由于没有连接到操纵杆屏蔽上的这些按钮的电阻,因此您必须启用Arduino上的电阻。下面是要启用上拉电阻并读取数字值的代码。

每当用户按下按钮时,Arduino将在串行监视器上显示按钮值。

脚步

  1. 在Arduino Board附上你的操纵杆盾牌。
  2. 将您的Arduino Board连接到您的PC。
  3. LED将在您的操纵杆盾牌上亮起,表明它正常工作。
  4. 在上传到您的电路板之前,编写草图并编译它(在上传前编译草图是很好的做法)。
  5. 上传草图后,运行串行监视器以观察值。
  6. 按下操纵杆上的任何按钮,它将显示按下哪个按钮。

代码

#define button_up 2 #define button_right 3 #define button_down 4 #define button_left 5 #define button_e 6 #define button_f 7 #define delay 500 void setup(){serial.begin(9600);//启用拉动电阻首先写入引脚模式//然后使得PIN高pinmode(Button_up,输入);DigitalWrite(Button_up,High);Pinmode(Button_right,输入);DigitalWrite(Button_right,High);Pinmode(Button_down,输入);DigitalWrite(Button_down,High);Pinmode(Button_left,输入);DigitalWrite(Button_left,高);Pinmode(Button_e,输入); digitalWrite(BUTTON_E, HIGH); pinMode(BUTTON_F, INPUT); digitalWrite(BUTTON_F, HIGH); } void loop() { if(digitalRead(BUTTON_UP) == LOW) { Serial.println("Button A is pressed"); delay(DELAY); } else if(digitalRead(BUTTON_RIGHT) == LOW) { Serial.println("Button B is pressed"); delay(DELAY); } else if(digitalRead(BUTTON_DOWN) == LOW) { Serial.println("Button C is pressed"); delay(DELAY); } else if(digitalRead(BUTTON_LEFT) == LOW) { Serial.println("Button D is pressed"); delay(DELAY); } else if(digitalRead(BUTTON_E) == LOW) { Serial.println("Button E is pressed"); delay(DELAY); } else if(digitalRead(BUTTON_F) == LOW) { Serial.println("Button F is pressed"); delay(DELAY); } }

Joystick_3.zip.

为自己提供这个项目!得到bom。

0评论此频道条目中不提供注释。此频道条目中不提供注释。