Skip to content

Commit 06418a1

Browse files
committed
Merge branch 'develop'
2 parents 17a291c + 80ca03d commit 06418a1

File tree

4 files changed

+166
-167
lines changed

4 files changed

+166
-167
lines changed

PIDfromBT.cpp

Lines changed: 72 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77

88
#include <PIDfromBT.h>
99

10+
/**
11+
* Constructor del objeto PIDfromBT de tipo PIDV; Proporcional, Integral, Derivada, Velocidad
12+
* @param kp Referencia a la constante de Proporcionalidad
13+
* @param ki Referencia a la constante de Integración
14+
* @param kd Referencia a la constante de Derivación
15+
* @param vel Reverencia a la variable de Velocidad
16+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
17+
*/
1018
PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, bool debug)
1119
{
1220
_kp = kp; // P
@@ -15,12 +23,21 @@ PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, bool debug)
1523
_vel = vel; // V
1624

1725
_debug = debug;
18-
valor = "";
19-
letra = ' ';
20-
last_millis = millis();
26+
_value = "";
27+
_letter = ' ';
28+
_last_update = millis();
2129
_type = TYPE_PIDV;
2230
}
2331

32+
/**
33+
* Constructor del objeto PIDfromBT de tipo PIDVI; Proporcional, Integral, Derivada, Velocidad, Ideal
34+
* @param kp Referencia a la constante de Proporcionalidad
35+
* @param ki Referencia a la constante de Integración
36+
* @param kd Referencia a la constante de Derivación
37+
* @param vel Reverencia a la variable de Velocidad
38+
* @param ideal Referencia a la variable de Ideal o Consigna de Posición
39+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
40+
*/
2441
PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, int* ideal, bool debug)
2542
{
2643
_kp = kp; // P
@@ -32,12 +49,22 @@ PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, int* ideal, bool
3249
_minIdeal = MIN_IDEAL;
3350

3451
_debug = debug;
35-
valor = "";
36-
letra = ' ';
37-
last_millis = millis();
52+
_value = "";
53+
_letter = ' ';
54+
_last_update = millis();
3855
_type = TYPE_PIDVI;
3956
}
4057

58+
/**
59+
* Constructor del objeto PIDfromBT de tipo PIDVIS; Proporcional, Integral, Derivada, Velocidad, Ideal, Succión
60+
* @param kp Referencia a la constante de Proporcionalidad
61+
* @param ki Referencia a la constante de Integración
62+
* @param kd Referencia a la constante de Derivación
63+
* @param vel Reverencia a la variable de Velocidad
64+
* @param ideal Referencia a la variable de Ideal o Consigna de Posición
65+
* @param suction Referencia a la variable de Succion o Velocidad del Ventilador/Turbina
66+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
67+
*/
4168
PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, int* ideal, int* suction, bool debug)
4269
{
4370
_kp = kp; // P
@@ -50,91 +77,107 @@ PIDfromBT::PIDfromBT(float* kp, float* ki, float* kd, int* vel, int* ideal, int*
5077
_minIdeal = MIN_IDEAL;
5178

5279
_debug = debug;
53-
valor = "";
54-
letra = ' ';
55-
last_millis = millis();
80+
_value = "";
81+
_letter = ' ';
82+
_last_update = millis();
5683
_type = TYPE_PIDVIS;
5784
}
5885

59-
86+
/**
87+
* Función para comprobar si existen comandos pendientes en el Buffer de entrada; debe ejecutarse
88+
* esta función al menos una vez por cada ciclo de ejecución
89+
*/
6090
void PIDfromBT::update() {
6191
if (Serial.available()) {
62-
// Si hay algo pendiente en el Buffer, lo lee y guarda el tiempo en el que lo leyo.
92+
// Si hay algo pendiente en el Buffer, lo lee y guarda el tiempo en el que lo leyó
6393
_last_update = millis();
6494
byte readByte = Serial.read();
6595

6696
if ((isDigit((char)readByte) || (char)readByte == '.' || (char)readByte == '-')) {
67-
// Si es un dígito, signo decimal o signo negativo, lo guarda como un valor.
97+
// Si es un dígito, signo decimal o signo negativo, lo guarda como un valor
6898
_value += (char)readByte;
6999
}else{
70100
if(_letter != ' '){
71-
// Si es una letra y ya hay otra letra ya leída, ejecuta la acción correspondiente a esa letra.
101+
// Si es una letra y ya hay otra letra ya leída, ejecuta la acción correspondiente a esa letra
72102
execute_task(_letter, (_value!="")?_value.toFloat():0);
73103
}
74-
// Llega una nueva letra; limpia el _value anterior y lee la nueva letra.
104+
// Llega una nueva letra; limpia el _value anterior y lee la nueva letra
75105
_value = "";
76106
_letter = (char)readByte;
77107
}
78108
}else if((millis()-_last_update) > 5 && _letter != ' '){
79-
// Si no se ha recibido nada en los últimos 5ms y hay alguna letra pendiente, ejecuta su acción correspondiente.
109+
// Si no se ha recibido nada en los últimos 5ms y hay alguna letra pendiente, ejecuta su acción correspondiente
80110
execute_task(_letter, (_value!="")?_value.toFloat():0);
81111
_letter = ' ';
82112
_value = "";
83113
}
84114
}
85115

86-
116+
/**
117+
* Función para modificar el valor de la variable indicada por la letra
118+
* @param letter Letra que identifica la variable que hay que modificar
119+
* @param value Valor que tomará la variable indicada por la Letra anterior
120+
*/
87121
void PIDfromBT::execute_task(char letter, float value)
88122
{
89123
switch (letter) {
90124
case 'P':
91125
if(_type < TYPE_PIDV)return;
92-
*_kp = valor;
93-
if (print) {
126+
*_kp = value;
127+
if (_debug) {
94128
Serial.println("Kp: " + String(value));
95129
}
96130
break;
97131
case 'I':
98132
if(_type < TYPE_PIDV)return;
99133
*_ki = value;
100-
if (print) {
134+
if (_debug) {
101135
Serial.println("Ki: " + String(value));
102136
}
103137
break;
104138
case 'D':
105139
if(_type < TYPE_PIDV)return;
106140
*_kd = value;
107-
if (print) {
141+
if (_debug) {
108142
Serial.println("Kd: " + String(value));
109143
}
110144
break;
111145
case 'V':
112146
if(_type < TYPE_PIDV)return;
113147
*_vel = value;
114-
if (print) {
115-
Serial.println("Vel: " + String(value));
148+
if (_debug) {
149+
Serial.println("Vel: " + String(*_vel));
116150
}
117151
break;
118152
case 'X':
119153
if(_type < TYPE_PIDVI)return;
120-
*_ideal = map(value, -1000, 1000, minIdeal, maxIdeal);;
121-
if (print) {
122-
Serial.println("Ideal: " + String(*ideal));
154+
*_ideal = map(value, -500, 500, _minIdeal, _maxIdeal);;
155+
if (_debug) {
156+
Serial.println("Ideal: " + String(*_ideal));
123157
}
124158
break;
125159
case 'S':
126-
if(_type < TYPE_PIDVS)return;
127-
*_suction = value.toInt();
128-
if (print) {
129-
Serial.println("Suc: " + String(value));
160+
if(_type < TYPE_PIDVIS)return;
161+
*_suction = value;
162+
if (_debug) {
163+
Serial.println("Suc: " + String(*_suction));
130164
}
131165
break;
132166
}
133167
}
134168

169+
/**
170+
* Función para establecer el ideal mínimo en cualquier momento
171+
* @param minIdeal Valor entero para el mínimo ideal
172+
*/
135173
void PIDfromBT::setMinIdeal(int minIdeal){
136174
_minIdeal = minIdeal;
137175
}
176+
177+
/**
178+
* Función para establecer el idea máximo en cualquier momento
179+
* @param maxIdeal Valor entero para el máximo ideal
180+
*/
138181
void PIDfromBT::setMaxIdeal(int maxIdeal){
139182
_maxIdeal = maxIdeal;
140183
}

PIDfromBT.h

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,80 @@
11
#ifndef PIDfromBT_h
22
#define PIDfromBT_h
33
#define LIBRARY_VERSION 1.0
4-
#include <SoftwareSerial.h>
54
class PIDfromBT
65
{
76

8-
#define DEBUG 1
9-
#define NO_DEBUG 0
7+
#define DEBUG true
8+
#define NO_DEBUG false
109

11-
#define MIN_IDEAL 0
12-
#define MAX_IDEAL 500
10+
#define MIN_IDEAL -500 // Valor por defecto del Mínimo Ideal
11+
#define MAX_IDEAL 500 // Valor por defecto del Máimo Ideal
1312

14-
#define TYPE_PIDV 1
15-
#define TYPE_PIDVI 2
16-
#define TYPE_PIDVIS 3
13+
#define TYPE_PIDV 1 // Tipo Proporcional, Integral, Derivada, Velocidad
14+
#define TYPE_PIDVI 2 // Tipo Proporcional, Integral, Derivada, Velocidad, Ideal
15+
#define TYPE_PIDVIS 3 // Tipo Proporcional, Integral, Derivada, Velocidad, Ideal, Succion
1716

1817
public:
19-
20-
// PIDV
18+
/**
19+
* Constructor del objeto PIDfromBT de tipo PIDV; Proporcional, Integral, Derivada, Velocidad
20+
* @param kp Referencia a la constante de Proporcionalidad
21+
* @param ki Referencia a la constante de Integración
22+
* @param kd Referencia a la constante de Derivación
23+
* @param vel Reverencia a la variable de Velocidad
24+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
25+
*/
2126
PIDfromBT(float* kp, float* kd, float* ki, int* vel, bool debug);
2227

23-
// PIDVI
28+
/**
29+
* Constructor del objeto PIDfromBT de tipo PIDVI; Proporcional, Integral, Derivada, Velocidad, Ideal
30+
* @param kp Referencia a la constante de Proporcionalidad
31+
* @param ki Referencia a la constante de Integración
32+
* @param kd Referencia a la constante de Derivación
33+
* @param vel Reverencia a la variable de Velocidad
34+
* @param ideal Referencia a la variable de Ideal o Consigna de Posición
35+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
36+
*/
2437
PIDfromBT(float* kp, float* kd, float* ki, int* vel, int* ideal, bool debug);
2538

26-
// PIDVIS
39+
40+
/**
41+
* Constructor del objeto PIDfromBT de tipo PIDVIS; Proporcional, Integral, Derivada, Velocidad, Ideal, Succión
42+
* @param kp Referencia a la constante de Proporcionalidad
43+
* @param ki Referencia a la constante de Integración
44+
* @param kd Referencia a la constante de Derivación
45+
* @param vel Reverencia a la variable de Velocidad
46+
* @param ideal Referencia a la variable de Ideal o Consigna de Posición
47+
* @param suction Referencia a la variable de Succion o Velocidad del Ventilador/Turbina
48+
* @param debug Parámetro que indica si se imprimirán los valores establecidos
49+
*/
2750
PIDfromBT(float* kp, float* kd, float* ki, int* vel, int* ideal, int* suction, bool debug);
2851

52+
/**
53+
* Función para comprobar si existen comandos pendientes en el Buffer de entrada; debe ejecutarse
54+
* esta función al menos una vez por cada ciclo de ejecución
55+
*/
56+
void update();
57+
58+
/**
59+
* Función para establecer el ideal mínimo en cualquier momento
60+
* @param minIdeal Valor entero para el mínimo ideal
61+
*/
2962
void setMinIdeal(int minIdeal);
3063

64+
/**
65+
* Función para establecer el idea máximo en cualquier momento
66+
* @param maxIdeal Valor entero para el máximo ideal
67+
*/
3168
void setMaxIdeal(int maxIdeal);
3269

33-
bool update();
34-
3570
private:
36-
void execute_task();
71+
/**
72+
* Función para modificar el valor de la variable indicada por la letra
73+
* @param letter Letra que identifica la variable que hay que modificar
74+
* @param value Valor que tomará la variable indicada por la Letra anterior
75+
*/
76+
void execute_task(char letter, float value);
77+
3778
String _value;
3879
char _letter;
3980
long _last_update;

0 commit comments

Comments
 (0)