如何用游戏控制器和arduino控制机器人

你一直想用电子游戏控制器控制Arduino吗?好吧,现在你只需要这篇文章和一个Xbox360控制器就可以了!...

Arduinos和类似的兼容板是各地DIY修补匠的首选设备之一。无论你是一个刚开始使用Arduino的初学者,还是一个已经在你的生活中使用Arduino的人,它们都为无数令人敬畏的项目提供了一个平台。

contol-robot-arduino

今天我们将探索一种创造性的方法来控制伺服使用处理,和Xbox360控制器。如果你已经相当精通游戏开发,你可能会对我们的自定义游戏控制器教程感兴趣,它使用Unity。

本教程将假设您有一点先验知识,如果这是您第一次尝试Arduino小提琴,您可能会发现我们的Arduino指南在这里很有用。同样,如果这是您第一次使用Java,可能会有点混乱。虽然Processing使用的是平台的简化版本,但这些Java概念和技巧可能仍然有用。

你需要什么

control robots with game controller and arduino

  • 1个Arduino。我们今天用的是UNO。
  • 1个爱好伺服。任何能用Arduino销的东西。
  • 1个有线Xbox360控制器。尽管这在技术上几乎适用于任何控制器。
  • 几根连接线。

除此之外,您还需要从各自的网站下载Processing和ArduinoIDE。

准备arduino

control robots with game controller and arduino

首先我们需要安装伺服系统。这里的接线颜色可能不同,但一般情况下,5v引脚连接红色,GND引脚连接棕色或黑色。通常为黄色或橙色的数据线连接到引脚10。

检查您的线路,并将Arduino连接到计算机。打开Arduino IDE。

control robots with game controller and arduino

打开位于文件>示例>Firmata>标准Firmata的StandardFirmata草图。这个草图为串行端口的外部控制建立了电路板,和我们在用Python控制Arduino的文章中使用的相同。把草图上传到黑板上。

如果上载失败,请检查是否在“工具”菜单中选择了正确的板和端口详细信息。

我们的Arduino已经准备好了!

设置处理

打开处理,你会得到一个空白的草图。在此之前,我们需要安装一些库。转到“草图”菜单,然后选择“导入库”>“添加库”。这将带来贡献管理器,任何Arduino用户都会很熟悉它。

control robots with game controller and arduino

我们需要安装三个库来实现这一点。首先是游戏控制加库。这是什么将允许我们使用我们的游戏控制器与处理。使用“搜索”窗口找到它,然后单击右下角的“安装”。Game Control Plus需要为其配置工具安装另一个库,所以我们现在就开始吧。搜索G4P库并安装它。

最后,我们需要Arduino(firmata)库。您猜对了,搜索它,然后单击“安装”。安装了这些东西之后,我们就可以开始测试了,一切都可以正常工作。我们现在使用的是windows10,但大多数平台都提供了处理功能,包括Raspberry-Pi。想象一下可能性吧!

测试arduino

在我们开始创建自定义草图之前,让我们测试Arduino和伺服的处理。打开“文件”>“示例”,然后从“已贡献的库”/“Arduino(firmata)”文件夹中选择“ArduinoServo”。我们将用这个来测试我们的伺服,但首先我们可能需要改变一些东西。

向下滚动草图并找到以下行:

println(Arduino.list());

如果注释为“输出”,请在println之前删除两个斜杠(Arduino.list());,保存草图。通过单击play图标运行它,并在底部的控制台上保持一个眼睛。这将列出连接到COM端口的所有内容。

control robots with game controller and arduino

在我的例子中,我的Arduino在COM 8上,这是这里列出的第三个端口。这一点很重要,因为下一行中的代码有一个数组,其值决定要使用哪个COM端口。

control robots with game controller and arduino

我们需要改变它以反映我们的COM端口。对我来说,这是第三个位置,或索引编号2:

arduino = new Arduino(this, Arduino.list()[2], 57600);

我们需要对这段代码做一些其他的小改动来测试它。向下滚动到Arduino管脚的设置位置,并在此处注释其中一行。将另一个更改为针脚10。

//arduino.pinMode(4, Arduino.SERVO);arduino.pinMode(10, Arduino.SERVO);

我们需要在Draw()方法中执行相同的操作:

arduino.servoWrite(10, c***train(mouseX / 2, 0, 180));// arduino.servoWrite(4, c***train(180 - mouseX / 2, 0, 180));

保存草图,然后运行它。你应该能够移动你的伺服移动你的鼠标在窗口上来回移动程序生成。

control robots with game controller and arduino

如果它不适合你,检查你的伺服线路,并检查你有你的COM端口正确的阵列位置。一旦你知道Arduino正在与处理进行良好的沟通,是时候继续前进了。

配置控制器

我们使用的游戏控制加库也有一个强大的配置。确保控制器已**,打开Configurator示例项目并运行它。您将得到如下菜单:

control robots with game controller and arduino

单击您的控制器名称,将弹出一个更大的配置窗口。

control robots with game controller and arduino

这看起来可能相当令人望而生畏,但设计得尽可能简单。在左边,用您想要的变量名填写第一个键。这个变量将控制伺服的位置,所以我称之为servoPos。

在它旁边的框中,您可以简要描述它的功能。现在拿起你的控制器,移动你想用伺服棒。一个小小的实验表明,右拇指与X旋转框相对应。在servoPos变量和此框之间拖动一行。

control robots with game controller and arduino

现在我们需要将配置保存为数据文件。在窗口的右上角,填写设备角色字段和文件名字段。

文件名很重要,因为您将在代码中使用它。我把它叫做xbs来保持简单。单击“验证”,然后单击“保存”。这会为我们的控制器编写一个包含指令的文件,我们可以稍后使用。

control robots with game controller and arduino

准备自定义草图文件夹

让我们设置工作文件夹。打开一个空白的加工草图,然后用你喜欢的名字保存它。这将在保存位置为它创建一个目录。

现在导航到Documents/Processing/libraries/GameControlPlus/examples/Configurator并复制标记为data的文件夹。这个文件夹包含我们刚刚创建的配置文件。导航到新保存的空白草图的目录,然后粘贴数据文件夹。

control robots with game controller and arduino

创建自定义草图

现在一切就绪,我们可以开始用我们的两个库来绘制草图。我们将一步一步地讨论这个问题,但是如果您想继续,可以下载完整的sketch和data文件夹。请注意,您可能仍需要修改代码以反映您的Arduino COM端口。

首先导入我们需要的所有库:

import processing.serial.*;import net.java.games.input.*;import org.gamecontrolplus.*;import org.gamecontrolplus.gui.*;import cc.arduino.*;import org.firmata.*;

我们还需要声明ControlDevice、I/O和Arduino,以及一个用于保存拇指杆中的值的浮点:

ControlDevice cont;ControlIO control;Arduino arduino;float thumb;

我们的setup()方法创建一个小窗口,一个控制器实例,并将设备与配置文件相匹配。在这一点上,确保配置数据文件的文件名正确非常重要:

void setup() { size(360, 200); control = ControlIO.getInstance(this); cont = control.getMatchedDevice("xbs"); if (cont == null) { println("not today chump"); // write better exit statements than me System.exit(-1); } // println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[2], 57600); arduino.pinMode(10, Arduino.SERVO);}

我们还检查在这个阶段是否没有适用的控制器,如果需要,退出程序。虽然不需要使用size()创建的窗口,但它稍后会给我们一些反馈,告诉我们是否从控制器获得有用的值。我们也在这里初始化我们的Arduino和pin,就像我们在测试时做的那样。

现在我们创建一个小方法,从我们的控制器获取输入值,并将其映射到我们的伺服能够使用的值:

public void getUserInput() { thumb = map(cont.getSlider("servoPos").getValue(), -1, 1, 0, 180);}

这一行代码使用我们的数据文件来获取我们命名的控制servoPos,它链接到控制器的右拇指,并从中读取值。然后它映射这些值并将值存储在thumb float变量中。

现在这个代码永远不会被调用,我们现在就修复它。

void draw() { getUserInput(); background(thumb,100,255); arduino.servoWrite(10, (int)thumb);}

draw()类似于ArduinoIDE中的loop()方法。每一帧,它都调用getUserInput()方法并更新thumb值。它使用这个值来更改background()的红色值,从而提供值更改的可视指示器。然后使用arduino.servoWrite公司()功能。请注意,我们必须将thumb转换为整数值,因为servoWrite函数使用两个整数(管脚号和角度)作为其参数。

检查代码是否有错误,保存代码,然后单击“运行”。在初始化Arduino时稍微延迟一下,它应该是这样的:

control robots with game controller and arduino

用游戏控制器和arduino控制:完成!

这个项目在许多方面是相当深入的经验不足的程序员,尽管奇妙的图书馆可以帮助我们。它所代表的是一种新的方式来思考如何控制机器人,以及你所建造的任何其他设备。

这个项目将与我们的指南完美地建立一个激光炮塔,让你完全控制它。你可以像我们简单的Arduino警报教程一样设置一个压电蜂鸣器,并使用你的控制器来改变蜂鸣器的音调或灯光的颜色。

或者,你也可以造一个巨大的机器人来接管地球。只要你有足够长的USB线!

  • 发表于 2021-03-25 23:05
  • 阅读 ( 327 )
  • 分类:IT

你可能感兴趣的文章

如何用python编程和控制arduino

...。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗? ...

  • 发布于 2021-03-11 16:20
  • 阅读 ( 890 )

你现在可以做10个预算的arduino星球大战项目

...BB-8风扇建设是什么可以实现预算的伟大证明。这个滚动机器人最初是仓鼠球。用DIY技术取代仓鼠,整容后,预算蓝牙BB-8诞生了。最棒的是,它只需要40美元! ...

  • 发布于 2021-03-12 05:05
  • 阅读 ( 278 )

如何用arduino遥控你的家,5个diy项目

...何工作的基础知识,并给出一些任何人都能做的简单DIY Arduino项目的例子。 ...

  • 发布于 2021-03-13 11:21
  • 阅读 ( 285 )

arduino vs raspberry pi:哪台是你的迷你电脑?

... Arduino是一个微型控制器,实际上不是一台微型计算机。微控制器只是构成整个计算机的一小部分。Arduino仅提供Raspberry Pi功能的一个子集。 ...

  • 发布于 2021-03-15 06:18
  • 阅读 ( 294 )

如何用arduino和unity制作自定义游戏控制器

你有没有想过设计自己的游戏控制器?比你想象的容易! ...

  • 发布于 2021-03-17 05:47
  • 阅读 ( 589 )

为你生活中的arduino tinkerer准备的10个礼物

... 6uctronics智能蓝牙机器人车载套件 ...

  • 发布于 2021-03-19 01:59
  • 阅读 ( 282 )

15个优秀的arduino初学者项目

... 2arduino midi控制器 ...

  • 发布于 2021-03-23 11:30
  • 阅读 ( 360 )

100美元以下的7款最佳机械臂套件

... Arduino可能是全球**商使用的最流行的可编程控制器。机器人也是Arduino爱好者最受欢迎的项目之一。因此,Arduino控制的机械臂套件也会很受欢迎,这是理所当然的。 ...

  • 发布于 2021-03-23 13:59
  • 阅读 ( 339 )

5种使用arduino相机的绝妙方法

... 三。自动炮塔:机器人桌面狙击手 ...

  • 发布于 2021-03-24 03:57
  • 阅读 ( 232 )

为2018年世界杯打造10个足球主题diy项目

... 9arduino电视控制器 ...

  • 发布于 2021-03-24 15:20
  • 阅读 ( 262 )
二仁酱
二仁酱

0 篇文章