NodeMcu
+NodeMcu
A lua based firmware for wifi-soc esp8266
-version 0.9.2 build 2014-11-19
+version 0.9.2 build 2014-11-20
Change log
@@ -1066,98 +1131,106 @@ for most esp8266 modules, just pull GPIO0 down and restart.braudrate:9600
Start play
Connect to your ap
- print(wifi.sta.getip())
- --0.0.0.0
- wifi.setmode(wifi.STATION)
- wifi.sta.config("SSID","password")
- print(wifi.sta.getip())
- --192.168.18.110
-
+print(wifi.sta.getip()) + --0.0.0.0 + wifi.setmode(wifi.STATION) + wifi.sta.config("SSID","password") + print(wifi.sta.getip()) + --192.168.18.110 +
Manipulate hardware like a arduino
- pin = 1
- gpio.mode(pin,gpio.OUTPUT)
- gpio.write(pin,gpio.HIGH)
- print(gpio.read(pin))
-
+pin = 1 + gpio.mode(pin,gpio.OUTPUT) + gpio.write(pin,gpio.HIGH) + print(gpio.read(pin)) +
Write network application in nodejs style
- -- A simple http client
- conn=net.createConnection(net.TCP, false)
- conn:on("receive", function(conn, payload) print(c) end )
- conn:connect(80,"115.239.210.27")
- conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n"
- .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
-
+-- A simple http client + conn=net.createConnection(net.TCP, 0) + conn:on("receive", function(conn, payload) print(c) end ) + conn:connect(80,"115.239.210.27") + conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n" + .."Connection: keep-alive\r\nAccept: */*\r\n\r\n") +
Or a simple http server
- -- A simple http server
- srv=net.createServer(net.TCP)
- srv:listen(80,function(conn)
- conn:on("receive",function(conn,payload)
- print(payload)
- conn:send("<h1> Hello, NodeMcu.</h1>")
- end)
- end)
-
+-- A simple http server + srv=net.createServer(net.TCP) + srv:listen(80,function(conn) + conn:on("receive",function(conn,payload) + print(payload) + conn:send("<h1> Hello, NodeMcu.</h1>") + end) + end) +
Do something shining
- function led(r,g,b)
- pwm.setduty(0,r)
- pwm.setduty(1,g)
- pwm.setduty(2,b)
- end
- pwm.setup(0,500,50)
- pwm.setup(1,500,50)
- pwm.setup(2,500,50)
- pwm.start(0)
- pwm.start(1)
- pwm.start(2)
- led(50,0,0) -- red
- led(0,0,50) -- blue
-
+function led(r,g,b) + pwm.setduty(0,r) + pwm.setduty(1,g) + pwm.setduty(2,b) + end + pwm.setup(0,500,50) + pwm.setup(1,500,50) + pwm.setup(2,500,50) + pwm.start(0) + pwm.start(1) + pwm.start(2) + led(50,0,0) -- red + led(0,0,50) -- blue +
And blink it
- lighton=0
- tmr.alarm(1000,1,function()
- if lighton==0 then
- lighton=1
- led(50,50,50)
- else
- lighton=0
- led(0,0,0)
- end
- end)
-
+lighton=0 + tmr.alarm(1000,1,function() + if lighton==0 then + lighton=1 + led(50,50,50) + else + lighton=0 + led(0,0,0) + end + end) +
If you want to run something when system started
- --init.lua will be excuted
- file.open("init.lua","w")
- file.writeline([[print("Hello, do this at the beginning.")]])
- file.close()
- node.restart() -- this will restart the module.
-
+--init.lua will be excuted + file.open("init.lua","w") + file.writeline([[print("Hello, do this at the beginning.")]]) + file.close() + node.restart() -- this will restart the module. +
With below code, you can telnet to your esp8266 now
- -- a simple telnet server
- s=net.createServer(net.TCP)
- s:listen(2323,function(c)
- con_std = c
- function s_output(str)
- if(con_std~=nil)
- then con_std:send(str)
- end
- end
- node.output(s_output, 0) -- re-direct output to function s_ouput.
- c:on("receive",function(c,l)
- node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
- end)
- c:on("disconnection",function(c)
- con_std = nil
- node.output(nil) -- un-regist the redirect output function, output goes to serial
- end)
- end)
-
+-- a simple telnet server + s=net.createServer(net.TCP) + s:listen(2323,function(c) + con_std = c + function s_output(str) + if(con_std~=nil) + then con_std:send(str) + end + end + node.output(s_output, 0) -- re-direct output to function s_ouput. + c:on("receive",function(c,l) + node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line + end) + c:on("disconnection",function(c) + con_std = nil + node.output(nil) -- un-regist the redirect output function, output goes to serial + end) + end) +
Check this out
Tencent QQ group: 309957875
diff --git a/README.md b/README.md
index 66b74d9e..f1448815 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# **NodeMcu** #
###A lua based firmware for wifi-soc esp8266
-version 0.9.2 build 2014-11-19
+version 0.9.2 build 2014-11-20
# Change log
[change log](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_en#change_log)
[变更日志](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_cn#change_log)
@@ -76,7 +76,7 @@ braudrate:9600
```lua
-- A simple http client
- conn=net.createConnection(net.TCP, false)
+ conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(c) end )
conn:connect(80,"115.239.210.27")
conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n"
diff --git a/nodemcu_api_cn.html b/nodemcu_api_cn.html
index dbeeb515..19db1b99 100644
--- a/nodemcu_api_cn.html
+++ b/nodemcu_api_cn.html
@@ -1014,11 +1014,81 @@ body .markdown-body
page-break-after: avoid;
}
}
-
nodeMcu API说明
+nodeMcu API说明
-版本 0.9.2 build 2014-11-19
+版本 0.9.2 build 2014-11-20
变更日志:
+2014-11-20
+修正tmr.delay,支持2s以上的延时,但是长延时可能会引起beacon timer out,导致与AP之间重新连接。
+增加tmr.wdclr(),用来重置看门狗计数器,用在长循环中,以防芯片因看门狗重启。
+修正net模块UDP无法连接问题。
+createServer(net.TCP, timeout)函数增加连接超时参数设置。
2014-11-19
增加adc模块,adc.read(0)读取adc的值。
wifi模块增加wifi.sta.getap() 函数,用于获取ap列表。
返回值
nil
示例
- node.restart();
-
+node.restart(); +
参见
@@ -1121,8 +1192,9 @@ node模块中删除了log函数。返回值
nil
示例
- node.dsleep(us);
-
+node.dsleep(us); +
参见
@@ -1137,8 +1209,9 @@ node模块中删除了log函数。返回值
number:芯片ID
示例
- id = node.chipid();
-
+id = node.chipid(); +
参见
@@ -1153,8 +1226,9 @@ node模块中删除了log函数。返回值
number: 系统剩余内存字节数
示例
- heap_size = node.heap();
-
+heap_size = node.heap(); +
参见
@@ -1171,8 +1245,9 @@ function(): 用户自定义的按键回调函数。 如果为nil, 则取消用返回值
nil
示例
- node.key("long", function(){print('hello world')})
-
+node.key("long", function(){print('hello world')}) +
参见
@@ -1188,9 +1263,10 @@ High: LED打开时间,单位:毫秒,时间分辨率:80~100ms返回值
nil
示例
- -- LED常亮.
- node.led(0);
-
+-- LED常亮. + node.led(0); +
参见
@@ -1206,9 +1282,10 @@ High: LED打开时间,单位:毫秒,时间分辨率:80~100ms返回值
nil
示例
- -- 注意:该函数不支持在命令行中使用。
- sk:on("receive", function(conn, payload) node.input(payload) end)
-
+-- 注意:该函数不支持在命令行中使用。 + sk:on("receive", function(conn, payload) node.input(payload) end) +
参见
@@ -1224,13 +1301,14 @@ serial_debug: 1:将输出送至串口; 0:输出不送至串口返回值
nil
示例
- function tonet(str)
- sk:send(str)
- -- print(str) 错误!!! 千万不要在此函数中再使用print函数
- -- 因为这样会导致函数的嵌套调用!!
- end
- node.ouput(tonet, 1) -- serial also get the lua output.
-
+function tonet(str) + sk:send(str) + -- print(str) 错误!!! 千万不要在此函数中再使用print函数 + -- 因为这样会导致函数的嵌套调用!! + end + node.ouput(tonet, 1) -- serial also get the lua output. +
参见
@@ -1246,9 +1324,10 @@ serial_debug: 1:将输出送至串口; 0:输出不送至串口返回值
nil
示例
- -- 删除foo.lua文件
- file.remove("foo.lua")
-
+-- 删除foo.lua文件 + file.remove("foo.lua") +
参见
- file.open()
@@ -1271,11 +1350,12 @@ mode:
返回值
nil
示例
- -- 打开'init.lua',并打印文件的第一行。
- file.open("init.lua", "r")
- print(file.readline())
- file.close()
-
+-- 打开'init.lua',并打印文件的第一行。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +
参见
- file.close()
@@ -1291,11 +1371,12 @@ mode:
返回值
nil
示例
- -- 打开'init.lua',并打印文件的第一行,然后关闭文件。
- file.open("init.lua", "r")
- print(file.readline())
- file.close()
-
+-- 打开'init.lua',并打印文件的第一行,然后关闭文件。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +
参见
- file.open()
@@ -1312,11 +1393,12 @@ mode:
逐行返回文件内容。返回值末尾包含EOL(‘\n’)
如果读到EOF返回nil。
示例
- -- 打开'init.lua',读取并打印文件的第一行,然后关闭文件。
- file.open("init.lua", "r")
- print(file.readline())
- file.close()
-
+-- 打开'init.lua',读取并打印文件的第一行,然后关闭文件。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +
参见
- file.open()
@@ -1333,12 +1415,13 @@ mode:
true: 写入成功
nil: 写入失败
示例
- -- 以'a+'的模式打开'init.lua'
- file.open("init.lua", "a+")
- -- 将'foo bar'写到文件的末尾
- file.writeline('foo bar')
- file.close()
-
+-- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.writeline('foo bar') + file.close() +
参见
- file.open()
@@ -1355,12 +1438,13 @@ nil: 写入失败
true: 写入成功
nil: 写入失败
示例
- -- 以'a+'的模式打开'init.lua'
- file.open("init.lua", "a+")
- -- 将'foo bar'写到文件的末尾
- file.writeline('foo bar')
- file.close()
-
+-- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.writeline('foo bar') + file.close() +
参见
- file.open()
@@ -1376,13 +1460,14 @@ nil: 写入失败
返回值
nil
示例
- -- 以'a+'的模式打开'init.lua'
- file.open("init.lua", "a+")
- -- 将'foo bar'写到文件的末尾
- file.write('foo bar')
- file.flush()
- file.close()
-
+-- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.write('foo bar') + file.flush() + file.close() +
参见
- file.open()
@@ -1403,17 +1488,18 @@ offset: default 0
成功: 返回当前的文件读写位置
失败: 返回nil
示例
- -- 以'a+'的模式打开'init.lua'
- file.open("init.lua", "a+")
- -- 将'foo bar'写到文件的末尾
- file.write('foo bar')
- file.flush()
- --将文件读写位置设置在文件开始
- file.seek("set")
- --读取并打印文件的第一行
- print(file.readline())
- file.close()
-
+-- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.write('foo bar') + file.flush() + --将文件读写位置设置在文件开始 + file.seek("set") + --读取并打印文件的第一行 + print(file.readline()) + file.close() +
参见
- file.open()
@@ -1429,11 +1515,12 @@ offset: default 0
返回值
返回包含{文件名:文件大小}的lua table
示例
- l = file.list();
- for k,v in pairs(l) do
- print("name:"..k..", size:"..v)
- end
-
+l = file.list(); + for k,v in pairs(l) do + print("name:"..k..", size:"..v) + end +
参见
@@ -1451,8 +1538,9 @@ offset: default 0返回值
返回设置之后的mode值
示例
- wifi.setmode(wifi.STATION)
-
+wifi.setmode(wifi.STATION) +
参见
@@ -1467,8 +1555,9 @@ offset: default 0返回值
返回wifi的工作模式
示例
- print(wifi.getmode())
-
+print(wifi.getmode()) +
参见
@@ -1484,8 +1573,9 @@ succeed_callback: 配置成功的回调函数,配置成功并连接至AP后调返回值
nil
示例
- wifi.startsmart(6, cb())
-
+wifi.startsmart(6, cb()) +
参见
@@ -1500,8 +1590,9 @@ succeed_callback: 配置成功的回调函数,配置成功并连接至AP后调返回值
nil
示例
- wifi.stopsmart()
-
+wifi.stopsmart() +
参见
@@ -1518,8 +1609,9 @@ password: 字符串,长度小于64字节。返回值
nil
示例
- wifi.sta.config("myssid","mypassword")
-
+wifi.sta.config("myssid","mypassword") +
参见
- wifi.sta.connect()
@@ -1535,8 +1627,9 @@ password: 字符串,长度小于64字节。
返回值
nil
示例
- wifi.sta.connect()
-
+wifi.sta.connect() +
参见
- wifi.sta.disconnect()
@@ -1552,8 +1645,9 @@ password: 字符串,长度小于64字节。
返回值
nil
示例
- wifi.sta.disconnect()
-
+wifi.sta.disconnect() +
参见
- wifi.sta.config()
@@ -1569,8 +1663,9 @@ password: 字符串,长度小于64字节。
返回值
nil
示例
- wifi.sta.autoconnect()
-
+wifi.sta.autoconnect() +
参见
- wifi.sta.config()
@@ -1587,9 +1682,10 @@ password: 字符串,长度小于64字节。
返回值
ip地址字符串,如:”192.168.0.111”
示例
- -- print current ip
- print(wifi.sta.getip())
-
+-- print current ip + print(wifi.sta.getip()) +
参见
@@ -1604,9 +1700,10 @@ password: 字符串,长度小于64字节。返回值
mac地址字符串,如:”18-33-44-FE-55-BB”
示例
- -- 打印当前的mac地址
- print(wifi.sta.getmac())
-
+-- 打印当前的mac地址 + print(wifi.sta.getmac()) +
参见
@@ -1622,14 +1719,15 @@ password: 字符串,长度小于64字节。返回值
nil
示例
- -- print ap list
- function listap(t)
- for k,v in pairs(t) do
- print(k.." : "..v)
- end
- end
- wifi.sta.getap(listap)
-
+-- print ap list + function listap(t) + for k,v in pairs(t) do + print(k.." : "..v) + end + end + wifi.sta.getap(listap) +
参见
@@ -1643,17 +1741,19 @@ password: 字符串,长度小于64字节。参数
cfg: 设置AP的lua table
示例:
- cfg={}
- cfg.ssid="myssid"
- cfg.pwd="mypwd"
- wifi.ap.setconfig(cfg)
-
+cfg={} + cfg.ssid="myssid" + cfg.pwd="mypwd" + wifi.ap.setconfig(cfg) +
返回值
nil
示例
- wifi.ap.config(ssid, 'password')
-
+wifi.ap.config(ssid, 'password') +
参见
@@ -1668,8 +1768,9 @@ password: 字符串,长度小于64字节。返回值
ip地址字符串,如:”192.168.0.111”
示例
- wifi.ap.getip()
-
+wifi.ap.getip() +
参见
@@ -1684,8 +1785,9 @@ password: 字符串,长度小于64字节。返回值
mac地址字符串,如:”1A-33-44-FE-55-BB”
示例
- wifi.ap.getmac()
-
+wifi.ap.getmac() +
参见
@@ -1701,9 +1803,10 @@ password: 字符串,长度小于64字节。返回值
nil
示例
- -- delay 100us
- tmr.delay(100)
-
+-- delay 100us + tmr.delay(100) +
参见
@@ -1718,9 +1821,10 @@ password: 字符串,长度小于64字节。返回值
uint32: value of counter
示例
- -- 打印计数器的当前值。
- print(tmr.now())
-
+-- 打印计数器的当前值。 + print(tmr.now()) +
参见
@@ -1738,9 +1842,10 @@ function do(): 定时器到时回调函数。返回值
nil
示例
- -- 每1000ms输出一个hello world
- tmr.alarm(1000, 1, function() print("hello world") end )
-
+-- 每1000ms输出一个hello world + tmr.alarm(1000, 1, function() print("hello world") end ) +
参见
@@ -1755,537 +1860,573 @@ function do(): 定时器到时回调函数。返回值
nil
示例
- -- 每隔1000ms打印hello world
- tmr.alarm(1000, 1, function() print("hello world") end )
+ -- 每隔1000ms打印hello world
+ tmr.alarm(1000, 1, function() print("hello world") end )
- -- 其它代码
+ -- 其它代码
+
+ -- 停止闹钟
+ tmr.stop()
+
- -- 停止闹钟
- tmr.stop()
-
参见
+ +tmr.wdclr()
+描述
+清除看门狗计数器。
语法
+tmr.wdclr()
+参数
+nil.
+返回值
+nil
+示例
+for i=1,10000 do + print(i) + tmr.wdclr() -- 一个长时间的循环或者事务,需内部调用tmr.wdclr() 清楚看门狗计数器,防止重启。 + end +
参见
+GPIO 模块
-常量
+常量
gpio.OUTPUT, gpio.INPUT, gpio.INT, gpio.HIGH, gpio.LOW
gpio.mode()
-描述
+描述
将pin初始化为GPIO并设置输入输出模式。
-语法
+语法
gpio.mode(pin, mode)
-参数
+参数
pin: 0~11, IO编号
mode: 取值为:gpio.OUTPUT or gpio.INPUT, or gpio.INT(中断模式)
返回值
+返回值
nil
-示例
- -- 将GPIO0设置为输出模式
- gpio.mode(0, gpio.OUTPUT)
+示例
+ -- 将GPIO0设置为输出模式
+ gpio.mode(0, gpio.OUTPUT)
+
-
-参见
+参见
gpio.read()
-描述
+描述
读取管脚电平高低。
-语法
+语法
gpio.read(pin)
-参数
+参数
pin: 0~11, IO编号
-返回值
+返回值
number:0:低电平, 1:高电平。
-示例
- -- 读取GPIO0的电平
- gpio.read(0)
-
+示例
+-- 读取GPIO0的电平 + gpio.read(0) +
参见
+ +参见
gpio.write()
-描述
+描述
设置管脚电平
-语法
+语法
gpio.write(pin)
-参数
+参数
pin: 0~11, IO编号
level: gpio.HIGH or gpio.LOW
返回值
+返回值
nil
-示例
- -- 设置GPIP1为输出模式,并将输出电平设置为高
- pin=1
- gpio.mode(pin, gpio.OUTPUT)
- gpio.write(pin, gpio.HIGH)
-
+示例
+-- 设置GPIP1为输出模式,并将输出电平设置为高 + pin=1 + gpio.mode(pin, gpio.OUTPUT) + gpio.write(pin, gpio.HIGH) +
参见
+ +参见
gpio.trig()
-描述
+描述
设置管脚中断模式的回调函数。
-语法
+语法
gpio.trig(pin, type, function(level))
-参数
+参数
pin: 0~11, IO编号
type: 取值为”up”, “down”, “both”, “low”, “high”, 分别代表上升沿、下降沿、双边沿、低电平、高电平触发方式。
function(level): 中断触发的回调函数,GPIO的电平作为输入参数。如果此处没有定义函数,则使用之前定义的回调函数。
返回值
+返回值
nil
-示例
- -- 使用GPIO0检测输入脉冲宽度
- pulse0 = 0
- du = 0
- gpio.mode(0,gpio.INT)
- function pin0cb(level)
- du = tmr.now() – pulse0
- print(du)
- pulse0 = tmr.now()
- if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
- end
- gpio.trig(0, "down ",pin0cb)
+示例
+ -- 使用GPIO0检测输入脉冲宽度
+ pulse0 = 0
+ du = 0
+ gpio.mode(0,gpio.INT)
+ function pin0cb(level)
+ du = tmr.now() – pulse0
+ print(du)
+ pulse0 = tmr.now()
+ if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
+ end
+ gpio.trig(0, "down ",pin0cb)
+
-
-参见
+参见
PWM模块
pwm.setup()
-描述
+描述
设置管脚为pwm模式,最多支持6个pwm。
-语法
+语法
pwm.setup(pin, clock, duty)
-参数
+参数
pin: 0~11, IO编号
clock: 1~500, pwm频率
duty: 0~100, pwm占空比,百分比表示。
返回值
-nil
-示例
- -- 将管脚0设置为pwm输出模式,频率100Hz,占空比50-50
- pwm.setup(0, 100, 50)
-
-
-参见
- - -pwm.close()
-描述
-退出pwm模式。
-语法
-pwm.close(pin)
-参数
-pin: 0~11, IO编号
返回值
nil
示例
- pwm.close(0)
-
+-- 将管脚0设置为pwm输出模式,频率100Hz,占空比50-50 + pwm.setup(0, 100, 50) +
参见
- -pwm.start()
+ +pwm.close()
描述
-pwm启动,可以在对应的GPIO检测到波形。
+退出pwm模式。
语法
-pwm.start(pin)
+pwm.close(pin)
参数
pin: 0~11, IO编号
返回值
nil
示例
- pwm.start(0)
-
+pwm.close(0) +
参见
- - -pwm.stop()
+ + +pwm.start()
描述
-暂停pwm输出波形。
+pwm启动,可以在对应的GPIO检测到波形。
语法
-pwm.stop(pin)
+pwm.start(pin)
参数
pin: 0~11, IO编号
返回值
nil
示例
- pwm.stop(0)
-
+pwm.start(0) +
参见
- - -pwm.setclock()
+ + +pwm.stop()
描述
-设置pwm的频率
--Note: 设置pwm频率将会同步改变其他pwm输出的频率,当前版本的所有pwm仅支持同一频率输出。
暂停pwm输出波形。
语法
-pwm.setclock(pin, clock)
+pwm.stop(pin)
参数
-pin: 0~11, IO编号
-clock: 1~500, pwm周期
pin: 0~11, IO编号
返回值
nil
示例
- pwm.setclock(0, 100)
-
+pwm.stop(0) +
参见
+ + +pwm.setclock()
+描述
+设置pwm的频率
+-Note: 设置pwm频率将会同步改变其他pwm输出的频率,当前版本的所有pwm仅支持同一频率输出。
语法
+pwm.setclock(pin, clock)
+参数
+pin: 0~11, IO编号
+clock: 1~500, pwm周期
返回值
+nil
+示例
+pwm.setclock(0, 100) +
参见
pwm.getclock()
-描述
+描述
获取pin的pwm工作频率
-语法
+语法
pwm.getclock(pin)
-参数
+参数
pin: 0~11, IO编号
-返回值
+返回值
number:pin的pwm工作频率
-示例
- print(pwm.getclock(0))
-
+示例
+print(pwm.getclock(0)) +
参见
+ +参见
pwm.setduty()
-描述
+描述
设置pin的占空比。
-语法
+语法
pwm.setduty(pin, duty)
-参数
+参数
pin: 0~11, IO编号
duty: 0~100, pwm的占空比,以百分数表示
返回值
-nil
-示例
- pwm.setduty(0, 50)
-
-
-参见
- - -pwm.getduty()
-描述
-获取pin的pwm占空比。
-语法
-pwm.getduty(pin)
-参数
-pin: 0~11, IO编号
返回值
nil
示例
- -- D0 连接绿色led
- -- D1 连接蓝色led
- -- D2 连接红色led
- pwm.setup(0,500,50)
- pwm.setup(1,500,50)
- pwm.setup(2,500,50)
- pwm.start(0)
- pwm.start(1)
- pwm.start(2)
- function led(r,g,b)
- pwm.setduty(0,g)
- pwm.setduty(1,b)
- pwm.setduty(2,r)
- end
- led(50,0,0) -- led显示红色
- led(0,0,50) -- led显示蓝色
+ pwm.setduty(0, 50)
+
-
参见
+ + +pwm.getduty()
+描述
+获取pin的pwm占空比。
+语法
+pwm.getduty(pin)
+参数
+pin: 0~11, IO编号
+返回值
+nil
+示例
+-- D0 连接绿色led + -- D1 连接蓝色led + -- D2 连接红色led + pwm.setup(0,500,50) + pwm.setup(1,500,50) + pwm.setup(2,500,50) + pwm.start(0) + pwm.start(1) + pwm.start(2) + function led(r,g,b) + pwm.setduty(0,g) + pwm.setduty(1,b) + pwm.setduty(2,r) + end + led(50,0,0) -- led显示红色 + led(0,0,50) -- led显示蓝色 +
参见
net 模块
-常量
+常量
net.TCP, net.UDP
net.createServer()
-描述
-创建一个server。
-语法
-net.createServer(type, secure)
-参数
-type: 取值为:net.TCP 或者 net.UDP
-secure: 设置为true或者false, true代表安全连接,false代表普通连接。
返回值
-net.server子模块
-示例
- net.createServer(net.TCP, true)
-
-
-参见
- - -net.createConnection()
描述
-创建一个client。
+创建一个server。
语法
-net.createConnection(type, secure)
+net.createServer(type, timeout)
参数
type: 取值为:net.TCP 或者 net.UDP
-secure: 设置为true或者false, true代表安全连接,false代表普通连接。
返回值
net.server子模块
示例
- net.createConnection(net.UDP, false)
-
+net.createServer(net.TCP, 30) +
参见
+ + +net.createConnection()
+描述
+创建一个client。
+语法
+net.createConnection(type, secure)
+参数
+type: 取值为:net.TCP 或者 net.UDP
+secure: 设置为1或者0, 1代表安全连接,0代表普通连接。
返回值
+net.server子模块
+示例
+net.createConnection(net.UDP, 0) +
参见
net.server 子模块
listen()
-描述
+描述
侦听指定ip地址的端口。
-语法
+语法
net.server.listen(port,[ip],function(net.socket))
-参数
+参数
port: 端口号
ip:ip地址字符串,可以省略
function(net.socket): 连接创建成功的回调函数,可以作为参数传给调用函数。
返回值
-nil
-示例
- -- 创建一个server
- sv=net.createServer(net.TCP, false)
- -- server侦听端口80,如果收到数据将数据打印至控制台,并向远端发送‘hello world’
- sv:listen(80,function(c)
- c:on("receive", function(sck, pl) print(pl) end)
- c:send("hello world")
- end)
-
-
-参见
- - -close()
-描述
-关闭server
-语法
-net.server.close()
-参数
-nil
返回值
nil
示例
- -- 创建server
- sv=net.createServer(net.TCP, false)
- -- 关闭server
- sv:close()
-
+-- 创建一个server + sv=net.createServer(net.TCP, 30) -- 30s 超时 + -- server侦听端口80,如果收到数据将数据打印至控制台,并向远端发送‘hello world’ + sv:listen(80,function(c) + c:on("receive", function(sck, pl) print(pl) end) + c:send("hello world") + end) +
参见
+ +close()
+描述
+关闭server
+语法
+net.server.close()
+参数
+nil
+返回值
+nil
+示例
+-- 创建server + sv=net.createServer(net.TCP, 5) + -- 关闭server + sv:close() +
参见
+net.socket 子模块
connect()
-描述
+描述
连接至远端。
-语法
+语法
connect(port, ip)
-参数
+参数
port: 端口号
ip: ip地址字符串
返回值
+返回值
nil
-参见
+参见
send()
-描述
+描述
通过连接向远端发送数据。
-语法
+语法
send(string, function(sent))
-参数
+参数
string: 待发送的字符串
function(sent): 发送字符串后的回调函数。
返回值
+返回值
nil
-参见
+参见
on()
-描述
+描述
向事件注册回调函数。
-语法
+语法
on(event, function cb())
-参数
+参数
event: 字符串,取值为: “connection”, “reconnection”, “disconnection”, “receive”, “sent”
function cb(net.socket, [string]): 回调函数。第一个参数是socket.
如果事件是”receive”, 第二个参数则为接收到的字符串。
返回值
+返回值
nil
-示例
- sk=net.createConnection(net.TCP, false)
- sk:on("receive", function(sck, c) print(c) end )
- sk:connect(80,"192.168.0.66")
- sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
-
+示例
+sk=net.createConnection(net.TCP, 0) + sk:on("receive", function(sck, c) print(c) end ) + sk:connect(80,"192.168.0.66") + sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") +
参见
+ +参见
close()
-描述
+描述
关闭socket。
-语法
+语法
close()
-参数
+参数
nil
-返回值
+返回值
nil
-参见
+参见
dns()
-描述
+描述
获取当前域的ip
-语法
+语法
dns(domain, function(net.socket, ip))
-参数
+参数
domain: 当前域的名称
function (net.socket, ip): 回调函数。第一个参数是socket,第二个参数是当前域的ip字符串。
返回值
+返回值
nil
-参见
+参见
i2c模块
-常量
+常量
i2c.SLOW, i2c.TRANSMITTER, i2c. RECEIVER. FAST(400k)模式目前不支持。
i2c.setup()
-描述
+描述
初始化i2c。
-语法
+语法
i2c.setup(id, pinSDA, pinSCL, speed)
-参数
+参数
id = 0
pinSDA: 0~11, IO编号
pinSCL: 0~11, IO编号
speed: i2c.SLOW
返回值
+返回值
nil
-参见
+参见
i2c.start()
-描述
+描述
启动i2c传输。
-语法
+语法
i2c.start(id)
-参数
+参数
id = 0
-返回值
+返回值
nil
-参见
+参见
i2c.stop()
-描述
+描述
停止i2c传输。
-语法
+语法
i2c.stop(id)
-参数
+参数
id = 0
-返回值
+返回值
nil
-参见
+参见
i2c.address()
-描述
+描述
设置i2c地址以及读写模式。
-语法
+语法
i2c.address(id, device_addr, direction)
-参数
+参数
id=0
device_addr: 设备地址。
direction: i2c.TRANSMITTER:写模式;i2c. RECEIVER:读模式。
返回值
+返回值
nil
-参见
+参见
i2c.write()
-描述
+描述
向i2c写数据。数据可以是多个数字, 字符串或者lua table。
-语法
+语法
i2c.write(id, data1, data2,…)
-参数
+参数
id=0
data: 数据可以是多个数字, 字符串或者lua table。
返回值
+返回值
nil
-示例
- i2c.write(0, "hello", "world")
-
+示例
+i2c.write(0, "hello", "world") +
参见
+ +参见
i2c.read()
-描述
+描述
读取len个字节的数据。
-语法
+语法
i2c.read(id, len)
-参数
+参数
id=0
len: 数据长度。
返回值
+返回值
string:接收到的数据。
-示例
- id=0
- sda=1
- scl=0
+示例
+ id=0
+ sda=1
+ scl=0
- -- 初始化i2c, 将pin1设置为sda, 将pin0设置为scl
- i2c.setup(id,sda,scl,i2c.SLOW)
+ -- 初始化i2c, 将pin1设置为sda, 将pin0设置为scl
+ i2c.setup(id,sda,scl,i2c.SLOW)
- -- 用户定义函数:读取地址dev_addr的寄存器reg_addr中的内容。
- function read_reg(dev_addr, reg_addr)
- i2c.start(id)
- i2c.address(id, dev_addr ,i2c.TRANSMITTER)
- i2c.write(id,reg_addr)
- i2c.stop(id)
- i2c.start(id)
- i2c.address(id, dev_addr,i2c.RECEIVER)
- c=i2c.read(id,1)
- i2c.stop(id)
- return c
- end
+ -- 用户定义函数:读取地址dev_addr的寄存器reg_addr中的内容。
+ function read_reg(dev_addr, reg_addr)
+ i2c.start(id)
+ i2c.address(id, dev_addr ,i2c.TRANSMITTER)
+ i2c.write(id,reg_addr)
+ i2c.stop(id)
+ i2c.start(id)
+ i2c.address(id, dev_addr,i2c.RECEIVER)
+ c=i2c.read(id,1)
+ i2c.stop(id)
+ return c
+ end
- -- 读取0x77的寄存器0xAA中的内容。
- reg = read_reg(0x77, 0xAA)
- pirnt(string.byte(reg))
+ -- 读取0x77的寄存器0xAA中的内容。
+ reg = read_reg(0x77, 0xAA)
+ pirnt(string.byte(reg))
+
-
-参见
+参见
adc 模块
-常量
+常量
无
adc.read()
-描述
-读取adc的值,esp8266只有一个10bit adc,id为0,最大值1024
-语法
+描述
+读取adc的值,esp8266只有一个10bit adc,id为0,引脚为TOUT,最大值1024
+语法
adc.read(id)
-参数
+参数
id = 0
返回值
+返回值
adc 值 10bit,最大1024.
-