如何使用Arduino手柄屏蔽v2.4
2015年6月17日通过蒂姆血性小子在本教程中,我们将看到如何使用Arduino Joystick Shield。有不同的版本,但我们将使用V2.4,它具有一些有趣的功能和一些额外的按钮,可以以不同的方式在您的应用程序中使用。
在本教程中,我们将看到如何使用Arduino Joystick Shield。有不同的版本,但我们将使用V2.4,它具有一些有趣的功能和一些额外的按钮,可以以不同的方式在您的应用程序中使用。
Arduino操纵杆屏蔽v2.4提供了7个瞬间按钮开关(6个单独的按钮和操纵杆下的一个按钮)和一个带有两个电位器的拇指操纵杆。这个盾牌让你的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
步骤:
- 在Arduino板上安装你的joy stick shield。
- 把你的arduino板连接到你的电脑上。
- 你的操纵杆护罩上的LED将会发光,表明它工作正常。
- 在上传到董事会之前,写下草图并编译它;在上传前编译草图是很好的做法。
- 草图上传后,运行串行监视器来观察值。
- 向不同方向移动操纵杆,你会注意到串行监视器上的值会发生变化。
您可以在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);}
实验2:使用操纵杆控制运动
要控制沿X轴的运动,首先必须读取X轴电位器的帖子,并确定用户是否将控件按到右侧或左侧,或根本不按下。当未按向右或向左按下时,A0的值通常为523.为了考虑在不同屏蔽单元之间的读数中的一些变化,我们将设置30的容差。这意味着当我们读取值时在493和553之间,我们将假设用户没有按下操纵杆。读数小于493意味着用户正在将操纵杆按向左,并希望被控制的对象向左移动。读数大于553表示用户将操纵杆按向右,并希望控制对象移动右侧。
这段代码将显示如下内容:
脚步
- 将您的Joy Stick Shield附加到Arduino Board。
- 把你的arduino板连接到你的电脑上。
- LED将打开,在您的操纵杆盾牌上显示它正常工作。
- 在上传到您的电路板之前,写下草图并编译它,这只是一个很好的做法,在上传之前编译草图。
- 草图上传后,运行serial monitor来观察值。
- 当您移动操纵杆时,串行显示器会告诉您您移动操纵杆的方向。
下面的代码将显示用户按下操纵杆的方向,而不是显示模拟值。
代码
//定义模拟引脚的全局变量。// 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);}
实验3:阅读操纵杆按钮开关
按钮开关简单连接Arduino数字I/O引脚,如下表所示:
当按下A键时,将向D2发送一个数字信号,以此类推。我们将使用digitalRead()函数来确定按钮的状态。
由于没有连接到操纵杆屏蔽上的这些按钮的电阻,因此您必须启用Arduino上的电阻。下面是要启用上拉电阻并读取数字值的代码。
每当用户按下按钮时,Arduino将在串行监视器上显示按钮值。
脚步
- 在arduino板上安装你的操纵杆护罩。
- 把你的arduino板连接到你的电脑上。
- Led将会点亮你的操纵杆护罩,显示它的工作正常。
- 在上传到您的电路板之前,编写草图并编译它(在上传前编译草图是很好的做法)。
- 草图上传后,运行serial monitor来观察值。
- 按下操纵杆上的任何按钮,它将显示哪个按钮被按下。
代码
#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);//使上拉电阻先写引脚模式,然后使该引脚高pinMode(BUTTON_UP, INPUT);digitalWrite (BUTTON_UP、高);pinMode (BUTTON_RIGHT、输入);digitalWrite (BUTTON_RIGHT、高);pinMode (BUTTON_DOWN、输入);digitalWrite (BUTTON_DOWN、高);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); } }
为自己提供这个项目!BOM。