# software de voo - ANTENAS, COMM, ADCS, PAYLOAD
# com simulador de falha (pino GP28)
from machine import Pin
from utime import sleep
# define pinos de I/O
antenas = Pin(16, Pin.OUT)
comm = Pin(18, Pin.OUT)
adcs = Pin(19, Pin.OUT)
payload = Pin(20, Pin.OUT)
teste_falha = Pin(28, Pin.IN)
# Estados
INATIVO = 0
DEPLOY = 1
MODO_SEGURANCA = 2
MODO_ESTABILIZACAO = 3
MODO_NOMINAL = 4
estado = INATIVO # inicia no estado = INATIVO
# maquina de estados
while True:
if estado == INATIVO:
antenas.off()
comm.off()
adcs.off()
payload.off()
sleep(5)
falha = teste_falha.value()
if falha == 1:
estado = INATIVO
else:
estado = DEPLOY
if estado == DEPLOY:
antenas.on()
sleep(2)
antenas.off()
estado = MODO_SEGURANCA
if estado == MODO_SEGURANCA:
comm.on()
sleep(2)
estado = MODO_ESTABILIZACAO
if estado == MODO_ESTABILIZACAO:
adcs.on()
sleep(2)
estado = MODO_NOMINAL
if estado == MODO_NOMINAL:
payload.on()
falha = teste_falha.value()
if falha == 1:
estado = INATIVO
else:
estado = MODO_NOMINAL