成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

nodemcu的例子

此页面显示Lua脚本中的一些Nodemcu示例 语。这种语言与Arduino C / C ++相当不同,但是 很大的优势是您可以更新单个代码部分 没有重新闪烁整个批次。

这意味着你不'T等待60秒更新设备,而不是它 是几秒钟。这是脚本的巨大优势 语言 - 开发时间大幅减少。

如果您使用过的话,您需要更新您的Nodemcu V3(基于ESP8266) arduino. IDE 方法(或安装旧固件),因为Nodemcu固件将会 已经被覆盖了。它'不是问题 - 说明 重新装修的Nodemcu固件在这里.

如果您未安装或使用esplorer,您需要 Install ESPlorer 与此处的例子一起遵循。

ESP8266基于Lolin Nodemcu突破板

lolin nodemcu v3

Nodemcu示例教程

如何使用lua访问针脚

以下示例显示了如何在ESP模块上访问引脚 使用与Arduino C代码类似的命令上传它们 esplorer。这些命令已在Lolin Nodemcu V3板上进行了测试。

警告: 在Lua中,PIN信息与Arduino不同。 PIN数指的是电路板上的标签.D4是引脚4。
笔记: 销4附接到内置的LED和 这被拉高,所以发送零打开它。这是发现的 trial and error.
- nodemcu的例子
别针
= 4 GPIO.Mode.(别针,gpio.output.) gpio.write.(别针,gpio.low.) 打印(gpio.read.(别针)))

将上面保存为文件:LED_ON.LUA

上传Lua文件的说明

您可以了解如何使用esplorer上传Lua程序 这里.

LED Flash.

用Lua闪烁内置的LED

这里'■闪存内置LED的程序。这是你的方式 最初会想到写作 C - 非事件驱动的代码。即使它有效't use this 一般来说。您需要在释放处理时间和释放处理时间和 不会使不退出的循环(请参阅下nba竞猜例子用于活动驱动 timer programming).

- nodemcu的例子
LEDPIN.
= 4 - 声明LED引脚否。 延误 = 500000 - 设置微秒延迟。这是0.5秒 GPIO.Mode.(LEDPIN.,gpio.output.) - 设置LED引脚作为GPIO输出引脚
尽管
(1) - 在循环时定义无限 gpio.write(LEDPIN.,gpio.high.) - 设置LED引脚高I.E.SED OFF tmr.delay(延误) - 定时器延迟 gpio.write(LEDPIN.,gpio.low.) - 设置LED引脚LOW I. LED ON tmr.delay(延误) - 定时器延迟 tmr.wdclr() - 停止看门狗重置MCU 结尾

将上面保存为文件:LED_FLASH1.LUA

请注意,TMR.WDCLR()函数用于停止看门狗 重置它在此功能中需要它以停止重置,因为它是 不是事件驱动 - 请参阅下nba竞猜例子,用于事件驱动闪烁。

事件驱动Lua LED闪烁:Nodemcu示例

以前的代码示例不使用事件驱动编程所以 让我们写它Lua应该使用计时器使用lua来创建nba竞猜 将触发LED闪烁的事件。

注意下面的Lua脚本为Newer Lua SDK运行>2.1.0。 - 操作。

- nodemcu的例子
- 事件驱动编程
延迟 = 400 LEDPIN. = 4 LEDSTATE. = 0 GPIO.Mode.(LEDPIN.,gpio.output.) 功能 脚根() 如果 (LEDSTATE.) 然后 gpio.write.(LEDPIN.,gpio.low.) 打印(0) 别的 gpio.write.(LEDPIN.,gpio.high.) 打印(1) 结尾 LEDSTATE. = 不是 LEDSTATE. 结尾
- OO调用方法 当地的 mytimer.. = TMR.CREATE.() mytimer..:登记(延迟, tmr.alarm._auto., 功能 () 脚根() 结尾) mytimer..:开始()

将上面保存为文件:LED_FLASH2.LUA

事件驱动程序(计时器)位于代码的末尾。

首先创建nba竞猜计时器对象'mytimer'。然后定时器在延迟时间注册,重复的类型 - Alarm_Auto意味着永远重复此计时器活动。

接下来是功能 在计时器触发时调用的tog。然后将计时器启动。 You can use 'mytimer:alarm'而不是注册并开始,这都是 如果需要,请注册并启动计时器。

因此,在此代码中,计时器在设置为400ms的时延速率下重复调用函数tog()。

找到接入点

查找可见网络或接入点

此脚本允许您查看本地网络名称(SSID)和其他相关 信息。它还显示了任何本地网络的信号强度, 这可能有助于检查您是否有nba竞猜附近的死区 your own Wifi setup.

- nodemcu的例子 - 获取访问点数据 station_cfg.= {SSID..="SSID",PWD="password"} station_cfg..save.=真的 wifi.sta.config(station_cfg.) - //github.com/nodemcu/nodemcu-firmware/blob/master/docs/en/modules/wifi.md - 打印容易读取的AP列表 功能 listap.(t) - (SSID:Authmode,RSSI,BSSID,频道) 打印("\n".. string.rep.(" ",32-4).."ssid \ t \ t \ t \ t \ t rssi \ t rssi \ t \ tauthmode \ tchannel") 为了 BSSID.,v (t) 当地的 SSID.., rssi., authmode., 渠道 = string.match.(v, "([^,] +),([^,] +),([^,] +),([^,] *)") 打印(string.format.("%32s",SSID..).."\t".. BSSID... "\t ".. rssi... "\t\t".. authmode... "\t\t\t".. 渠道) 结尾 打印("---------") 为了 BSSID.,v (t) 打印(BSSID.,v) 结尾 结尾

wifi.sta.getap.(1,listap.)

将文件保存为wifi_getap.lua。

从getAP()函数返回的数据是nba竞猜具有2的表 数据列。这是左边的BSSI的原始数据和所有 右边的其他数据:

40:0d:10:42:9f:09	VM9253421,-87,4,1
52:0d:10:42:9f:09	Virgin Media,-86,5,1
78:3e:53:ab:ca:96	SKY7C621,-88,3,6
24:a7:dc:50:5a:a2	SKY6F103,-92,3,1
00:13:f7:ca:01:bb	SMC,-90,1,3
0c:f9:c0:4d:d9:66	SKY1BE56,-92,3,6
cc:2d:21:0b:bd:81	NOVA_BD78,-92,4,6
84:1b:5e:a5:69:82	virginmedia3134410,-96,4,6
50:6a:03:1e:61:68	VM989231-2G,-89,4,6
8a:30:d9:61:27:76	BTWifi-with-FON,-85,0,1
24:a7:dc:6b:45:e2	SKY7C621,-88,3,6
84:1b:5e:a7:cf:62	virginmedia1684506,-89,4,11
d2:05:c2:3a:8f:01	Virgin Media,-91,5,1
38:a6:ce:5e:98:de	SKY6F103,-86,3,11
bc:30:d9:61:27:75	BTHub6-2MX3,-84,3,1
cc:2d:21:0b:bd:89	NOVA_BD78,-92,4,6
52:0d:10:df:bd:99	VM-guest3451593,-91,4,1

Lua String匹配的说明

关于Lua的nba竞猜有趣的事情是职能可以返回 多个值。以下字符串匹配返回所有常规 表达式匹配,顺序将它们放入变量SSID,RSSI, authmode, channel.

本地SSID,RSSI,authmode,channel = string.match(v, "([^,] +),([^,] +),([^,] +),([^,] *)")        

这意味着您可以编写非常紧凑的代码,但您需要了解Regexp(如果可能!)。

此工具是测试Regexp表达式的有用方式: http://myregexp.com/

克莱特'^'意味着不在这种情况下,所以要找到的字符是 [^,] +任何不是逗号的东西。加号是至少一场比赛 must be found.

添加括号和尾随逗号([^,] +),表示下nba竞猜字符必须是逗号。括号 讲述函数将内容返回为匹配字符串。

因此,第nba竞猜匹配在右侧列出的第nba竞猜元素 数据(并忽略逗号)即ssid。下nba竞猜匹配是一样的, 并找到信号强度,下nba竞猜匹配也是一样的, 找到authmode。

最后一场比赛([^,] *)。 *表示抓住任何或零匹配。自从 没有逗号^,它与将其余字符的其余部分分配给通道。

简单的网络服务器

使用eSplorer的简单网页服务器

将SSID和密码设置为您的WiFi名称和密码。

- nodemcu的例子
- 简单的网页服务器

wifi.setMode.(wifi.station.)
station_cfg.= {SSID..="SSID",PWD="password"} station_cfg..save.=真的 wifi.sta.config(station_cfg.) SRV.=Net.Createserver(net.tcp.) SRV.:(80,功能(骗子) 骗子:("receive",功能(骗子,有效载荷) 打印(有效载荷) 骗子:发送("<h1>这是nba竞猜简单的webserver</h1>") 骗子:发送("<h2>Hello</h2>") 骗子:发送("你好,lolin nodemcu v3。") 结尾) 结尾)

将上面文本保存为simple_webserver.lua。

现在转到路由器并找出分配给ESP的IP地址 模块(或使用以下其他示例所示的更多Lua代码 此)然后转到浏览器并键入IP进入URL栏和 你应该看到这样的东西(IP地址将不同 your system):

简单esp8266 Web服务器

担任网页。

注意:要将WebServer停止作为程序指令而不是硬重置使用Lua代码:


net.server:close()

从nodemcu重置页面

要使Nodemcu从重置服务页面,所以需要放置 但是,将现有文件放入init.lua中的init.lua函数 you won'能够用不同的程序闪现它 - 文件将 立即执行,你赢了'T能够从eSplorer接口重新编程ESP模块。相反,你必须 重新闪烁芯片 使用原始固件。

要完成此操作,您需要延迟函数的开始 执行。这是通过使用延迟6秒的计时器来完成的 在开始之前。这使您有时间发送命令 tmr.stop() so it 永远不会达到执行功能。你可以找到nba竞猜方便的按钮 在eSporer中的“命令”选项卡中为此。

所需的计时器命令是:

打印("即将在10秒内启动nba竞猜简单的web服务器") tmr.alarm.(0,6000,0,功能() 做file.("simple_webserver.lua") 结尾)

因此,将上面的代码保存为init.lua

笔记: 您还可以在终端窗口中看到数据请求 浏览器i.e.刷新浏览器页面时(或作为它 保持活力模式自动刷新)。

现在按ESP模块上的REST按钮并刷新浏览器 - 找不到页面。等待>10秒钟并刷新以查看页面。 当ESP模块醒来时,它也会刷新,因为它在 keep-alive mode.

现在尝试恢复对ESP模块的控制 - 通过重置和发出命令 tmr.stop()

您可能会看到您可以读取按钮输入并将输出数据更改为使用 GPIO.READ(PIN)并采取行动结果。这将是基础 制作网页指示来自ESP模块的数据。来自传感器 或按钮按等。

停止init.lua.

等待init.lua的动作的另一种方法是使用命令删除文件:

file.remove("init.lua")

WebServer开始倒计时

此脚本与最后nba竞猜显示相同的作业,除了它显示 在WebServer启动之前,您有多长时间。倒计时是输出的 到串行监视器。

- nodemcu的例子 - Web服务器的倒计时 打印("\ nabout在10秒内启动nba竞猜简单的web服务器") 数数 = 6 打印("\n") 功能 show_count.() 数数 = 数数 - 1 如果 (数数<=0) 然后 倒数:未注册() 做file.("simple_webserver.lua") 打印("Starting Server"); 别的 Buf. = toString.(数数).. "Web服务器启动秒" 打印(Buf.) 结尾 结尾 倒数 = TMR.CREATE.() 倒数:警报(1000, tmr.alarm._auto., 功能() show_count.() 结尾)

将上面的文件保存为init.lua覆盖上nba竞猜文件。

找出Nodemcu IP地址

查找IP地址(新风格Nodemcu库)

以下LUA脚本运行以前的Web服务器脚本以启动a connection. 它等待直到找到IP地址并打印出来。说明如何 定时器对象使用对象面向的方法来创建它和 unregister it.

ESP8266 Nodemcu实现中有7个定时器编号为0 到6.在上面的旧代码中,您必须选择要使用的号码 - 这意味着你必须跟踪数字并可能导致 assignment errors.

在下面的新代码中没有数字 - 下nba竞猜计时器 分配。这些似乎是软件定时器,所以还有超过 7.尝试创建超过7个定时器对象并查看。

- nodemcu的例子
- 查找已分配的IP地址。 -- - 将定时器启动以定期检查IP - 如果它已经改变了nil - 那么 - 显示IP地址,计时器停止 - 释放其他用途。 -- -- oo timer method
做file.("simple_webserver.lua") 当地的 Iptimer. = TMR.CREATE.() Iptimer.:警报(1000, 1, 功能() 查看() 结尾)

功能 查看() 如果 wifi.sta.getip.() ==. 然后 打印("Connecting to AP...") 别的 打印("IP: ",wifi.sta.getip.()) Iptimer.:未注册() 结尾 结尾

将文件保存为find_ap.lua

这是典型的输出(您的不同)
> Connecting to AP...
Connecting to AP...
Connecting to AP...
Connecting to AP...
Connecting to AP...
Connecting to AP...
IP: 	192.168.0.19	255.255.255.0	192.168.0.1
左值是指定的IP,后跟网络掩码,网关IP。

使用ESP模块控制输出>>>
<<<返回安装eSplorer



新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。




隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部