Arduino板是程序员进入硬件黑客程序的最简单方法之一。有一个庞大的初学者项目阵列有适合几乎任何人与编程背景。即便如此,对于那些时间紧迫的人来说,开始工作似乎是令人望而生畏的。
学习一种全新的语言只是为了尝试一个微控制器可能看起来是一个很大的工作。如果你想开始用你已经熟悉的程序语言玩自制电子产品,该怎么办?好消息:你可以!
我们已经向您展示了如何使用Python控制Arduino板,今天我们将向您演示如何使用JavaScript实现相同的操作。今天我们将使用Johnny五框架来控制一个伺服,而不是最基本的闪烁LED教程,所有的程序都是JavaScript。
对于此项目,您需要:
今天的教程将使用Arduino Uno板。约翰尼五框架,我们将在本项目稍后使用支持大多数Arduino兼容微控制器,虽然你的董事会将需要有PWM功能,以保持伺服高兴。
将伺服装置连接到Arduino上,如下所示:
简而言之,VCC线(红色)连接到Arduino的5v引脚,GND线(黑色或棕色)连接到Arduino的GND引脚,脉冲线(黄色或橙色)连接到Arduino的引脚10。请注意,虽然您不必特别将其连接到引脚10,但它必须连接到PWM引脚,通常用~表示。
仔细检查你没有把任何电线弄混,然后把Arduino连接到你的电脑上。我们将使用Windows 10来执行此项目。这个项目的所有元素也可以用于Mac和Linux,尽管有些安装说明可能略有不同。
如果您还没有下载ArduinoIDE,然后从Tools菜单中选择Board和Port。如果这是你第一次这样做,这是一个有点神秘的,我们的Arduino初学者指南可以帮助你完成这些步骤。
一旦连接好了,将StandardFirmataPlus示例草图上载到板上。您可以在“文件”菜单的“示例”>;Firmata>;StandardFirmataPlus下找到此草图。您根本不需要修改草图,它基本上只是设置Arduino等待外部指示——我们稍后将提供给自己。
我们将用Javascript控制Arduino的框架称为Johnny Five。不出所料,考虑到它的电影名称,这个项目是面向机器人的工作。
要安装Johnny Five,我们必须先安装节点.js. 您可以从节点.js网站。我们使用的是推荐的版本,在撰写本文时是8.9.4 LTS。
打开.msi文件并按照安装说明进行操作,确保它已添加到您的路径中。电流节点.js安装程序将路径添加为标准路径,尽管在安装过程中值得检查,因为这是我们下一步所必需的。
一旦安装完成,我们就可以从Windows命令行(CMD)访问Node Package Manager(NPM)包管理器。单击开始并键入CMD。在继续之前,我们需要初始化NPM以防止可能的安装错误。它不需要任何专业知识,只需键入:
npm init按照屏幕提示操作。对于今天的项目,您无需更改任何内容,只需按enter键直到返回命令提示,然后键入:
npm install johnny-five这将安装所有重要的软件包,这将与我们的Arduino交谈。我们还需要一个使这个项目工作的东西,那就是Keypress包,它允许我们从键盘读取击键。
通过输入以下命令进行安装:
npm install keypress一旦安装了所有这些软件包,我们就可以开始编写代码了!
如果在安装时遇到任何问题,请在按键安装后再次尝试运行johnny five安装。这可能只是这里使用的NPM版本的一个怪癖,但是现在这样做可以防止以后像我一样遇到问题。
今天我们将使用johnnyfive文档中提供的一段示例代码,它允许使用键盘上的箭头键控制伺服。完整的代码可在约翰尼-五.io,但我们将在这里详细介绍,以充分了解它的工作原理。
我们现在使用EclipseIDE进行编码,不过您可以为这个项目使用任何IDE或文本编辑器。
创建一个新文件并命名它测试.js,并将其保存到以后可以从命令行轻松访问的位置。该脚本首先为所需的库创建变量,初始化Keypress库以侦听传入的数据,同时调用Board()方法来设置Board。
var five = require("johnny-five");var keypress = require("keypress");keypress(process.stdin);var board = new five.Board();注意,这里的电路板设置是自动的,不需要指定端口。如果您有一个特定的端口设置,或者只是在自动检测方面运气不佳,您可能需要显式地指定您的端口。
接下来,我们要“唤醒”我们的董事会,并设置为伺服控制。这个董事会呼叫等待直到Arduino引脚准备就绪,然后继续。johnny five图书馆支持内置伺服系统,我们正在致电伺服。连续(10) 在引脚10上允许直接控制。
board.on("ready", function() { c***ole.log("Use Up and Down arrows for CW and CCW respectively. Space to stop."); var servo = new five.Servo.Continuous(10); process.stdin.resume(); process.stdin.setEncoding("utf8"); process.stdin.setRawMode(true);这个工艺标准调用确保我们从键盘接收到的所有数据在下一段代码中都可用。现在我们要“听”击键,并使用它们来移动我们的伺服顺时针(CW),逆时针(CCW),或停止在其轨道。
process.stdin.on("keypress", function(ch, key) { if (!key) { // if no key is pressed, return i.e do nothing. return; } if (key.name === "q") { c***ole.log("Quitting"); process.exit(); } else if (key.name === "up") { c***ole.log("CW"); servo.cw(); } else if (key.name === "down") { c***ole.log("CCW"); servo.ccw(); } else if (key.name === "space") { c***ole.log("Stopping"); servo.stop(); } });});请确保在这里的底部包含所有的右括号,如果出现任何错误,请参阅上面链接的整个代码块。保存此脚本,并打开命令提示符。
现在导航到保存脚本的目录,并通过键入以下命令运行脚本:
node test.js程序应该立即启动与董事会有关的信息,然后再给你的指令中所述的代码。尝试按上下箭头键、空格键和Q退出。屏幕应如下所示:
一切都很好,伺服应该跳舞你的按键!看那小动物的波浪!
尽管采取了一个比通常的初学者闪烁发光二极管教程略为雄心勃勃的项目,我们甚至几乎没有触及什么可以用Arduino板和类似的微控制器完成的全部范围。
经验丰富的JavaScript用户应该发现Johnny五包直观地使用。图书馆也可以安装在树莓皮上,这使它成为了萌芽的机器人建设者的完美包装。
这个图书馆最大的优点是,虽然它的设计理念是机器人,但同样的输入和输出数据可以用来创建DIY智能家居设置,甚至是家庭酿造的安全系统。
以这种方式与微控制器进行通信是对DIY硬件世界的一个很好的介绍,而不必花时间学习一种全新的编程语言。玩得开心,如果你碰巧造了一个杀人机器人,请记住我们在早期是如何帮助你的。
...。随着这门新语言的兴起,DIY电子领域也蓬勃发展。来自Arduino和Raspberry Pi等公司的开发板和单板计算机改变了人们生产家用电子产品的方式。如果你能用Python编程一个Arduino,那不是很棒吗? ...
也许你最近收到了一个Arduino初学者工具包作为礼物,或者你一直听说修补匠有一个很棒的爱好,你想尝试一下,或者你是一个Arduino专业人士,只是需要一些有趣的想法来度过假期。如果是这样,你来对地方了。 ...
所以,你有一个Arduino。你已经学会了一些基础知识,也许你已经按照初学者指南开始了。接下来呢? ...
Arduino板,以及随之而来的许多价格合理的微控制器,永远改变了人们的电子爱好。曾经是超级极客的领域,拥有广泛的电子和计算知识,现在所有人都可以使用。 ...
...何工作的基础知识,并给出一些任何人都能做的简单DIY Arduino项目的例子。 ...
...很好的选择。流行的专业框架包括Django(Python)、React(JavaScript)、rubyonrails(Ruby)和Laravel(PHP)。 ...
...配有红外线遥控器。这些很有用,原因很明显,但是使用Arduino可以增加功能。(如果您刚刚开始学习Arduino,请先阅读我们的初学者指南)。 ...
...的编码。他们多样化的目录涵盖了流行语言,包括Python、JavaScript、CSS、HTML和Ruby。 ...
JavaScript是互联网的语言。在没有它的情况下进行前端开发是不可能的。对于初学者,尤其是小孩来说,要习惯这种语言的语法是很有挑战性的。 ...
Arduino项目可能很难知道从哪里开始。幸运的是有这么多的选择。这里有15个初学者Arduino项目,让你去! ...