From 53e4120f73977eb544ad35ba9fa236506465bc67 Mon Sep 17 00:00:00 2001 From: Mizore Date: Tue, 31 Jan 2023 17:27:45 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0=E5=BC=80?= =?UTF-8?q?=E6=9C=BA=E6=97=B6=20netled=20=E7=9A=84=E5=91=BC=E5=90=B8?= =?UTF-8?q?=E7=81=AF=E6=95=88=E6=9E=9C,=20=E8=81=94=E7=BD=91=E5=90=8E?= =?UTF-8?q?=E5=8F=98=E6=88=90=E9=97=AA=E7=83=81=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/main.lua | 2 +- script/util_netled.lua | 64 +++++++++++++++++++++++++++++++----------- 2 files changed, 48 insertions(+), 18 deletions(-) diff --git a/script/main.lua b/script/main.lua index fea3a4c..ca909d6 100644 --- a/script/main.lua +++ b/script/main.lua @@ -74,7 +74,7 @@ sys.taskInit( -- 等待网络环境准备就绪 sys.waitUntil("IP_READY") - util_netled.blink(50, 50, 1000) + util_netled.init() -- 开机基站定位 util_location.getCoord( diff --git a/script/util_netled.lua b/script/util_netled.lua index 481f08d..bceee6a 100644 --- a/script/util_netled.lua +++ b/script/util_netled.lua @@ -1,39 +1,69 @@ local util_netled = {} -local netled = gpio.setup(27, 0, gpio.PULLUP) - local netled_default_duration = 200 -local netled_default_interval = 2000 +local netled_default_interval = 3000 local netled_duration = netled_default_duration local netled_interval = netled_default_interval +local netled_inited = false + +-- 开机时呼吸灯效果 sys.taskInit( function() + local nums = {0, 1, 2, 4, 6, 12, 16, 21, 27, 34, 42, 51, 61, 72, 85, 100, 100} while true do - netled(1) - sys.waitUntil("NET_LED_UPDATE", netled_duration) - netled(0) - sys.waitUntil("NET_LED_UPDATE", netled_interval) + for i = 1, #nums, 1 do + pwm.open(4, 1000, nums[i]) + result = sys.waitUntil("NET_LED_INIT", 25) + if result then + pwm.close(4) + return + end + end + for i = #nums, 1, -1 do + pwm.open(4, 1000, nums[i]) + result = sys.waitUntil("NET_LED_INIT", 25) + if result then + pwm.close(4) + return + end + end end end ) +-- 注册网络后开始闪烁 +function util_netled.init() + if netled_inited then + return + end + netled_inited = true + sys.publish("NET_LED_INIT") + + sys.taskInit( + function() + local netled = gpio.setup(27, 0, gpio.PULLUP) + while true do + netled(1) + sys.waitUntil("NET_LED_UPDATE", netled_duration) + netled(0) + sys.waitUntil("NET_LED_UPDATE", netled_interval) + end + end + ) +end + function util_netled.blink(duration, interval, restore) + if duration == netled_duration and interval == netled_interval then + return + end netled_duration = duration or netled_default_duration netled_interval = interval or netled_default_interval - log.info("publish NET_LED_UPDATE") + log.debug("EVENT.NET_LED_UPDATE", duration, interval, restore) sys.publish("NET_LED_UPDATE") if restore then - sys.timerStart( - function() - netled_duration = netled_default_duration - netled_interval = netled_default_interval - log.info("publish NET_LED_UPDATE") - sys.publish("NET_LED_UPDATE") - end, - restore - ) + sys.timerStart(util_netled.blink, restore) end end