#include "SerialService.h" #include "Pinout.h" #include "Utils.h" #ifndef SensorUltrassomModel #define SensorUltrassomModel class SensorUltrassom { public: SensorUltrassom(String _modID, String _id) { Mod_ID = _modID; _ID = _id; } // Variáveis #define SOUND_SPEED 0.034 long duration = 0; float distanceCm = 0; // Definições String Mod_ID; String _ID; S_Code _componente = sULT; PinoModel _pinoE; PinoModel _pinoT; bool Iniciado = false; void Inicializar() { if (Iniciado) { //EnviarDadosSerial(_ID + " ja inicializado"); EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0")); return; } _pinoE.Conectar(); _pinoT.Conectar(); //EnviarDadosSerial(_ID + " Iniciado"); Iniciado = true; EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0")); } void Desligar() { if (!Iniciado) { //EnviarDadosSerial(_ID + " nao esta inicializado"); EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0")); return; } // Redefinir as configurações para os valores iniciais _pinoE.Desconectar(); _pinoT.Desconectar(); //EnviarDadosSerial(_ID + " Desligado"); Iniciado = false; EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0")); } void AferirDistancia() { _pinoT.set(false); delayMicroseconds(2); _pinoT.set(true); delayMicroseconds(10); _pinoT.set(false); duration = pulseIn(_pinoE.num, HIGH); distanceCm = duration * SOUND_SPEED / 2; } void RequisitarDados() { AferirDistancia(); EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sULT, _ID, MontarDadosProtocoloUltrassom(distanceCm, duration))); } }; #endif