44 lines
893 B
Plaintext
44 lines
893 B
Plaintext
device self = "db";
|
|
device gasSensor = "d0";
|
|
device atmosAnal = "d1";
|
|
device atmosValve = "d2";
|
|
device atmosTank = "d3";
|
|
device atmosInlet = "d4";
|
|
|
|
atmosInlet.Lock = true;
|
|
atmosInlet.Mode = 1;
|
|
atmosValve.On = false;
|
|
atmosValve.Lock = true;
|
|
|
|
let isPumping = false;
|
|
let tempPressure = 0;
|
|
|
|
loop {
|
|
yield();
|
|
let temp = gasSensor.Temperature;
|
|
let pres = atmosAnal.Pressure;
|
|
let liqV = atmosAnal.VolumeOfLiquid;
|
|
let tempVol = atmosAnal.Volume;
|
|
|
|
let stress = 5_000 * liqV / tempVol;
|
|
|
|
tempPressure = isPumping ? 1_000 : 10_000;
|
|
|
|
let shouldTurnOnInlet = (
|
|
temp > 0c &&
|
|
pres < tempPressure &&
|
|
stress < 50
|
|
);
|
|
|
|
isPumping = (
|
|
!shouldTurnOnInlet &&
|
|
atmosTank.Pressure < 35_000 &&
|
|
atmosAnal.RatioPollutant == 0 &&
|
|
atmosAnal.RatioLiquidPollutant == 0 &&
|
|
atmosAnal.Pressure > 1_000
|
|
);
|
|
|
|
atmosValve.On = isPumping;
|
|
atmosInlet.On = shouldTurnOnInlet;
|
|
}
|