diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/Bback.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/Bback.lua new file mode 100644 index 00000000..e39510a8 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/Bback.lua @@ -0,0 +1,68 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 + currentLed = 0 -- Current lit LED position + scroll_oldtime = getTime() -- Initialize scroll_oldtime + scroll_cycle = 0 -- Initialize scroll_cycle +end + +-- Function to generate smooth cyclic colors +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = 0, 0, 0 + local maxBrightness = 255 -- Maximum brightness value + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + -- Skip colors that are close to the background color + local bg_r, bg_g, bg_b = 0, 0, 72 -- Background color + local threshold = 30 -- Color difference threshold + if math.abs(r - bg_r) < threshold and math.abs(g - bg_g) < threshold and math.abs(b - bg_b) < threshold then + return getColor((phase + 1) % length, length) -- Skip this color and get the next one + end + + return r, g, b +end + +local colorPhase = 0 -- Initialize color phase + +local function run() + for i=LED_STRIP_LENGTH - 1, 0, -1 do -- Reverse iteration + if (i == scroll_cycle) then + local r, g, b = getColor(colorPhase, 255) + setRGBLedColor(i, r, g, b) + else + setRGBLedColor(i, 0, 0, 72) + end + end + if ((getTime() - scroll_oldtime) > 8) then + scroll_oldtime = getTime() + scroll_cycle = scroll_cycle - 1 -- Decrement scroll_cycle + if (scroll_cycle < 0) then + scroll_cycle = LED_STRIP_LENGTH - 1 -- Reset scroll_cycle to the end of the strip + end + end + colorPhase = (colorPhase + 1) % 255 -- Update color phase + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/Bfwrd.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/Bfwrd.lua new file mode 100644 index 00000000..6e66669f --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/Bfwrd.lua @@ -0,0 +1,68 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 + currentLed = 0 -- Current lit LED position + scroll_oldtime = getTime() -- Initialize scroll_oldtime + scroll_cycle = 0 -- Initialize scroll_cycle +end + +-- Function to generate smooth cyclic colors +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = 0, 0, 0 + local maxBrightness = 255 -- Maximum brightness value + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + -- Skip colors that are close to the background color + local bg_r, bg_g, bg_b = 0, 0, 72 -- Background color + local threshold = 30 -- Color difference threshold + if math.abs(r - bg_r) < threshold and math.abs(g - bg_g) < threshold and math.abs(b - bg_b) < threshold then + return getColor((phase + 1) % length, length) -- Skip this color and get the next one + end + + return r, g, b +end + +local colorPhase = 0 -- Initialize color phase + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 do + if (i == scroll_cycle) then + local r, g, b = getColor(colorPhase, 255) + setRGBLedColor(i, r, g, b) + else + setRGBLedColor(i, 0, 0, 72) + end + end + if ((getTime() - scroll_oldtime) > 8) then + scroll_oldtime = getTime() + scroll_cycle = scroll_cycle + 1 + if (scroll_cycle >= LED_STRIP_LENGTH) then + scroll_cycle = 0 + end + end + colorPhase = (colorPhase + 1) % 255 -- Update color phase + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/Pback.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/Pback.lua new file mode 100644 index 00000000..54d21c4a --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/Pback.lua @@ -0,0 +1,68 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 + currentLed = 0 -- Current lit LED position + scroll_oldtime = getTime() -- Initialize scroll_oldtime + scroll_cycle = 0 -- Initialize scroll_cycle +end + +-- Function to generate smooth cyclic colors +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = 0, 0, 0 + local maxBrightness = 255 -- Maximum brightness value + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + -- Skip colors that are close to the background color + local bg_r, bg_g, bg_b = 72, 0, 72 -- Background color + local threshold = 30 -- Color difference threshold + if math.abs(r - bg_r) < threshold and math.abs(g - bg_g) < threshold and math.abs(b - bg_b) < threshold then + return getColor((phase + 1) % length, length) -- Skip this color and get the next one + end + + return r, g, b +end + +local colorPhase = 0 -- Initialize color phase + +local function run() + for i=LED_STRIP_LENGTH - 1, 0, -1 do -- Reverse iteration + if (i == scroll_cycle) then + local r, g, b = getColor(colorPhase, 255) + setRGBLedColor(i, r, g, b) + else + setRGBLedColor(i, 72, 0, 72) + end + end + if ((getTime() - scroll_oldtime) > 8) then + scroll_oldtime = getTime() + scroll_cycle = scroll_cycle - 1 -- Decrement scroll_cycle + if (scroll_cycle < 0) then + scroll_cycle = LED_STRIP_LENGTH - 1 -- Reset scroll_cycle to the end of the strip + end + end + colorPhase = (colorPhase + 1) % 255 -- Update color phase + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/Pfwrd.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/Pfwrd.lua new file mode 100644 index 00000000..33e90084 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/Pfwrd.lua @@ -0,0 +1,68 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 + currentLed = 0 -- Current lit LED position + scroll_oldtime = getTime() -- Initialize scroll_oldtime + scroll_cycle = 0 -- Initialize scroll_cycle +end + +-- Function to generate smooth cyclic colors +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = 0, 0, 0 + local maxBrightness = 255 -- Maximum brightness value + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + -- Skip colors that are close to the background color + local bg_r, bg_g, bg_b = 72, 0, 72 -- Background color + local threshold = 30 -- Color difference threshold + if math.abs(r - bg_r) < threshold and math.abs(g - bg_g) < threshold and math.abs(b - bg_b) < threshold then + return getColor((phase + 1) % length, length) -- Skip this color and get the next one + end + + return r, g, b +end + +local colorPhase = 0 -- Initialize color phase + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 do + if (i == scroll_cycle) then + local r, g, b = getColor(colorPhase, 255) + setRGBLedColor(i, r, g, b) + else + setRGBLedColor(i, 72, 0, 72) + end + end + if ((getTime() - scroll_oldtime) > 8) then + scroll_oldtime = getTime() + scroll_cycle = scroll_cycle + 1 + if (scroll_cycle >= LED_STRIP_LENGTH) then + scroll_cycle = 0 + end + end + colorPhase = (colorPhase + 1) % 255 -- Update color phase + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/blue.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/blue.lua index 9e45f97e..5c7f6a50 100644 --- a/sdcard/bw128x64/SCRIPTS/RGBLED/blue.lua +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/blue.lua @@ -4,7 +4,7 @@ end local function run() for i=0, LED_STRIP_LENGTH - 1, 1 do - setRGBLedColor(i, 0, 0, 50) + setRGBLedColor(i, 0, 0, 128) end applyRGBLedColors() end diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/flow.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/flow.lua new file mode 100644 index 00000000..50fa0826 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/flow.lua @@ -0,0 +1,52 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 +end + +local minBrightness = 0 -- Minimum brightness value +local maxBrightness = 255 -- Maximum brightness value + +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = minBrightness, minBrightness, minBrightness + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 32 * position) + g = maxBrightness * (32 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 32 * position) + b = maxBrightness * (32 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 32 * position) + r = maxBrightness * (32 * position) + end + + return r, g, b +end + +local colorChangeTime = 0 -- The time of the last color change + +local function run() + if ((getTime() - colorChangeTime) > 1) then -- Use an interval of 2 time units + colorChangeTime = getTime() + phase = (phase + 1) % 255 -- Update color phase + + for i = 0, LED_STRIP_LENGTH - 1, 1 do + local r, g, b = getColor(phase + i * 64, 255) -- Increase phase offset for each LED + setRGBLedColor(i, r, g, b) + end + applyRGBLedColors() + end +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/green.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/green.lua index 19308577..feb53100 100644 --- a/sdcard/bw128x64/SCRIPTS/RGBLED/green.lua +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/green.lua @@ -4,7 +4,7 @@ end local function run() for i=0, LED_STRIP_LENGTH - 1, 1 do - setRGBLedColor(i, 0, 50, 0) + setRGBLedColor(i, 0, 255, 0) end applyRGBLedColors() end diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/orange.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/orange.lua new file mode 100644 index 00000000..cf1650e4 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/orange.lua @@ -0,0 +1,16 @@ +local function init() +end + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 + do + setRGBLedColor(i, 255, 100, 0) -- Change RGB values to represent orange color + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/purple.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/purple.lua new file mode 100644 index 00000000..99c6e192 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/purple.lua @@ -0,0 +1,16 @@ +local function init() +end + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 + do + setRGBLedColor(i, 255, 0, 255) -- Set to purple color + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/rainbw.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/rainbw.lua new file mode 100644 index 00000000..5248ec78 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/rainbw.lua @@ -0,0 +1,52 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 +end + +local minBrightness = 0 -- Minimum brightness value +local maxBrightness = 255 -- Maximum brightness value + +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = minBrightness, minBrightness, minBrightness + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + return r, g, b +end + +local colorChangeTime = 0 -- The time of the last color change + +local function run() + if ((getTime() - colorChangeTime) > 2) then -- Use an interval of 4 time units + colorChangeTime = getTime() + phase = (phase + 1) % 255 -- Update color phase + + for i = 0, LED_STRIP_LENGTH - 1, 1 do + local r, g, b = getColor(phase + i * 64, 255) -- Increase phase offset for each LED + setRGBLedColor(i, r, g, b) + end + applyRGBLedColors() + end +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/rgbLop.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/rgbLop.lua new file mode 100644 index 00000000..3c70083b --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/rgbLop.lua @@ -0,0 +1,53 @@ +local function init() + cycleTime = getTime() -- Initialize time + phase = 0 +end + +-- Function to generate smooth cyclic colors +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = 5, 5, 5 + local maxBrightness = 255 -- Maximum brightness value + local minBrightness = 0 -- Minimum brightness value + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = minBrightness + (maxBrightness - minBrightness) * (1 - 3 * position) + g = maxBrightness * (3 * position) + b = minBrightness + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = minBrightness + (maxBrightness - minBrightness) * (1 - 3 * position) + b = maxBrightness * (3 * position) + r = minBrightness + else + -- From blue to red + position = position - 2/3 + b = minBrightness + (maxBrightness - minBrightness) * (1 - 3 * position) + r = maxBrightness * (3 * position) + g = minBrightness + end + + return math.max(0, math.min(r, maxBrightness)), math.max(0, math.min(g, maxBrightness)), math.max(0, math.min(b, maxBrightness)) +end + +local function run() + if ((getTime() - cycleTime) > 2) then -- Use an interval of 8 time units + cycleTime = getTime() + phase = phase + 1 -- Update color phase + end + + for i = 0, LED_STRIP_LENGTH - 1, 1 do + local r, g, b = getColor(phase, 255) + setRGBLedColor(i, r, g, b) + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/runner.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/runner.lua new file mode 100644 index 00000000..41390719 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/runner.lua @@ -0,0 +1,77 @@ +local function init() + colorChangeTime = getTime() -- Initialize time + phase = 0 + currentLed = 0 -- Current lit LED position +end + +local minBrightness = 0 -- Minimum brightness value +local maxBrightness = 255 -- Maximum brightness value + +local function getColor(phase, length) + local position = (phase % length) / length + local r, g, b = minBrightness, minBrightness, minBrightness + + -- RGB color transition: red -> green -> blue -> red + if position < 1/3 then + -- From red to green + r = maxBrightness * (1 - 3 * position) + g = maxBrightness * (3 * position) + elseif position < 2/3 then + -- From green to blue + position = position - 1/3 + g = maxBrightness * (1 - 3 * position) + b = maxBrightness * (3 * position) + else + -- From blue to red + position = position - 2/3 + b = maxBrightness * (1 - 3 * position) + r = maxBrightness * (3 * position) + end + + return r, g, b +end + +local maxBackgroundBrightness = 255 -- Maximum brightness value for the background + +local function run() + if ((getTime() - colorChangeTime) > 2) then -- Use an interval of 4 time units + colorChangeTime = getTime() + phase = phase + 1 -- Update color phase + currentLed = (currentLed + 1) % LED_STRIP_LENGTH -- Move to the next LED + end + + for i = 0, LED_STRIP_LENGTH - 1, 1 do + local r, g, b = getColor(phase, 255) + if i <= currentLed then + setRGBLedColor(i, r, g, b) + else + -- Set the background color to the opposite of the main color in the RGB color space + local bg_r = (r + 128) % 256 + local bg_g = (g + 128) % 256 + local bg_b = (b + 128) % 256 + + -- Ensure the brightness of the background color does not exceed 72 + bg_r = math.min(bg_r, maxBackgroundBrightness) + bg_g = math.min(bg_g, maxBackgroundBrightness) + bg_b = math.min(bg_b, maxBackgroundBrightness) + + -- Ensure at least one color channel is always off + if bg_r > bg_g and bg_r > bg_b then + bg_r = 0 + elseif bg_g > bg_r and bg_g > bg_b then + bg_g = 0 + else + bg_b = 0 + end + + setRGBLedColor(i, bg_r, bg_g, bg_b) + end + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/sapp.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/sapp.lua new file mode 100644 index 00000000..151af468 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/sapp.lua @@ -0,0 +1,16 @@ +local function init() +end + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 + do + setRGBLedColor(i, 0, 255, 255) -- Set to sapphire color + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/white.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/white.lua new file mode 100644 index 00000000..78e27c4f --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/white.lua @@ -0,0 +1,16 @@ +local function init() +end + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 + do + setRGBLedColor(i, 255, 255, 255) -- Set to white color + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init } \ No newline at end of file diff --git a/sdcard/bw128x64/SCRIPTS/RGBLED/yellow.lua b/sdcard/bw128x64/SCRIPTS/RGBLED/yellow.lua new file mode 100644 index 00000000..f0176e79 --- /dev/null +++ b/sdcard/bw128x64/SCRIPTS/RGBLED/yellow.lua @@ -0,0 +1,16 @@ +local function init() +end + +local function run() + for i=0, LED_STRIP_LENGTH - 1, 1 + do + setRGBLedColor(i, 255, 255, 0) + end + applyRGBLedColors() +end + +local function background() + -- Called periodically while the Special Function switch is off +end + +return { run=run, background=background, init=init }