ArduPilot:修订间差异

来自无人智胜
跳转到导航 跳转到搜索
Root留言 | 贡献
创建页面,内容为“-- LED_LAW.lua CH7 三段:关 / 导航+低压闪 / 全白补光 -- by 大小姐 local NUM_LED = 16 local CH7 = 7 -- 7通道三段开关 local INTERVAL = 100 -- 5 Hz local V_LOW = 3.7 local chan = SRV_Channels:find_channel(94) if not chan then gcs:send_text(6, "LED: CH94 not set") return end chan = chan + 1 serialLED:set_num_neopixel(chan, NUM_LED) local flashOn = false local function update() local pwm = rc:get_pwm(C…”
 
(没有差异)

2025年10月17日 (五) 00:26的最新版本

-- LED_LAW.lua CH7 三段:关 / 导航+低压闪 / 全白补光 -- by 大小姐 local NUM_LED = 16 local CH7 = 7 -- 7通道三段开关 local INTERVAL = 100 -- 5 Hz local V_LOW = 3.7

local chan = SRV_Channels:find_channel(94) if not chan then

   gcs:send_text(6, "LED: CH94 not set")
   return

end chan = chan + 1 serialLED:set_num_neopixel(chan, NUM_LED)

local flashOn = false

local function update()

   local pwm = rc:get_pwm(CH7) or 1500
   local v   = battery:voltage(0)
   flashOn   = not flashOn
   -- 三段开关逻辑
   if pwm < 1200 then          -- 下档:全灭
       for i = 0, 15 do serialLED:set_RGB(chan, i, 0, 0, 0) end
   elseif pwm > 1700 then      -- 上档:全白补光
       for i = 0, 15 do serialLED:set_RGB(chan, i, 255, 255, 255) end
   else                        -- 中档:导航 + 低压红闪
       if v <= V_LOW and flashOn then
           for i = 0, 15 do serialLED:set_RGB(chan, i, 255, 0, 0) end
       elseif v <= V_LOW then
           for i = 0, 15 do serialLED:set_RGB(chan, i, 0, 0, 0) end
       else
           for i = 0, 3  do serialLED:set_RGB(chan, i, 255, 0, 0) end
           for i = 4, 7  do serialLED:set_RGB(chan, i, 0, 255, 0) end
           for i = 8, 15 do serialLED:set_RGB(chan, i, 255, 255, 255) end
       end
   end
   serialLED:send(chan)
   return update, INTERVAL

end

return update()