139 lines
2.6 KiB
Arduino
139 lines
2.6 KiB
Arduino
|
|
enum T_Code {
|
||
|
|
Vzo = 200,
|
||
|
|
Mov = 100,
|
||
|
|
Dir = 101,
|
||
|
|
Sen = 102,
|
||
|
|
Atu = 103,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum F_Code {
|
||
|
|
Nda = 200,
|
||
|
|
Chk = 244,
|
||
|
|
Cfg = 258,
|
||
|
|
Tst = 288,
|
||
|
|
Cmd = 293,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum S_Code {
|
||
|
|
sRPM,
|
||
|
|
sTST,
|
||
|
|
sCfg,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum Sentido {
|
||
|
|
Parado,
|
||
|
|
Horario,
|
||
|
|
Antihorario,
|
||
|
|
};
|
||
|
|
|
||
|
|
#define D_Code Dir
|
||
|
|
|
||
|
|
int PinoReleGeral = 23;
|
||
|
|
bool Conectado = false;
|
||
|
|
|
||
|
|
const char EndLine = '$';
|
||
|
|
const char BeginSensor = '#';
|
||
|
|
int _TaxaAmostragem;
|
||
|
|
bool M1_Ativado = false;
|
||
|
|
bool M2_Ativado = false;
|
||
|
|
bool M3_Ativado = false;
|
||
|
|
bool M4_Ativado = false;
|
||
|
|
|
||
|
|
void setup() {
|
||
|
|
Serial.begin(115200);
|
||
|
|
pinMode(PinoReleGeral, OUTPUT);
|
||
|
|
digitalWrite(PinoReleGeral, LOW);
|
||
|
|
}
|
||
|
|
|
||
|
|
void loop() {
|
||
|
|
if (Serial.available() > 3) {
|
||
|
|
String Protocolo = "";
|
||
|
|
//1000;080;1;020;001
|
||
|
|
F_Code _funcao = Nda;
|
||
|
|
while (Serial.available()) {
|
||
|
|
char Entrada = (char)Serial.read();
|
||
|
|
if (Entrada == EndLine) {
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
Protocolo += Entrada;
|
||
|
|
if (Protocolo.length() == 3) {
|
||
|
|
if (_funcao == Nda) {
|
||
|
|
_funcao = (F_Code)((String)Protocolo[0] + (String)Protocolo[1] + (String)Protocolo[2]).toInt();
|
||
|
|
Protocolo = "";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (_funcao == Chk) {
|
||
|
|
Serial.println((String)D_Code + (String)_funcao);
|
||
|
|
Serial.flush();
|
||
|
|
}
|
||
|
|
else if (_funcao == Cfg) {
|
||
|
|
Conectado = (String)Protocolo[0] == "1";
|
||
|
|
_TaxaAmostragem = ((String)Protocolo[2] + (String)Protocolo[3] + (String)Protocolo[4] + (String)Protocolo[5] + (String)Protocolo[6]).toInt();
|
||
|
|
M1_Ativado = (String)Protocolo[8] == "1";
|
||
|
|
M2_Ativado = (String)Protocolo[10] == "1";
|
||
|
|
M3_Ativado = (String)Protocolo[12] == "1";
|
||
|
|
M4_Ativado = (String)Protocolo[14] == "1";
|
||
|
|
if (M1_Ativado) {
|
||
|
|
if (Conectado) {
|
||
|
|
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
|
||
|
|
}
|
||
|
|
vTaskDelay(500);
|
||
|
|
}
|
||
|
|
if (M2_Ativado) {
|
||
|
|
if (Conectado) {
|
||
|
|
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
|
||
|
|
}
|
||
|
|
vTaskDelay(500);
|
||
|
|
}
|
||
|
|
if (M3_Ativado) {
|
||
|
|
if (Conectado) {
|
||
|
|
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
|
||
|
|
}
|
||
|
|
vTaskDelay(500);
|
||
|
|
}
|
||
|
|
if (M4_Ativado) {
|
||
|
|
if (Conectado) {
|
||
|
|
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
vTaskDelay(500);
|
||
|
|
}
|
||
|
|
|
||
|
|
digitalWrite(PinoReleGeral, Conectado);
|
||
|
|
|
||
|
|
vTaskDelay(100);
|
||
|
|
|
||
|
|
String Protocolo = BeginSensor + ((String)sCfg) + "ET;" + (String)Conectado;
|
||
|
|
Serial.println(Protocolo);
|
||
|
|
Serial.flush();
|
||
|
|
}
|
||
|
|
else if (_funcao == Cmd) {
|
||
|
|
Serial.println(Protocolo);
|
||
|
|
//canal;potencia;sentido;rampa;precisao;rpm
|
||
|
|
//0;000;0;000;000;000
|
||
|
|
|
||
|
|
}
|
||
|
|
else if (_funcao == Tst) {
|
||
|
|
// teste
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
delay(10);
|
||
|
|
|
||
|
|
}
|