Está en la página 1de 2

#define NEUTRAL 1

#define DIRECTA 2
#define REVERSA 3
#define FRENAR 4

class Motor {
protected:
int pinEnable, pinS1, pinS2;
bool Enable, S1, S2;
String direccion;

public:
Motor(int _pinEnable = 13, int _pinS1 = 12, int _pinS2 = 11);
int GetPinEnable();
int GetPinS1();
int GetPinS2();
bool GetEnable();
bool GetS1();
bool GetS2();
String GetDireccion();
void SetPinEnable(int valor);
void SetPinS1(int valor);
void SetPinS2(int valor);
void SetEnable(bool valor);
void SetS1(bool valor);
void SetS2(bool valor);
void SetDireccion(String valor);
void Apagar();
void CambiarDireccion(int valor);
};

Motor::Motor(int _pinEnable, int _pinS1, int _pinS2) {


pinEnable = _pinEnable;
pinS1 = _pinS1;
pinS2 = _pinS2;
pinMode(pinEnable, OUTPUT);
pinMode(pinS1, OUTPUT);
pinMode(pinS2, OUTPUT);
direccion = "NEUTRO";
Enable = false; // Deshabilita el controlador del motor
S1 = 0; // NEUTRO
S2 = 0; //
// enviando las se�ales al controlador de potencia
digitalWrite(pinEnable, Enable);
digitalWrite(pinS1, S1);
digitalWrite(pinS2, S2);
}
int Motor::GetPinEnable() { return pinEnable; }
int Motor::GetPinS1() { return pinS1; }
int Motor::GetPinS2() { return pinS2; }
bool Motor::GetEnable() { return Enable; }
bool Motor::GetS1() { return S1; }
bool Motor::GetS2() { return S2; }
String Motor::GetDireccion() { return direccion; }
void Motor::SetPinEnable(int valor) { pinEnable = valor; pinMode(pinEnable,
OUTPUT); }
void Motor::SetPinS1(int valor) { pinS1 = valor; pinMode(pinS1, OUTPUT);}
void Motor::SetPinS2(int valor) { pinS2 = valor; pinMode(pinS2, OUTPUT);}
void Motor::SetEnable(bool valor) {
Enable = valor;
digitalWrite(pinEnable, Enable);
}
void Motor::SetS1(bool valor) { S1 = valor; digitalWrite(pinS1, S1); }
void Motor::SetS2(bool valor) { S2 = valor; digitalWrite(pinS2, S2);}
void Motor::SetDireccion(String valor) { direccion = valor; }
void Motor::CambiarDireccion(int valor) {
SetEnable(false); // deshabilitar motor
switch(valor) {
case NEUTRAL:SetS1(false); // S1 = 0
SetS2(false); // S2 = 0
direccion = "NEUTRAL";
break;
case REVERSA:SetS1(false); // S1 = 0
SetS2(true); // S2 = 1
direccion = "REVERSA";
break;
case DIRECTA:SetS1(true); // S1 = 1
SetS2(false); // S2 = 0
direccion = "DIRECTA";
break;
case FRENAR: SetS1(true); // S1 = 1
SetS2(true); // S2 = 1
direccion = "FRENAR";
break;
}
SetEnable(true); //habilitar motor
}
void Motor::Apagar() {
SetS1(false); // S1 = 0
SetS2(false); // S2 = 0
SetEnable(false);
}

También podría gustarte