#Power Distribution Large LED Control Script v1
# by SemlerPDX Sept2023
#As seen in my Power Station Quick Clip video:
# https://youtu.be/s45vYXD6dSI
define CableAnalyzer 1036015121
define Button 491845673
define MediumLED -53151617
define LargeLED -1949054743
sb LargeLED Mode 2
sb LargeLED Color 6
alias ThisBut r10
alias ThisMax r11
alias ThisLED r12
alias AvgTotal r13
alias AvgCount r14
alias x r15
define ThisNet HASH("Cable Analyzer MAIN OUT")
#Clear the stack
move sp 0
define STACK 500
push 0
brlt sp STACK -1 #can use clr in latest version
#Initialize Stack to contain Averages
move sp 0
move AvgTotal 0
move AvgCount 0
start:
sb MediumLED Color 6 #REQUIRED!
move ThisLED HASH("LED Total Power Min")
lbn r0 LargeLED ThisLED Setting Maximum
beqzal r0 setMinDisplay
yield
move ThisLED HASH("LED Total Power Avg")
add sp sp 1
pop x
sub AvgTotal AvgTotal x
lbn x CableAnalyzer ThisNet PowerActual Maximum
push x
add AvgTotal AvgTotal x
max AvgCount AvgCount sp
brlt sp STACK 2
move sp 0
div x AvgTotal AvgCount
sbn LargeLED ThisLED Setting x
jal setDisplaysMinMax
j start
setDisplaysMinMax:
move ThisBut HASH("Button Total Power Max")
move ThisLED HASH("LED Total Power Max")
lbn r1 Button ThisBut Setting Maximum
bgtz r1 resetThisDisplay
move ThisMax HASH("LED Power Station Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 0 r1
move ThisMax HASH("LED Greenhouse Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 r0 r1
move ThisMax HASH("LED Workshop Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 r0 r1
move ThisMax HASH("LED Mining Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 r0 r1
move ThisMax HASH("LED Furnace Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 r0 r1
move ThisMax HASH("LED Spaceport Max")
lbn r1 MediumLED ThisMax Setting Maximum
add r0 r0 r1
lbn r1 LargeLED ThisLED Setting Maximum
bge r1 r0 setDisplaysMin #bypass if max is greater
#Set new Maximum to Power Consumption Display
sbn LargeLED ThisLED Setting r0
setDisplaysMin:
move ThisBut HASH("Button Total Power Min")
move ThisLED HASH("LED Total Power Min")
lbn r1 Button ThisBut Setting Maximum
bgtz r1 resetThisDisplay
lbn r0 CableAnalyzer ThisNet PowerActual Maximum
lbn r1 LargeLED ThisLED Setting Maximum
select r1 r1 r1 r0
ble r1 r0 ra #bypass if min is already lesser
#Set new Minimum to Power Consumption Display
sbn LargeLED ThisLED Setting r0
j ra
resetThisDisplay:
sbn LargeLED ThisLED Color 1
sbn LargeLED ThisLED Setting 0
sleep 2
j start
setMinDisplay:
lbn r0 CableAnalyzer ThisNet PowerActual Maximum
sbn LargeLED ThisLED Setting r0
j ra
Comments