0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用操纵杆和Arduino控制多个LED灯亮灭的过程

科技观察员 来源:DevicePlus 作者:DevicePlus 2022-03-30 15:24 次阅读

操纵杆工作原理

一个简单的Arduino操纵杆使用电位器(如表盘或滑块中的那种)沿两个垂直轴读取值。通过组合这两个值,您可以获得与操纵杆位置相对应的x,y坐标。有了这些数据,您就可以根据操纵杆指向的位置采取行动。

与大多数电位器一样,两个轴的测量范围为0到1023。由于操纵杆从中心开始并左/右和上/下移动,因此两个轴的默认起始位置都在511左右。有几种类型的Arduino操纵杆控制器,甚至还有一两个操纵杆护罩。出于我们的目的,我们将研究一个基本的模拟Arduino操纵杆模块。

这个Arduino操纵杆带有五个引脚:一个用于电源,一个用于接地,两个用于X和Y轴的引脚,以及一个用于按钮按下的引脚。我们今天只使用前四个,但您可以在将来尝试通过按钮扩展您的项目。您还可以找到带有按钮的操纵杆护罩,因此您拥有控制整个游戏所需的所有输入。

不过,现在,我们将通过使用它来控制四个LED来演示操纵杆的工作原理。我们的目标是,当操纵杆指向上、下、左和右时,每个方向都会亮起不同的LED。这将很容易检测到,因为四个方向中的每一个都位于两个电位计轴之一的远端。

你需要什么

对于这个项目,我们将在Arduino操纵杆模块之上使用四个不同颜色的LED作为指示灯来显示我们的项目正在运行。物品清单:操纵杆;四个LED(如果有的话,最好是不同颜色的);四个220欧姆电阻;电线;面包板;USB电缆;ArduinoIDE等。

将所有材料放在一起后,将下一部分的代码上传到您的 Uno,然后转到接线部分。

代码

首先,将以下草图上传到您的 Arduino Uno。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#define joyX A0
#define joyY A1
int blueLED = 7;
int redLED = 6;
int yellowLED = 5;
int whiteLED = 4;
void setup() {
Serial.begin(9600);
pinMode(blueLED,OUTPUT);
pinMode(redLED,OUTPUT);
pinMode(yellowLED,OUTPUT);
pinMode(whiteLED,OUTPUT);
}
void loop() {
int xValue;
int yValue;
xValue = analogRead(joyX);
yValue = analogRead(joyY);
Serial.print("X: ");
Serial.print(xValue);
Serial.print("\t Y: ");
Serial.println(yValue);
if (yValue > 1020){
digitalWrite(blueLED, HIGH);
} else {
digitalWrite(blueLED, LOW);
}
if (yValue < 2){
digitalWrite(redLED, HIGH);
} else {
digitalWrite(redLED, LOW);
}
if (xValue > 1020){
digitalWrite(yellowLED, HIGH);
} else {
digitalWrite(yellowLED, LOW);
}
if (xValue < 2){
digitalWrite(whiteLED, HIGH);
} else {
digitalWrite(whiteLED, LOW);
}
}

接下来,让我们通过草图突出显示您需要了解的重要部分。

1
2
3
4
5
6
7
#define joyX A0
#define joyY A1
int blueLED = 7;
int redLED = 6;
int yellowLED = 5;
int whiteLED = 4;

在本节中,我们将定义六个引脚变量。前两个引脚 A0 和 A1 将存储来自操纵杆模块的 X 和 Y 变量。接下来的四行定义了四个 LED 引脚,对于这个草图,每个引脚都是不同的颜色。

1
2
3
4
5
6
7
void setup() {
Serial.begin(9600);
pinMode(blueLED,OUTPUT);
pinMode(redLED,OUTPUT);
pinMode(yellowLED,OUTPUT);
pinMode(whiteLED,OUTPUT);
}

在本节中,我们将启动串行监视器,它可以让我们看到当您移动操纵杆模块时操纵杆输出的值。四个pinMode()函数还将 LED 引脚分配为输出。

1
2
3
4
5
6
7
8
9
int xValue;
int yValue;
xValue = analogRead(joyX);
yValue = analogRead(joyY);
Serial.print("X: ");
Serial.print(xValue);
Serial.print("\t Y: ");
Serial.println(yValue);

在loop()部分中,我们将首先创建变量 xValue 和 yValue 来存储来自游戏杆模块的值。当您四处移动操纵杆时,这些值应该实时变化。

我们还将把 X 和 Y 值打印到串行监视器上。如果您想查看哪些值对应于不同的位置,请在通过 USB 插入 Arduino 时打开串行监视器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (yValue > 1020){
digitalWrite(blueLED, HIGH);
} else {
digitalWrite(blueLED, LOW);
}
if (yValue < 2){
digitalWrite(redLED, HIGH);
} else {
digitalWrite(redLED, LOW);
}
if (xValue > 1020){
digitalWrite(yellowLED, HIGH);
} else {
digitalWrite(yellowLED, LOW);
}
if (xValue < 2){
digitalWrite(whiteLED, HIGH);
} else {
digitalWrite(whiteLED, LOW);
}

最后,我们将使用四个if()语句来控制彩色 LED。每个都分配一个值“> 1020”或“< 2”(我们使用这些值来减少闪烁)。例如,y 轴上的“> 1020”对应于摇杆指向上方,因此它会打开蓝色 LED。同样,y 轴上的“< 2”对应于操纵杆指向下方,因此红色 LED 将亮起,依此类推。

接线

pYYBAGJEBZOAQZIyAAMXouURlZI392.png

该项目的布线相对简单。每个LED都需要自己的220欧姆电阻,因此请确保您有一些方便的。要连接项目,请按照以下步骤操作。首先,在摇杆模块上:

将G引脚连接到Arduino上的GND。

将P引脚连接到Arduino上的5V。

将操纵杆上的X引脚连接到Arduino上的A0引脚。

将操纵杆上的Y引脚连接到Arduino上的A1引脚。

接下来,对于LED,我们将从4到7将一种颜色连接到Arduino上的数字引脚。对于每个引脚,执行以下步骤:

将LED的长端连接到Arduino上的正确引脚(请参阅草图变量以获取正确的引脚映射或更改代码以适合您拥有的LED)。

将LED的短脚连接到220欧姆电阻。

将220欧姆电阻连接到面包板上的接地轨。

将面包板上的接地轨连接到Arduino上的GND。

一切就绪并上传软件后,您可以打开Arduino并开始移动操纵杆。如果您打开串行监视器,您应该会看到X和Y值随着您移动操纵杆而发生变化。尝试向上、向下、向左和向右指向操纵杆以查看哪个LED亮起。您可以通过根据操纵杆指向的位置触发不同的操作来扩展此项目。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22445

    浏览量

    645848
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184826
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8459
收藏 人收藏

    评论

    相关推荐

    labview操纵杆

    用labview自带的初始化操纵杆,输入设备信息,获取操纵杆的坐标轴,会占很大的内存!!!!还有其他方法吗!!
    发表于 04-13 01:06

    小白求教,怎么实现操纵杆控制电机的旋转角度

    小白求教,怎么实现操纵杆控制电机的旋转角度。想要实现,电机保持慢转速,操纵杆前推控制向前转,后推控制向后转,
    发表于 02-05 14:27

    来自Digilent的Pmod资产净值和操纵杆

    种不同的数据。 Digilent的Pmod资产净值和操纵杆虽然NAV具有所有传感器,但JSTK2可用于控制您的项目。它有一个2轴操纵杆,带有一个中央按钮和触发按钮。它还配备了一个24位色的可编程RGB
    发表于 10-30 18:20

    Digilent Pmod NAV和操纵杆

    Joey正在设置的是Pmod操纵杆。这是一个带有两个按钮的两轴操纵杆操纵杆中心按钮和一个按钮)。对于此示例,Joey使用UC32开发板运行示例代码,该代码根据操纵杆的位置更改RGB
    发表于 11-01 15:52

    编码操纵杆问题

    Y值总是2.5V,因为操纵杆以Y方向为中心,X轴极值中的螺旋桨功率很小。螺旋桨的动力设置为5个前进挡和3个RE。诗齿轮。因此,我的控制循环读取操纵杆x/y值,然后通过9个I/IF I/OR语句来决定我
    发表于 12-21 15:47

    USB操纵杆如何编程

    我正在做一个项目,我们必须做一个无线USB操纵杆。我搜索了各种各样的USB微控制器,如CY7C6300 X,并阅读了它的数据表。谁能告诉我如何编程这个微控制器或有其他更好的微控制器。
    发表于 04-19 09:28

    如何消除操纵杆尖峰

    大家好,我用PIC18F45 50做了操纵杆,现在当我移动罐子时,我收到一些尖刺……我怎么去除尖刺?谢谢
    发表于 04-16 10:56

    如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机?

    文章目录参考资料:如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机1. 必需的组件2. 伺服电机控制如何工作3. NRF24L01引脚说明4. 电路原理图5
    发表于 06-28 09:49

    基于arduino的超级无尾卡丁车操纵杆

    描述超级无尾卡丁车操纵杆这是我为在 2021 年的 arduino 日玩 Super Tux Kart 而创建的 arduino 操纵杆的演变。您可以在下面看到第一个版本,它是精美的纸
    发表于 06-24 06:52

    复古操纵杆的资料分享

    描述复古操纵杆的自动开火部分:1 - 4011 与非门集成电路1 - 1M 欧姆1 - 1K 欧姆1 - 6.8K 欧姆1 - 470 欧姆1 - 50-100K 锅。1 - 1uF 电容2 - 1N4148 二极管1 - 领导PCB
    发表于 07-14 07:34

    MAME旋转操纵杆转USB的资料分享

    描述MAME 旋转操纵杆转 USB要使用像 SNK 的 LS30 这样的街机旋转操纵杆或像 MAME 中的 Happ Controls 旋转这样的克隆,需要将 12 个旋转位置开关转换为顺时针或
    发表于 07-22 06:12

    同时使用1个操纵杆玩2台使用Atari DB-9风格操纵杆端口的电脑

    描述Perifractic 和 Lorin Millsap 的 DoubleJoy - 使用 2 台计算机和 1 个操纵杆这个疯狂的科学实验让您可以玩 2 台使用 Atari DB-9 风格操纵杆端口的电脑,同时使用 1 个操纵杆
    发表于 08-12 07:11

    如何使用Arduino创建操纵杆控制

    电子发烧友网站提供《如何使用Arduino创建操纵杆控制器.zip》资料免费下载
    发表于 12-06 14:35 0次下载
    如何使用<b class='flag-5'>Arduino</b>创建<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>器

    Arduino之使用PS2操纵杆控制LED

    电子发烧友网站提供《Arduino之使用PS2操纵杆控制LED.zip》资料免费下载
    发表于 12-22 16:39 2次下载
    <b class='flag-5'>Arduino</b>之使用PS2<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b><b class='flag-5'>LED</b>

    如何使用操纵杆Arduino控制伺服电机

    在这篇文章中,我们将学习如何使用操纵杆Arduino控制伺服电机。我们将看到有关操纵杆,其销,其结构和工作的概述。我们将从操纵杆中提取有用
    的头像 发表于 07-27 11:47 1190次阅读
    如何使用<b class='flag-5'>操纵杆</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>伺服电机