176 lines
4.2 KiB
Python
176 lines
4.2 KiB
Python
LED_LEVEL_ROOM_TEMPERATURE = 0.4
|
|
LED_LEVEL_LN2 = 1.0
|
|
|
|
|
|
###################################################################################################
|
|
# Leds
|
|
###################################################################################################
|
|
|
|
def set_led_level(level):
|
|
level = max(min(float(level),100.0),0.0)
|
|
set_setting("led_level", level)
|
|
led_ctrl_1.write(led_ctrl_1.config.maxValue * level / 100.0)
|
|
led_ctrl_2.write(led_ctrl_2.config.maxValue * level / 100.0)
|
|
led_ctrl_3.write(led_ctrl_3.config.maxValue * level / 100.0)
|
|
|
|
def get_led_level():
|
|
level = get_setting("led_level")
|
|
return float(0 if level is None else level)
|
|
|
|
def set_led_state(value):
|
|
"""
|
|
Turn leds on and off
|
|
"""
|
|
if value:
|
|
set_led_level(100.0)
|
|
else:
|
|
set_led_level(0.0)
|
|
|
|
def get_led_state():
|
|
"""
|
|
Returns led state (on/off)
|
|
"""
|
|
return led_ctrl_1.read() > 0
|
|
|
|
#TODO: The range should be set automatically reading LN2 sensor.
|
|
def set_led_range(room_temp = True):
|
|
"""
|
|
Led range should be limitted in room temperature
|
|
"""
|
|
max_val = LED_LEVEL_ROOM_TEMPERATURE if room_temp else LED_LEVEL_LN2
|
|
led_ctrl_1.config.maxValue = max_val
|
|
led_ctrl_1.config.save()
|
|
led_ctrl_2.config.maxValue = max_val
|
|
led_ctrl_2.config.save()
|
|
led_ctrl_3.config.maxValue = max_val
|
|
led_ctrl_3.config.save()
|
|
led_ctrl_1.initialize()
|
|
led_ctrl_2.initialize()
|
|
led_ctrl_3.initialize()
|
|
if led_ctrl_1.read() > max_val:
|
|
led_ctrl_1.write(max_val)
|
|
if led_ctrl_2.read() > max_val:
|
|
led_ctrl_2.write(max_val)
|
|
if led_ctrl_3.read() > max_val:
|
|
led_ctrl_3.write(max_val)
|
|
set_led_level(get_led_level())
|
|
|
|
|
|
def is_led_room_temp():
|
|
return led_ctrl_1.config.maxValue <= LED_LEVEL_ROOM_TEMPERATURE
|
|
|
|
|
|
|
|
|
|
###################################################################################################
|
|
# Safety release
|
|
###################################################################################################
|
|
|
|
def release_local():
|
|
"""
|
|
Release local safety
|
|
"""
|
|
release_local_safety.write(False)
|
|
time.sleep(0.01)
|
|
release_local_safety.write(True)
|
|
time.sleep(0.01)
|
|
release_local_safety.write(False)
|
|
|
|
def release_psys():
|
|
"""
|
|
Release psys safety
|
|
"""
|
|
if is_manual_mode():
|
|
raise Exception ("Cannot release PSYS in manual mode")
|
|
release_psys_safety.write(False)
|
|
time.sleep(0.01)
|
|
release_psys_safety.write(True)
|
|
time.sleep(0.01)
|
|
release_psys_safety.write(False)
|
|
|
|
|
|
|
|
###################################################################################################
|
|
# Drier
|
|
###################################################################################################
|
|
MAX_HEATER_TIME = 120000
|
|
|
|
def set_air_stream(state):
|
|
"""
|
|
"""
|
|
valve_1.write(state)
|
|
valve_2.write(not state)
|
|
|
|
|
|
set_heater_chrono = None
|
|
|
|
def monitor_heater_time():
|
|
time.sleep(0.5)
|
|
try:
|
|
while get_heater():
|
|
if set_heater_chrono.isTimeout(MAX_HEATER_TIME):
|
|
set_heater(False)
|
|
log("Heater timeout expired: turned off", False)
|
|
return
|
|
time.sleep(0.1)
|
|
except:
|
|
print sys.exc_info()
|
|
|
|
|
|
def get_heater():
|
|
"""
|
|
"""
|
|
return gripper_dryer.read()
|
|
|
|
|
|
def set_heater(state):
|
|
"""
|
|
"""
|
|
global set_heater_chrono
|
|
if get_heater() != state:
|
|
gripper_dryer.write(state)
|
|
if state:
|
|
set_heater_chrono = Chrono()
|
|
fork(monitor_heater_time)
|
|
|
|
|
|
def get_air_stream():
|
|
"""
|
|
"""
|
|
return valve_1.read()
|
|
|
|
|
|
|
|
def set_pin_cleaner(state):
|
|
"""
|
|
"""
|
|
valve_7.write(state)
|
|
valve_8.write(not state)
|
|
|
|
|
|
|
|
def get_pin_cleaner():
|
|
"""
|
|
"""
|
|
return valve_7.read()
|
|
|
|
|
|
monitor_pin_cleaner_task = None
|
|
|
|
def monitor_pin_cleaner(timeout):
|
|
global monitor_pin_cleaner_task
|
|
this = monitor_pin_cleaner_task
|
|
time.sleep(timeout)
|
|
if this == monitor_pin_cleaner_task:
|
|
set_pin_cleaner(False)
|
|
|
|
|
|
DEFAULT_PIN_CLEANER_TIMEOUT = 5.0
|
|
def start_pin_cleaner(timeout=DEFAULT_PIN_CLEANER_TIMEOUT):
|
|
global monitor_pin_cleaner_task
|
|
set_pin_cleaner(True)
|
|
set_pin_cleaner_chrono = Chrono()
|
|
monitor_pin_cleaner_task = fork((monitor_pin_cleaner,(timeout,),))[0]
|
|
|
|
|