#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) { EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "1")); 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; EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "1")); } void Desligar() { if (!Iniciado) { EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "0")); return; } // Desconecta o pino da solenoide _pinoSolenoide.Desconectar(); delay(50); // Pequeno delay para garantir a liberação do pino Iniciado = false; EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, "0")); } void AlterarStatusSolenoide(bool status) { _SolenoideAtuada = status; _pinoSolenoide.set(_SolenoideAtuada); StatusSolenoide = _pinoSolenoide.get() == (AtuacaoNivelAlto ? 1 : 0); } void AtualizarLeitura() { _Status = (Estado)_pinoSolenoide.get(); } void RequisitarDados() { AtualizarLeitura(); EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sRLE, _ID, MontarDadosProtocoloRele(Iniciado, _Status))); } }; #endif