2024-11-27 17:38:56 +00:00
|
|
|
#include "SerialService.h"
|
|
|
|
|
#include "Pinout.h"
|
|
|
|
|
|
|
|
|
|
#ifndef SolenoideModel
|
|
|
|
|
#define SolenoideModel
|
|
|
|
|
|
|
|
|
|
bool AtuacaoNivelAlto = true;
|
|
|
|
|
|
|
|
|
|
class Solenoide {
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
// Construtor
|
|
|
|
|
Solenoide(String _modID, String _id) {
|
|
|
|
|
Mod_ID = _modID;
|
|
|
|
|
_ID = _id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Definições
|
|
|
|
|
String Mod_ID = "";
|
|
|
|
|
String _ID;
|
|
|
|
|
PinoModel _pinoSolenoide;
|
|
|
|
|
|
|
|
|
|
Estado _Status = Desligado;
|
|
|
|
|
|
|
|
|
|
bool Iniciado = false;
|
|
|
|
|
bool Testando = false;
|
|
|
|
|
|
|
|
|
|
// Consumo
|
|
|
|
|
bool StatusSolenoide;
|
|
|
|
|
|
|
|
|
|
// Entrada de dados
|
|
|
|
|
bool _SolenoideAtuada = !AtuacaoNivelAlto;
|
|
|
|
|
|
|
|
|
|
void Inicializar() {
|
|
|
|
|
if (Iniciado) {
|
2024-11-29 20:28:25 +00:00
|
|
|
//EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "1"));
|
2024-11-27 17:38:56 +00:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Define o estado inicial da solenoide
|
|
|
|
|
_SolenoideAtuada = !AtuacaoNivelAlto;
|
|
|
|
|
|
|
|
|
|
// Conecta o pino da solenoide com o estado inicial configurado
|
|
|
|
|
_pinoSolenoide.Conectar(_SolenoideAtuada);
|
|
|
|
|
|
|
|
|
|
// Atualiza o status da solenoide para refletir o estado inicial
|
|
|
|
|
StatusSolenoide = _pinoSolenoide.get() == (AtuacaoNivelAlto ? 1 : 0);
|
|
|
|
|
|
|
|
|
|
Iniciado = true;
|
2024-11-29 20:28:25 +00:00
|
|
|
//EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "1"));
|
2024-11-27 17:38:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Desligar() {
|
|
|
|
|
if (!Iniciado) {
|
2024-11-29 20:28:25 +00:00
|
|
|
//EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "0"));
|
2024-11-27 17:38:56 +00:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Desconecta o pino da solenoide
|
|
|
|
|
_pinoSolenoide.Desconectar();
|
|
|
|
|
|
|
|
|
|
delay(50); // Pequeno delay para garantir a liberação do pino
|
|
|
|
|
|
|
|
|
|
Iniciado = false;
|
2024-11-29 20:28:25 +00:00
|
|
|
//EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "0"));
|
2024-11-27 17:38:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AlterarStatusSolenoide(bool status) {
|
|
|
|
|
_SolenoideAtuada = status;
|
|
|
|
|
_pinoSolenoide.set(_SolenoideAtuada);
|
|
|
|
|
StatusSolenoide = _pinoSolenoide.get() == (AtuacaoNivelAlto ? 1 : 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AtualizarLeitura() {
|
|
|
|
|
_Status = (Estado)_pinoSolenoide.get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RequisitarDados() {
|
|
|
|
|
AtualizarLeitura();
|
2024-11-29 20:28:25 +00:00
|
|
|
//EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sRLE, _ID, MontarDadosProtocoloRele(Iniciado, _Status)));
|
2024-11-27 17:38:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|