stationeers_ic10/heating_cooling.ic10
Snorre Selmer 0eaec70c48 Rewrote variables to not use snake-case
Added automatic light-switch
2022-09-13 20:22:22 +02:00

98 lines
1.8 KiB
Plaintext

alias GasSensor d0
# d1= Logic Switch, Dial variant (Max=30)
alias Thermostat d1
# d2 = Logic Memory, must be more than 0
alias TempVariance d2
# d3 = Console, LED Display variant, optional
alias TempDisplay d3
# d4 = Wall Cooler
alias WallCooler d4
# d5 = Wall Heater
alias WallHeater d5
alias CurrentTemp r0
alias TargetTemp r1
alias Variance r2
alias MinTemp r3
alias MaxTemp r4
alias CoolingActive r5
alias HeatingActive r6
alias Cooler r7
alias Heater r8
define TEMPCONVERT 273.15
move CoolingActive 0
move HeatingActive 0
l Cooler WallCooler PrefabHash
l Heater WallHeater PrefabHash
start:
yield
# establish min- and max-temps to registry
l Variance TempVariance Setting
l MinTemp Thermostat Setting
sub MinTemp MinTemp Variance
l MaxTemp Thermostat Setting
add MaxTemp MaxTemp Variance
l TargetTemp Thermostat Setting
# get current temperature
jal temp_read
# update display
brdns TempDisplay 2
jal display
# compare current temp to max/min temp and
# initiate cooling or heating if needed
bgt CurrentTemp MaxTemp cooling
blt CurrentTemp MinTemp heating
sb Cooler On CoolingActive
sb Heater On HeatingActive
j start
temp_read:
l CurrentTemp GasSensor Temperature
sub CurrentTemp CurrentTemp TEMPCONVERT
j ra
display:
s TempDisplay Setting CurrentTemp
j ra
cooling:
yield
jal temp_read
# test if coolers need to be on or not
sgt CoolingActive CurrentTemp TargetTemp
brdns TempDisplay 2
jal display
# send state to coolers
sb Cooler On CoolingActive
bgtz CoolingActive cooling
j start
heating:
yield
jal temp_read
# test if heaters need to be on or not
slt HeatingActive CurrentTemp TargetTemp
brdns TempDisplay 2
jal display
# send state to heaters
sb Heater On HeatingActive
bgtz HeatingActive heating
j start