所有关于电路
项目

如何使用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

步骤:

  1. 在Arduino板上安装你的joy stick shield。
  2. 把你的arduino板连接到你的电脑上。
  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板连接到你的电脑上。
  3. LED将打开,在您的操纵杆盾牌上显示它正常工作。
  4. 在上传到您的电路板之前,写下草图并编译它,这只是一个很好的做法,在上传之前编译草图。
  5. 草图上传后,运行serial monitor来观察值。
  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板上安装你的操纵杆护罩。
  2. 把你的arduino板连接到你的电脑上。
  3. Led将会点亮你的操纵杆护罩,显示它的工作正常。
  4. 在上传到您的电路板之前,编写草图并编译它(在上传前编译草图是很好的做法)。
  5. 草图上传后,运行serial monitor来观察值。
  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);//使上拉电阻先写引脚模式,然后使该引脚高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); } }

Joystick_3.zip.

为自己提供这个项目!BOM。

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