agrobot_base/Firmware/Modulos/ServoFreioModel.h

77 lines
1.6 KiB
C++

#include "SerialService.h"
#include "Pinout.h"
#include "Utils.h"
#include <ESP32Servo.h>
#ifndef ServoFreioModel
#define ServoFreioModel
class ServoFreio {
public:
ServoFreio(String _modID, String _id) {
Mod_ID = _modID;
_ID = _id;
}
String Mod_ID;
String _ID;
PinoModel _pino;
bool Incremental = true;
bool Iniciado = false;
int _Angulo = 0;
Servo _Servo;
void Inicializar() {
if (Iniciado) {
//EnviarDadosSerial(_ID + " ja inicializado");
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
return;
}
if (_pino.Definido()) {
_Servo.attach(_pino.num);
_Servo.write(Incremental ? 0 : 180);
}
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
if (_pino.Definido()) {
_Servo.detach();
}
//EnviarDadosSerial(_ID + " Desligado");
Iniciado = false;
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
}
void AtualizarAngulo(int novoAngulo) {
_Angulo = novoAngulo;
_Servo.write(_Angulo);
}
void RequisitarDados() {
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sFRO, _ID, MontarDadosProtocoloFreio(Iniciado, _Angulo)));
}
};
#endif