搜索
首页web前端js教程使用node.js在Arduino LCD上显示Web API

使用node.js在Arduino LCD上显示Web API

钥匙要点

  • >本文介绍了如何使用node.js在Arduino的LCD上显示Web API的数据。作者以在IoT悉尼聚会上进行随机抽奖的示例,Arduino LCD设置在Meetup.com event rsvp信息中引入RSVP信息并随机选择成员。
  • >
  • 作者使用node.js创建一个脚本,该脚本向Meetup API提出HTTP请求,解析返回的JSON数据,并在Arduino的LCD上显示一个随机选择的成员名称。作者还提供了有关如何设置node.js服务器,制作http请求并处理返回数据的分步指南。>
  • 作者提到约翰尼五库用于通过node.js来控制arduino,并且请求模块用于从node.js服务器向Meetup API发出HTTP请求。下划线库用于解析返回的JSON数据。
  • >作者结束时,提出了此设置的其他潜在用途,例如显示怪异的消息,保留NBA季后赛分数或从Web API获取的任何其他数据。作者还鼓励读者根据此代码共享自己的项目。
  • > lcds。他们很有趣。这是通过发光文字说话时向您的Arduino发出声音的最酷方法之一。在本文中,我们将探讨如何使用node.js.
  • 从Web API中引入数据并在Arduino的LCD上显示。
>我在悉尼每个月最喜欢的聚会是悉尼的物联网聚会。这是一次很棒的聚会(您应该来!)。在每次聚会结束时,RSV的人都会随机抽奖。我以为是时候以真实的IoT样式完成了,所以我整理了一个快速的Arduino LCD设置,该设置将在Meetup.com event RSVP Info中提取,然后随机选择一个幸运的成员。认为这可能比用帽子绘制名字更容易!

>它也与我在Sitepoint上写的一系列物品文章相同。我正在探索带有各种设备的许多不同的物联网可能性。上周,我研究了Unity游戏引擎中使用的IoT数据,在此之前,我研究了如何从Jawbone Up中获取数据。

>

>让我们开始!

您的arduino素描

我们将在此示例中使用的草图看起来像:

>这是您在Sparkfun Inventors套件中会发现的版本的略微修改版本。您会在网上找到其他LCD草图的其他变体,可以重新排列事物的连接方式,但可以以相同的方式工作。您可能只需要调整下面JavaScript中定义哪个引脚。

>

我们的JavaScript代码使用node.js在Arduino LCD上显示Web API 在我们的node.js javascript文件中,我们包括以下内容:
<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,
</span>	five <span>= require('johnny-five'),
</span>	request <span>= require('request'),
</span>	_ <span>= require('underscore'),
</span>	board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;
</span>
board<span>.on('ready', function() {
</span>	lcd <span>= new five<span>.LCD</span>({
</span>		<span>pins: [12, 11, 5, 4, 3, 2],
</span>		<span>rows: 2,
</span>		<span>cols: 16
</span>	<span>});
</span>
	<span>this.repl.inject({
</span>		<span>lcd: lcd
</span>	<span>});
</span><span>});
</span>
app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {
</span>	<span>request({
</span>		<span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id,
</span>		<span>json: true
</span>	<span>}, function(error<span>, response, body</span>) {
</span>		<span>var members = _.pluck(body.results, 'member'),
</span>			randomMember <span>= members[_.random(members.length - 1)];
</span>		
		resp<span>.json(randomMember);
</span>
		<span>console.log(randomMember.name);
</span>
		lcd<span>.clear().print(randomMember.name);
</span>	<span>});
</span><span>});
</span>
server<span>.listen(port, function() {
</span>  <span>console.log('Listening on ' + port);
</span><span>});</span>

>逐步设置此此操作

如果您非常了解Node.js,那么大部分代码已经对您来说很有意义。我将解释每一项,只是为了确保每个人都在同一页面上,并在我们需要设置的其他任何内容方面提供指导。>

首先,我们设置了Express Server变量,以准备在端口5000上运行LocalHost服务器:>

>然后,我们有一个相当重要的事情要包括约翰尼五。这是NPM库,它使我们可以访问通过Node.js.

来控制Arduino的功能。
<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,</span>
在那之后,我们包括请求模块。我们将使用它来从我们的node.js服务器到METUP API。

要保持非常干净和简单,我们将使用下划线来浏览数据阵列。
five <span>= require('johnny-five'),</span>

最终两个变量是板和LCD变量,我们将用来存储Johnny-Five创建的Arduino对象。
request <span>= require('request'),</span>

我们首先要等待我们的Arduino董事会准备好访问,Johnny-Five在我们的董事会准备就绪时发出了“准备”活动。
_ <span>= require('underscore'),</span>

>我们的董事会准备就绪后,我们让Johnny-Five知道我们已经连接了哪种LCD。我们在数组中定义了从上到下的引脚:
board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;</span>

>我们还定义了LCD有多少行和列。就我而言,它是2×16 LCD。所有这些看起来都这样:
board<span>.on('ready', function() {</span>

然后,我们有可选的代码(但要包括在内),这将使我们能够从命令行运行时从命令行访问LCD功能(我将在文章后面在操作中显示此操作):

使用node.js在Arduino LCD上显示Web API 然后,我们有一个,只有一个我们已经设置的请求。在此请求中,我们期望在URL中有一个事件ID。例如:http:// localhost:5000/choosemember/221960710。访问事件页面时,事件ID是您在地址栏中找到的ID:

>

lcd <span>= new five<span>.LCD</span>({
</span>	<span>pins: [12, 11, 5, 4, 3, 2],
</span>	<span>rows: 2,
</span>	<span>cols: 16
</span><span>});</span>
我们的Get请求查找此ID看起来像:

然后,我们进入代码的复杂位!我们对METUP API的实际HTTP请求。我们通过请求功能访问此功能。我们在这里传递两件事,我们的HTTP选项和我们的回调功能。
<span>this.repl.inject({
</span>	<span>lcd: lcd
</span><span>});</span>
>我们的HTTP调用选项包含我们的URL和布尔值,以使请求知道我们期望将JSON对象重新回来。看起来很这样:

使用node.js在Arduino LCD上显示Web API敏锐的观察者会注意到,我们使用req.params.event_id将事件ID从URL字符串传递到请求URL。但是,我还没有解释过另一串字符。为了访问METUP API,您需要一个API密钥。您可以在https://secure.meetup.com/meetup_api/key/上找到其中之一:

>使用node.js在Arduino LCD上显示Web API

>最后,我们获得了使用返回的JSON数据的回调函数。我一直保持简单且没有错误处理,但是如果这是一个严肃的生产级别的创建 - 添加了错误变量的检查。

>

json输出,回调将在我们的身体变量中返回,看起来像:

>
<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,
</span>	five <span>= require('johnny-five'),
</span>	request <span>= require('request'),
</span>	_ <span>= require('underscore'),
</span>	board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;
</span>
board<span>.on('ready', function() {
</span>	lcd <span>= new five<span>.LCD</span>({
</span>		<span>pins: [12, 11, 5, 4, 3, 2],
</span>		<span>rows: 2,
</span>		<span>cols: 16
</span>	<span>});
</span>
	<span>this.repl.inject({
</span>		<span>lcd: lcd
</span>	<span>});
</span><span>});
</span>
app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {
</span>	<span>request({
</span>		<span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id,
</span>		<span>json: true
</span>	<span>}, function(error<span>, response, body</span>) {
</span>		<span>var members = _.pluck(body.results, 'member'),
</span>			randomMember <span>= members[_.random(members.length - 1)];
</span>		
		resp<span>.json(randomMember);
</span>
		<span>console.log(randomMember.name);
</span>
		lcd<span>.clear().print(randomMember.name);
</span>	<span>});
</span><span>});
</span>
server<span>.listen(port, function() {
</span>  <span>console.log('Listening on ' + port);
</span><span>});</span>

我们通过在下划线中使用_.pluck()函数来滤除很多。这将有助于我们专注于API的重要一点 - RSV的成员。 _.pluck()函数通过结果阵列,仅从每个成员信息中获取成员信息。

>
<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,</span>
然后,我们使用_.members()下划线函数从结果数组中随机选择一个成员。

five <span>= require('johnny-five'),</span>
>我们通过Express Server返回该数据作为对GET请求的JSON响应,并在控制台中记录名称,以便我们可以查看选择谁:

然后,我们使用LCD Johnny-Five对象,我们之前设置的对象将成员的名称打印到我们的LCD上。我们首先使用lcd.clear()清除当前所有内容的LCD,然后使用lcd.print()打印出名称字符。
request <span>= require('request'),</span>

>当您运行此操作时,您会注意到一些长名将被切断,而不是包裹到另一行。如果您想将物品包裹在第二行上,请尝试将您的randommember分开。名称为两个16个字符字符串,打印第一个字符串,然后使用lcd.cursor(1,0);在打印第二条之前,移至第二行。就我而言,不需要,因为我们真正需要的就是能够分辨出绘制谁的名字 - 一些缺少的字符通常不会在这里引起问题。

>
_ <span>= require('underscore'),</span>
在您的arduino上跑步

>我们已经准备好了node.js代码。现在,连接您的arduino,并确保已上载了标准firmata素描:

>我们还需要确保已经整理了所有依赖项。我的软件包。json文件看起来像:

使用node.js在Arduino LCD上显示Web API

随时可以将其适应您自己的项目,您想要的主要是这些依赖性。

board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;</span>
>然后,一旦完成了一个软件包。JSON文件,打开控制台,然后转到代码的位置。运行这个出色的命令:

之后是一个:

>
board<span>.on('ready', function() {</span>

>在该运行中,您现在应该能够访问http:// localhost:5000/choosemember/221960710(当然可以替换自己的事件ID),结果您会出现随机的RSVP:

lcd <span>= new five<span>.LCD</span>({
</span>	<span>pins: [12, 11, 5, 4, 3, 2],
</span>	<span>rows: 2,
</span>	<span>cols: 16
</span><span>});</span>
如果您再次运行它,将会出现新的RSVP。如果一切顺利,这些名称应该出现在您的Arduino的LCD上!

>使用node.js在Arduino LCD上显示Web API

我们提到的

>我们在Node.js Server中提供了一些代码。这样做的是,您可以在node.js服务器运行时从终端内运行命令,以设置LCD屏幕上显示的内容:

> 使用node.js在Arduino LCD上显示Web API

如果我们输入lcd.print(),我们可以得到一些魔术:>

使用node.js在Arduino LCD上显示Web API好吧……我们的信息至少几乎很合适!

>

使用node.js在Arduino LCD上显示Web API结论

>我们成功地在我们的LCD上出现了活动组的随机选择!可以将同样的想法应用于那里的任何其他API,只需调整请求调用以及如何处理数据即可。在LCD上留下怪异的邮件供室友,请保留最新的NBA季后赛分数或其他任何您喜欢的东西!

>

根据此代码使某些有趣的事情?在评论中留下便条并分享,我很想看到它!

>

经常询问有关Arduino LCD上的Web API的问题(常见问题解答)

>如何将我的Arduino LCD连接到Internet?

>将您的Arduino LCD连接到Internet需要像ESP8266这样的Wi-Fi模块。该模块允许您的Arduino连接到Wi-Fi网络,并使用HTTP发出简单的数据请求。您需要使用SPI接口将ESP8266连接到Arduino板。连接后,您可以使用ESP8266WIFI库来管理Wi-Fi连接和ESP8266HTTPCLCCLIENT库来制作HTTP请求。

>

api在arduino lcd中的作用是什么? (应用程序编程接口)是一组规则,允许不同的软件应用程序相互通信。在Arduino LCD的背景下,API用于从Internet获取数据。这些数据可以是天气更新,股价甚至您自己的自定义数据中的任何内容。 API获取此数据并将其发送给您的Arduino板,然后在LCD上显示它您的Arduino LCD上的API涉及几个步骤。首先,您需要使用Wi-Fi模块将Arduino连接到Internet。然后,您需要使用HTTP协议向API提出请求。 API将使用请求的数据响应,然后您可以在LCD上解析并显示它们。 LiquidCrystal库可用于管理LCD显示。

>

>我可以在我的Arduino LCD上使用任何API?但是,请记住,某些API可能需要身份验证,这可能会更复杂。另外,API返回的数据需要以您的Arduino可以理解的格式,通常是JSON或XML。 🎜>实时更新Arduino LCD上的数据需要对API进行定期请求。您可以使用delay()函数在一定时间内暂停程序的执行。例如,如果您想每分钟更新数据,则可以在loop()函数末尾添加延迟(60000)。这将在循环的下一次迭代之前暂停60000毫秒或一分钟的程序。

>

>在将API与Arduino一起使用Arduino时,将API与Arduino一起使用API​​是什么限制很多可能性,存在一些局限性。首先,Arduino板的内存有限,在处理大量数据时,这可能是一个问题。其次,并非所有API都可以免费使用,有些API可能具有使用限制。最后,制作http请求和解析数据可能很复杂,需要对编程和网络进行良好的了解。

>

>我可以与其他Arduino组件一起使用API​​吗?

是的,是的,可以与任何API一起使用。可以连接到Internet的Arduino组件。这不仅包括LCD,还包括LED,电动机和其他传感器。该过程是相同的:Arduino向API提出请求,接收数据并使用此数据来控制组件。

>

>我如何对我的Arduino LCD和API进行故障排除? >解决Arduino LCD和API的故障排除问题可能具有挑战性,但是您可以做一些事情。首先,检查布线并确保您的Arduino正确连接到Internet。其次,使用串行显示器调试代码,并查看API的响应。最后,检查API文档是否有任何特定要求或限制。

>我可以使用Arduino LCD和API来创建自己的项目吗?使用Arduino LCD和API,您可以创建各种项目。例如,您可以创建一个显示实时天气数据的气象站,一个显示最新股价的股票股票或根据Internet数据控制设备的家庭自动化系统。

>关于将API与Arduino一起使用的更多资源是什么? Arduino官方网站和论坛是一个不错的起点。 YouTube,Udacity和Coursera等网站上也有许多在线教程和课程。最后,西蒙·蒙克(Simon Monk)诸如“编程Arduino:开始草图”之类的书提供了全面的Arduino编程介绍,包括使用API​​。

以上是使用node.js在Arduino LCD上显示Web API的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaScript中替换字符串字符在JavaScript中替换字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

自定义Google搜索API设置教程自定义Google搜索API设置教程Mar 04, 2025 am 01:06 AM

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

8令人惊叹的jQuery页面布局插件8令人惊叹的jQuery页面布局插件Mar 06, 2025 am 12:48 AM

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

构建您自己的Ajax Web应用程序构建您自己的Ajax Web应用程序Mar 09, 2025 am 12:11 AM

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

什么是这个&#x27;在JavaScript?什么是这个&#x27;在JavaScript?Mar 04, 2025 am 01:15 AM

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

10张移动秘籍用于移动开发10张移动秘籍用于移动开发Mar 05, 2025 am 12:43 AM

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源

通过来源查看器提高您的jQuery知识通过来源查看器提高您的jQuery知识Mar 05, 2025 am 12:54 AM

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

如何创建和发布自己的JavaScript库?如何创建和发布自己的JavaScript库?Mar 18, 2025 pm 03:12 PM

文章讨论了创建,发布和维护JavaScript库,专注于计划,开发,测试,文档和促销策略。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。