Anderson,
Antes de escrever o programa, que tal definir algumas coisas??
Senhores,
Fiz uma pequena parte do código para acionar iluminação frontal e posterior. A idéia é que possa funcionar da seguinte maneira.
- Aciono o botão pela primeira vez e ligo a iluminação frontal
- aciono o botão novamente e desligo a iluminação frontal
- aciono o botão novamente e ligo a iluminação trazeira
- aciono o botão novamente e desligo a iluminação trazeira
- aciono o botão novamente e ligo a iluminação frontal e trazeira
- aciono o botão novamente e desligo toda a iluminação
Ao invés de fazer essa ginástica toda para ligar e desligar as lâmpadas, dê uma olhada...
Sugestão: usar o mesmo tipo de acionamento para o motor de profundidade, o projeto usa 8 bits. Porque? 3 Bits não atenderiam (como nos outros motores), proposta, usando 2 bytes de comando apenas:
Byte 1:
Bits 0 1 2 3 4 5 6 7
M1 M1 M1 M2 M2 M2 S1 S1
Byte 2:
Bits 0 1 2 3 4 5 6 7
M3 M3 M3 L1 L2 L3 Z+ Z-
M1 - controle do motor 1 (estados RR,MR,LR,P,LF,MF,RF)
M2 - controle do motor 2 (estados RR,MR,LR,P,LF,MF,RF)
M3 - controle do motor 3 (estados RB,MB,LB,P,LC,MC,RC)
S1 - aciona servo 1
L1 - liga/desliga a iluminação frontal
L2 - liga/desliga a iluminação traseira
L3 - liga/desliga a iluminação ou alguma outra carga extra
Z+ - aproximar Zoom
Z- - afastar Zoom
Estados de cada motor DC (M1, M2):
RR = rápido à ré
MR = média velocidade à ré
LR = lento à ré
P - motor parado
LF = lento à frente
MF = média velocidade à frente
RF = rápido à frente
Estados do motor DC de produndidade (M3):
RB = rápido ao fundo
MB = média velocidade ao fundo
LB = lento ao fundo
P - motor parado
LC = lento para cima
MC = média velocidade para cima
RC = rápido para cima
Estados do servo motor (S1):
-90 Graus
0 Graus
+45 Graus
+90 Graus
Não coloquei a reposta do ROV (ainda), o que acha de fazer o ROV sair logo do papel, mais parecido com o projeto original? E apenas com comandos?