-
UID:1387872
-
- 注册时间2013-03-04
- 最后登录2023-01-27
- 在线时间1009小时
-
-
访问TA的空间加好友用道具
|
本来该发到 单片机板块的 那边人台少了。。 因为对编程0基础。。遇到很大阻力 感谢@ elecfunwb老哥提供样例 并且耐心讲解 脚本语言的相关功能。。 因为不懂编程,没有系统性的了解过。在代码书写规则方面,停滞了很久。3天时间有2天都是因为书写问题导致编译不通过。。然后百度查看样例才发现这些小问题。。 经过几天的排查。。终于把这些问题搞定了。。基础很重要呀。。不然像我临时抱佛脚。耽误太多时间在基础语法上面了。 感谢坛友elecfunwb的耐心指导,以上功能已基本实现。期间遇到各种基本语法性问题 耽误了很多时间。 如果要直接用下面代码,请注意自己的模块io口默认情况是拉高还是拉低了的。如果出现该关的时候变成开了 就请调换下面代码中的low与HIGH的位置。wifi.setmode(wifi.STATION)wifi.sta.config("WiFi名字","密码")--你家里的路由或者手机开热点让模块链接。print(wifi.sta.getip())led1 = 12led2 = 04 --这个是模块的io口号码,你看看你买的模块上面有哪些口可以已用知己改后面的号码。gpio.mode(led1, gpio.OUTPUT)gpio.mode(led2, gpio.OUTPUT)gpio.write(led1, gpio.HIGH)gpio.write(led2, gpio.HIGH)local aif (srv~=nil) then srv:close()endsrv=net.createServer(net.TCP)srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = "" print(request) local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP") if(method == nil)then _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP") end local _mode, _time, t if (vars ~= nil)then _, _, _mode, _time = string.find(vars, "(%w+)=(%d+)&*") end if(_mode == "m1")then _, _, a = string.find(vars, "&*ZS=(%d+)") t=_time*1000 print(t,a) print("mode1") tmr.stop(0) tmr.alarm(0,t,1,AlarmMode1) elseif(_mode == "m2")then print("mode2") t=_time*1000 tmr.stop(0) gpio.write(led1, gpio.LOW) tmr.delay(1000000) gpio.write(led2, gpio.LOW) tmr.alarm(0,t,0, function() gpio.write(led1, gpio.HIGH) gpio.write(led2, gpio.HIGH) end ) elseif(_mode == "stop")then print("stop") tmr.stop(0) gpio.write(1, gpio.HIGH) gpio.write(2, gpio.HIGH) end buf = buf.."<h1> Hello, NodeMcu.</h1>" buf = buf.."延时<form><input type=\"text\" name=\"m1\" value=\"1\" pattern=\"[0-9]{2,4}\">秒 <input type=\"text\" name=\"ZS\" value=\"\" pattern=\"[0-9]{1,4}\">张 <input type=\"submit\" value=\"延时\" ></form>" buf = buf.."<form><input type=\"text\" name=\"m2\" value=\"2\" pattern=\"[0-9]{1,4}\">秒 <input type=\"submit\" value=\"B门\" ></form>" buf = buf.."<form><dir style=\"display: none;\"><input name=\"stop\" value=\"1\"></dir><input type=\"submit\" value=\"停止\" ></form>" client:send(buf) end) conn:on("sent", function (c) c:close() end)end)function AlarmMode1() gpio.write(led1, gpio.LOW) tmr.delay(1000000) gpio.write(led2, gpio.LOW) tmr.delay(1000) gpio.write(led1, gpio.HIGH) gpio.write(led2, gpio.HIGH) a=a-1 print(a) if(a==0)then tmr.stop(0) endend模块上面就只需要,刷nodemcu 然后将上面的代码保持为init.lua文件 烧录到模块中去就行了(注意骚绿位置)然后外部电路很简单 我就口述一下就行了。。两个光耦串联,输入端(接模块一端)中间通过电阻接正极 两边分别接led1和led2对应的引脚 然后光耦另一边 同样窜连 中间接快门线的地线 两边分别接对焦线与快门释放线(对应关系请自己测试,就两根线不对就换一下) 就这样,我还没动手做外部电路。。不过应该没问题吧!光耦不行大不了换三极管或者续电器来触发快门线。[ 此帖被handsome在2018-03-31 21:50重新编辑 ]
|