如何使用JavaScript控制Arduino

Arduino板是进入程序员的硬件黑客体系的最简单方法之一。那里有大量的初学者项目,几乎适合具有编程背景的任何人。即便如此,对于那些时间较短的人来说,开始使用它似乎也很艰巨。如果您想以您已经熟悉的程序语言开始尝试自制的电子产品怎么办?好消息:您可以!

我们已经向您展示了如何使用Python控制Arduino板。

硬件列表

对于此项目,您将需要:

  • Arduino Uno(或兼容板,克隆板在AliExpress上的价格仅为$ 3.20。)
  • 业余伺服:任何业余商店的Arduino兼容伺服都可以,我正在使用
  • 几根连接线
  • USB电缆:用于将Arduino连接到计算机
  • 今天的教程将使用Arduino Uno板。我们稍后将在该项目中使用的Johnny-Five框架支持大多数Arduino兼容微控制器,尽管您的板将需要具有PWM功能以使伺服器保持满意。

    电路设置< /

    像这样将伺服器连接到Arduino:

    简而言之,VCC线( RED )连接到Arduino的5v引脚GND线(黑色 BRO WN )连接到Arduino的GND引脚,而Pulse线(黄色橙色)连接到Arduino的引脚10。请注意,虽然您不必将其专门连接到引脚10,但必须将其连接到PWM引脚,通常用表示。

    仔细检查您没有混用上所有电线,然后将Arduino连接到您的计算机。我们将为此项目使用Windows 10。该项目的所有元素也都适用于Mac和Linux,尽管某些安装说明可能略有不同。

    如果尚未安装,请下载Arduino IDE并选择您的 Board 端口工具菜单中。如果这是您第一次这样做,那么这一切都是一个谜,我们的Arduino入门指南可以帮助您完成这些步骤。

    连接好后,上传 StandardFirmataPlus 示例草图。您可以在示例>固件> StandardFirmataPlus 下的文件菜单中找到此草图。您根本不需要修改草图,它实际上只是将Arduino设置为等待外部指令,稍后我们将为您提供这些指令。

    Johnny-Five的JavaScript机器人技术

    我们将使用Javascript控制Arduino的框架称为Johnny-Five。毫不奇怪,考虑到电影的名字,该项目适合与机器人技术合作。

    要安装Johnny-Five,我们必须首先安装Node.js。您可以从Node.js网站下载其最新版本。我们使用的是推荐的发行版,在撰写本文时为 8.9.4 LTS

    打开 .msi 文件并按照安装说明进行操作,确保将其添加到您的 PATH 中。当前的Node.js安装程序将PATH作为标准添加,尽管值得在安装过程中进行检查,因为这是下一步所需的操作。

    安装完成后,我们将可以访问节点包管理器(NPM)包管理器。点击开始,然后输入CMD。在继续之前,我们需要初始化NPM以防止可能的安装错误。不需要任何专业知识,只需键入:

    npm init

    按照屏幕上的提示进行操作。对于今天的项目,您无需进行任何更改,只需按Enter直到返回命令提示符,然后键入:

    npm install johnny-five

    这将安装所有重要的软件包,这些软件包将与我们的Arduino对话。要使该项目正常工作,我们还需要另外一件事,那就是 Keypress 软件包,该软件包将允许我们从键盘上读取击键。

    通过输入以下内容进行安装:

    npm install keypress

    一旦安装了所有这些软件包,我们就可以编写代码!

    如果在安装过程中遇到任何问题,请尝试在之后再次运行johnny-five install 按键安装。可能只是这里使用的NPM版本的一个古怪之处,但是现在这样做可以避免以后像我一样遇到您遇到的问题。

    代码

    我们将使用今天约翰尼五公司文档中提供的一部分示例代码,该代码允许使用键盘上的箭头键控制我们的伺服系统。完整的代码可在johnny-five.io上找到,但是我们将在此处详细介绍它,以完全理解它的工作原理。

    我们正在为该项目使用Eclipse IDE。

    创建一个新文件并将其命名为test.js,并将其保存在以后可以从命令行轻松访问的位置。该脚本首先为所需的库创建变量,并初始化 Keypress 库以侦听传入的数据,然后调用 Board()方法来设置板。

    var five = require("johnny-five");var keypress = require("keypress");keypress(process.stdin);var board = new five.Board();

    请注意,此处的板卡设置是自动的,无需指定端口。如果您有特定的端口设置,或者在自动检测方面没有运气,则可能需要明确指定端口。

    下一步,我们要“唤醒"主板并进行设置用于伺服控制。调用 board.on 会一直等到Arduino引脚准备就绪后再继续。约翰尼-五图书馆支持内置的伺服器,我们在引脚10上调用 Servo.Continuous(10)以允许直接控制。

    board.on("ready", function() {  console.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);

    进程.stdin 调用可确保我们从键盘接收的所有数据将在下一个代码块中可用。现在,我们要“监听"按键,并使用它们来顺时针(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") {      console.log("Quitting");      process.exit();    } else if (key.name === "up") {      console.log("CW");      servo.cw();    } else if (key.name === "down") {      console.log("CCW");      servo.ccw();    } else if (key.name === "space") {      console.log("Stopping");      servo.stop();    }  });});

    请确保包括所有右括号在底部,如果遇到任何错误,请参考上面链接的整个代码块。保存此脚本,然后打开命令提示符。

    挥手!!

    现在导航到保存脚本的目录,然后键入以下内容来运行它:

    node test.js

    在向您提供代码中所述的说明之前,程序应立即启动有关主板的信息。尝试按上下箭头键,空格键和 Q 退出。屏幕应该看起来像这样:

    一切都很好,伺服器应该随着您的击键跳动!看看那小小的野兽浪!

    谦虚的开始

    尽管承担的项目比通常的初学者闪烁的LED教程要大得多,但我们几乎没有涉及到

    经验丰富的JavaScript用户应该可以直观地使用Johnny-Five软件包。该库也可以本地安装在Raspberry Pi上,使其成为萌芽的机器人制造商的理想软件包。

    该库的优点在于,尽管它是为机器人而设计的,但输入和输出相同数据可用于创建DIY智能家居设置。

    标签: