Arduinos和类似的兼容板是各地DIY修补匠的首选设备之一。无论你是一个刚开始使用Arduino的初学者,还是一个已经在你的生活中使用Arduino的人,它们都为无数令人敬畏的项目提供了一个平台。
今天我们将探索一种创造性的方法来控制伺服使用处理,和Xbox360控制器。如果你已经相当精通游戏开发,你可能会对我们的自定义游戏控制器教程感兴趣,它使用Unity。
本教程将假设您有一点先验知识,如果这是您第一次尝试Arduino小提琴,您可能会发现我们的Arduino指南在这里很有用。同样,如果这是您第一次使用Java,可能会有点混乱。虽然Processing使用的是平台的简化版本,但这些Java概念和技巧可能仍然有用。
除此之外,您还需要从各自的网站下载Processing和ArduinoIDE。
首先我们需要安装伺服系统。这里的接线颜色可能不同,但一般情况下,5v引脚连接红色,GND引脚连接棕色或黑色。通常为黄色或橙色的数据线连接到引脚10。
检查您的线路,并将Arduino连接到计算机。打开Arduino IDE。
打开位于文件>;示例>;Firmata>;标准Firmata的StandardFirmata草图。这个草图为串行端口的外部控制建立了电路板,和我们在用Python控制Arduino的文章中使用的相同。把草图上传到黑板上。
如果上载失败,请检查是否在“工具”菜单中选择了正确的板和端口详细信息。
我们的Arduino已经准备好了!
打开处理,你会得到一个空白的草图。在此之前,我们需要安装一些库。转到“草图”菜单,然后选择“导入库”>;“添加库”。这将带来贡献管理器,任何Arduino用户都会很熟悉它。
我们需要安装三个库来实现这一点。首先是游戏控制加库。这是什么将允许我们使用我们的游戏控制器与处理。使用“搜索”窗口找到它,然后单击右下角的“安装”。Game Control Plus需要为其配置工具安装另一个库,所以我们现在就开始吧。搜索G4P库并安装它。
最后,我们需要Arduino(firmata)库。您猜对了,搜索它,然后单击“安装”。安装了这些东西之后,我们就可以开始测试了,一切都可以正常工作。我们现在使用的是windows10,但大多数平台都提供了处理功能,包括Raspberry-Pi。想象一下可能性吧!
在我们开始创建自定义草图之前,让我们测试Arduino和伺服的处理。打开“文件”>;“示例”,然后从“已贡献的库”/“Arduino(firmata)”文件夹中选择“ArduinoServo”。我们将用这个来测试我们的伺服,但首先我们可能需要改变一些东西。
向下滚动草图并找到以下行:
println(Arduino.list());如果注释为“输出”,请在println之前删除两个斜杠(Arduino.list());,保存草图。通过单击play图标运行它,并在底部的控制台上保持一个眼睛。这将列出连接到COM端口的所有内容。
在我的例子中,我的Arduino在COM 8上,这是这里列出的第三个端口。这一点很重要,因为下一行中的代码有一个数组,其值决定要使用哪个COM端口。
我们需要改变它以反映我们的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));保存草图,然后运行它。你应该能够移动你的伺服移动你的鼠标在窗口上来回移动程序生成。
如果它不适合你,检查你的伺服线路,并检查你有你的COM端口正确的阵列位置。一旦你知道Arduino正在与处理进行良好的沟通,是时候继续前进了。
我们使用的游戏控制加库也有一个强大的配置。确保控制器已**,打开Configurator示例项目并运行它。您将得到如下菜单:
单击您的控制器名称,将弹出一个更大的配置窗口。
这看起来可能相当令人望而生畏,但设计得尽可能简单。在左边,用您想要的变量名填写第一个键。这个变量将控制伺服的位置,所以我称之为servoPos。
在它旁边的框中,您可以简要描述它的功能。现在拿起你的控制器,移动你想用伺服棒。一个小小的实验表明,右拇指与X旋转框相对应。在servoPos变量和此框之间拖动一行。
现在我们需要将配置保存为数据文件。在窗口的右上角,填写设备角色字段和文件名字段。
文件名很重要,因为您将在代码中使用它。我把它叫做xbs来保持简单。单击“验证”,然后单击“保存”。这会为我们的控制器编写一个包含指令的文件,我们可以稍后使用。
让我们设置工作文件夹。打开一个空白的加工草图,然后用你喜欢的名字保存它。这将在保存位置为它创建一个目录。
现在导航到Documents/Processing/libraries/GameControlPlus/examples/Configurator并复制标记为data的文件夹。这个文件夹包含我们刚刚创建的配置文件。导航到新保存的空白草图的目录,然后粘贴数据文件夹。
现在一切就绪,我们可以开始用我们的两个库来绘制草图。我们将一步一步地讨论这个问题,但是如果您想继续,可以下载完整的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时稍微延迟一下,它应该是这样的:
这个项目在许多方面是相当深入的经验不足的程序员,尽管奇妙的图书馆可以帮助我们。它所代表的是一种新的方式来思考如何控制机器人,以及你所建造的任何其他设备。
这个项目将与我们的指南完美地建立一个激光炮塔,让你完全控制它。你可以像我们简单的Arduino警报教程一样设置一个压电蜂鸣器,并使用你的控制器来改变蜂鸣器的音调或灯光的颜色。
或者,你也可以造一个巨大的机器人来接管地球。只要你有足够长的USB线!
...。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗? ...
...BB-8风扇建设是什么可以实现预算的伟大证明。这个滚动机器人最初是仓鼠球。用DIY技术取代仓鼠,整容后,预算蓝牙BB-8诞生了。最棒的是,它只需要40美元! ...
...何工作的基础知识,并给出一些任何人都能做的简单DIY Arduino项目的例子。 ...
... Arduino是一个微型控制器,实际上不是一台微型计算机。微控制器只是构成整个计算机的一小部分。Arduino仅提供Raspberry Pi功能的一个子集。 ...
... Arduino可能是全球**商使用的最流行的可编程控制器。机器人也是Arduino爱好者最受欢迎的项目之一。因此,Arduino控制的机械臂套件也会很受欢迎,这是理所当然的。 ...