from machine import Pin, ADC
import random
import time
# Estados del sistema
INIT_STATE = 0
TURN_ON_CHASSIS = 1
FIRE_CANNONS = 2
CHECK_TEMPERATURE = 3
PASSIVE_COOLING = 4
ACTIVE_COOLING = 5
TURN_OFF_DEVICE = 6
# Configuración del LED
LED_PIN = 38
led = Pin(LED_PIN, Pin.OUT)
# Configuración del sensor NTC
SENSOR_PIN = 10 # Cambia esto según el pin que estés usando
adc = ADC(Pin(SENSOR_PIN))
adc.atten(ADC.ATTN_11DB) # Ajustar la atenuación según tu microcontrolador y configuración
current_state = INIT_STATE
def init_state():
print("Initializing program")
global current_state
current_state = TURN_ON_CHASSIS
def turn_on_chassis():
print("Turning on chassis")
global current_state
current_state = FIRE_CANNONS
def fire_cannons():
print("Firing cannons")
led.value(1) # Encender el LED
time.sleep(2) # Esperar 2 segundos
global current_state
current_state = CHECK_TEMPERATURE
def read_temperature():
analog_value = adc.read() # Leer el valor analógico
return convert_to_temperature(analog_value)
def convert_to_temperature(analog_value):
# Aquí debes implementar la lógica de conversión específica para tu sensor
# Esto puede implicar calcular la resistencia del NTC y luego usar la fórmula del NTC para obtener la temperatura
calculated_temperature = 0 # Ejemplo, reemplaza con tu cálculo
return calculated_temperature
def check_temperature():
global temperature
temperature = read_temperature()
print(f"Checking temperature: {temperature:.2f} °C")
if temperatura_dentro_del_rango():
global current_state
current_state = PASSIVE_COOLING
else:
global current_state
current_state = ACTIVE_COOLING
def passive_cooling():
print("Passive cooling")
global current_state
current_state = CHECK_TEMPERATURE
def active_cooling():
print("Active cooling")
global current_state
if not temperatura_dentro_del_rango():
current_state = TURN_OFF_DEVICE
else:
current_state = CHECK_TEMPERATURE
def turn_off_device():
print("Turning off device")
global current_state
current_state = INIT_STATE
def temperatura_dentro_del_rango():
return 0 <= temperature <= 30
while True:
if current_state == INIT_STATE:
init_state()
elif current_state == TURN_ON_CHASSIS:
turn_on_chassis()
elif current_state == FIRE_CANNONS:
fire_cannons()
elif current_state == CHECK_TEMPERATURE:
check_temperature()
elif current_state == PASSIVE_COOLING:
passive_cooling()
elif current_state == ACTIVE_COOLING:
active_cooling()
elif current_state == TURN_OFF_DEVICE:
turn_off_device()
break # Asegúrate de que este break está donde lo necesitas