Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 12:ff38af85a4ba, committed 2016-11-04
- Comitter:
- Gustavo_Eduardo338
- Date:
- Fri Nov 04 20:19:08 2016 +0000
- Parent:
- 11:965d5afe3a63
- Commit message:
- Version Estable
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Oct 01 18:03:24 2016 +0000
+++ b/main.cpp Fri Nov 04 20:19:08 2016 +0000
@@ -141,46 +141,29 @@
********************************************************************************************************/
#define A0_USO OFF //-> Divisor de voltaje para medir bateria VDD
-#define A1_USO OFF //-> Temperatura PT1000 (Borneras Shield de pruebas) Borneras
+#define A1_USO ON //-> Temperatura PT1000 (Borneras Shield de pruebas) Borneras
#define A2_USO OFF //-> Temperatura PT1000 (Borneras Shield de pruebas)
#define A3_USO OFF //-> Humedad (Borneras Shield de pruebas)
#define A4_USO OFF //-> Humedad (Borneras Shield de pruebas)
-#define A5_USO ON //-> Conectarlo al LM35
-
-#define A0_TED 0 //Volts, bateria
-#define A1_TED 0 // ºC temperatura PT 1000
-#define A2_TED 0 // ºC temperatura PT 1000
-#define A3_TED 0
-#define A4_TED 0
-#define A5_TED 39.10 // ºC temperatura ambiental con el LM35
+#define A5_USO OFF //-> Conectarlo al LM35
-#define D0_USO OFF //Ejemplo: ON
-#define D1_USO OFF //Ejemplo: OFF
-#define D2_USO OFF
-#define D3_USO ON
-#define D4_USO ON
-#define D5_USO ON
-#define D6_USO ON
-#define D7_USO OFF
-#define D8_USO OFF
-#define D9_USO OFF //BUTTON 1 (NRF51-DK)
-#define D10_USO OFF //BUTTON 2 (NRF51-DK)
-#define D11_USO OFF //BUTTON 3 (NRF51-DK)
-#define D12_USO OFF //BUTTON 4 (NRF51-DK)
-#define D13_USO OFF
-#define D14_USO OFF
-#define D15_USO OFF
+#define A0_TED 39.10 //Volts, bateria
+#define A1_TED 39.10 // ºC temperatura PT 1000
+#define A2_TED 39.10 // ºC temperatura PT 1000
+#define A3_TED 39.10
+#define A4_TED 39.10
+#define A5_TED 39.10 // ºC temperatura ambiental con el LM35
#define D0_TYPE NONE // Ejemplo: OUT
#define D1_TYPE NONE // Ejemplo: IN
#define D2_TYPE NONE // Para medir Humedad con Resistencia AC
-#define D3_TYPE OUT // Led encienden con 1
+#define D3_TYPE NONE // Led encienden con 1
#define D4_TYPE OUT // Led encienden con 0
-#define D5_TYPE OUT // Led encienden con 0
-#define D6_TYPE OUT // Led encienden con 1
-#define D7_TYPE NONE // Pushbuttons (Activos en bajo)
-#define D8_TYPE NONE // Pushbuttons (Activos en bajo)
-#define D9_TYPE NONE // DIP Switch 1 (Activos en bajo)
+#define D5_TYPE NONE // Led encienden con 0
+#define D6_TYPE PWM // Led encienden con 1
+#define D7_TYPE OUT // Pushbuttons (Activos en bajo)
+#define D8_TYPE IN // Pushbuttons (Activos en bajo)
+#define D9_TYPE NONE // DIP Switch 1 (Activos en bajo)
#define D10_TYPE NONE // DIP Switch 2 (Activos en bajo)
#define D11_TYPE NONE // DIP Switch 3 (Activos en bajo)
#define D12_TYPE NONE // Para medir Humedad con Resistencia AC
@@ -201,189 +184,147 @@
*************************************************************************************/
//Macros analogicas
-AnalogIn ANALOG_A0(A0); //Bateria
+AnalogIn ANALOG_A0(A0);
AnalogIn ANALOG_A1(A1);
AnalogIn ANALOG_A2(A2);
AnalogIn ANALOG_A3(A3);
AnalogIn ANALOG_A4(A4);
AnalogIn ANALOG_A5(A5); //Temperatura ambiental con LM35
-#if D0_USO == ON
- #if D0_TYPE == IN
- DigitalIn PIN_D0(D0);
- #else
- DigitalOut PIN_D0(D0);
- #endif
-#endif
+// Indica si alguien esta conectado al dispositivo.
+DigitalOut PIN_CONNECT(D13);
-#if D1_USO == ON
- #if D1_TYPE == IN
- DigitalIn PIN_D1(D1);
- #else
- DigitalOut PIN_D1(D1);
- #endif
+#if D2_TYPE == IN
+ DigitalIn PIN_D2(D2);
+#elif D2_TYPE == OUT
+ DigitalOut PIN_D2(D2);
+#else
+ int PIN_D2 = 0;
#endif
-#if D2_USO == ON
- #if D2_TYPE == IN
- DigitalIn PIN_D2(D2);
- #else
- DigitalOut PIN_D2(D2);
- #endif
+#if D3_TYPE == IN
+ DigitalIn PIN_D3(D3);
+#elif D3_TYPE == OUT
+ DigitalOut PIN_D3(D3);
#else
- static int PIN_D2 = 0;
+ int PIN_D3 = 0;
#endif
-#if D3_USO == ON
- #if D3_TYPE == IN
- DigitalIn PIN_D3(D3);
- #else
- DigitalOut PIN_D3(D3);
- #endif
-#endif
-
-#if D4_USO == ON
- #if D4_TYPE == IN
- DigitalIn PIN_D4(D4);
- #else
- DigitalOut PIN_D4(D4);
- #endif
+#if D4_TYPE == NONE
+ static int PIN_D4 = 0;
+#elif D4_TYPE == IN
+ DigitalIn PIN_D4(D4);
+#elif D4_TYPE == OUT
+ DigitalOut PIN_D4(D4);
+#else
+ int PIN_D4 = 0;
#endif
-#if D5_USO == ON
- #if D5_TYPE == IN
- DigitalIn PIN_D5(D5);
- #endif
- #if D5_TYPE == OUT
- DigitalOut PIN_D5(D5);
- #endif
- #if D5_TYPE == PWM
- PwmOut PIN_D5(D5);
- #endif
+#if D5_TYPE == IN
+ DigitalIn PIN_D5(D5);
+#elif D5_TYPE == OUT
+ DigitalOut PIN_D5(D5);
+#elif D5_TYPE == PWM
+ PwmOut PIN_D5(D5);
+#else
+ int PIN_D5 = 0;
+#endif
+
+#if D6_TYPE == IN
+ DigitalIn PIN_D6(D6);
+#elif D6_TYPE == OUT
+ DigitalOut PIN_D6(D6);
+#elif D6_TYPE == PWM
+ PwmOut PIN_D6(D6);
+#else
+ int PIN_D6 = 0;
#endif
-#if D6_USO == ON
- #if D6_TYPE == IN
- DigitalIn PIN_D6(D6);
- #endif
- #if D6_TYPE == OUT
- DigitalOut PIN_D6(D6);
- #endif
- #if D6_TYPE == PWM
- PwmOut PIN_D6(D6);
- #endif
+#if D7_TYPE == IN
+ DigitalIn PIN_D7(D7);
+#elif D7_TYPE == OUT
+ DigitalOut PIN_D7(D7);
+#else
+ int PIN_D7 = 0;
#endif
-#if D7_USO == ON
- #if D7_TYPE == IN
- DigitalIn PIN_D7(D7);
- #endif
- #if D7_TYPE == OUT
- DigitalOut PIN_D7(D7);
- #endif
+#if D8_TYPE == IN
+ DigitalIn PIN_D8(D8);
+#elif D8_TYPE == OUT
+ DigitalOut PIN_D8(D8);
#else
- static int PIN_D7 = 0;
+ int PIN_D8 = 0;
#endif
-#if D8_USO == ON
- #if D8_TYPE == IN
- DigitalIn PIN_D8(D8);
- #endif
- #if D8_TYPE == OUT
- DigitalOut PIN_D8(D8);
- #endif
+#if D9_TYPE == IN
+ DigitalIn PIN_D9(D9);
+#elif D9_TYPE == OUT
+ DigitalOut PIN_D9(D9);
+#elif D9_TYPE == PWM
+ PwmOut PIN_D9(D9);
#else
- static int PIN_D8 = 0;
+ int PIN_D9 = 0;
#endif
-#if D9_USO == ON
- #if D9_TYPE == IN
- DigitalIn PIN_D9(D9);
- #endif
- #if D9_TYPE == OUT
- DigitalOut PIN_D9(D9);
- #endif
- #if D9_TYPE == PWM
- PwmOut PIN_D9(D9);
- #endif
+#if D10_TYPE == IN
+ DigitalIn PIN_D10(D10);
+#elif D10_TYPE == OUT
+ DigitalOut PIN_D10(D10);
#else
- static int PIN_D9 = 0;
+ int PIN_D10 = 0;
#endif
-#if D10_USO == ON
- #if D10_TYPE == IN
- DigitalIn PIN_D10(D10);
- #endif
- #if D10_TYPE == OUT
- DigitalOut PIN_D10(D10);
- #endif
+#if D11_TYPE == IN
+ DigitalIn PIN_D11(D11);
+#elif D11_TYPE == OUT
+ DigitalOut PIN_D11(D11);
#else
- static int PIN_D10 = 0;
-#endif
-
-#if D11_USO == ON
- #if D11_TYPE == IN
- DigitalIn PIN_D11(D11);
- #endif
- #if D11_TYPE == OUT
- DigitalOut PIN_D11(D11);
- #endif
-#else
- static int PIN_D11 = 0;
+ int PIN_D11 = 0;
#endif
-#if D12_USO == ON
- #if D12_TYPE == IN
- DigitalIn PIN_D12(D12);
- #endif
- #if D12_TYPE == OUT
- DigitalOut PIN_D12(D12);
- #endif
+#if D12_TYPE == IN
+ DigitalIn PIN_D12(D12);
+#elif D12_TYPE == OUT
+ DigitalOut PIN_D12(D12);
#else
- static int PIN_D12 = 0;
+ int PIN_D12 = 0;
#endif
-#if D13_USO == ON
- #if D13_TYPE == IN
- DigitalIn PIN_D13(D13);
- #endif
- #if D13_TYPE == OUT
- DigitalOut PIN_D13(D13);
- #endif
+#if D13_TYPE == IN
+ DigitalIn PIN_D13(D13);
+#elif D13_TYPE == OUT
+ DigitalOut PIN_D13(D13);
#else
- static int PIN_D13 = 0;
+ int PIN_D13 = 0;
#endif
-#if D14_USO == ON
- #if D14_TYPE == IN
- DigitalIn PIN_D14(D14);
- #endif
- #if D14_TYPE == OUT
- DigitalOut PIN_D14(D14);
- #endif
+#if D14_TYPE == IN
+ DigitalIn PIN_D14(D14);
+#elif D14_TYPE == OUT
+ DigitalOut PIN_D14(D14);
#else
- static int PIN_D14 = 0;
+ int PIN_D14 = 0;
#endif
-#if D15_USO == ON
- #if D15_TYPE == IN
- DigitalIn PIN_D15(D15);
- #endif
- #if D15_TYPE == OUT
- DigitalOut PIN_D15(D15);
- #endif
+#if D15_TYPE == IN
+ DigitalIn PIN_D15(D15);
+#elif D15_TYPE == OUT
+ DigitalOut PIN_D15(D15);
#else
- static int PIN_D15 = 0;
+ int PIN_D15 = 0;
#endif
//Hasta aqui la definicion de macos
//Digital Inputs --> DATA VALUE
-uint16_t DigitalInput_DATA = 0x0000; //Mapa de bits con los valores de la entrada digital segun la posicion
-uint16_t ESTADO_ENTRADAS_DIGITALES = 0x0000;
+uint16_t DigitalInput_DATA = 0x0000; // Mapa de bits con los valores de la entrada digital segun la posicion
+uint16_t DigitalOutput_DATA = 0x0000; // Mapa de bits con los valores de la entrada digital segun la posicion
+uint16_t ESTADO_ENTRADAS_DIGITALES = 0x0000; // Mapa de bits de los estados de las entradas digitales
+uint16_t ESTADO_SALIDAS_DIGITALES = 0x0000; // Mapa de bits de las salidas digitales
+uint16_t ESTADO_ENTRADAS_DIGITALES_OLD = 0x0000;// Almacena temporalmente el estado de las salidas digitales.
uint16_t PAQUETE_ID = 0;
-
+static bool CONNECTED;
float AnalogInput_Ted [6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; //Si el TED es cero, es que no está en uso
//Digital input, cantidad, posiciones --> de todos, ted = 0, tipico hasta 16
@@ -406,22 +347,19 @@
static int8_t SEND_CONFIG_GENERAL = 0;
static int8_t SEND_CONFIG_ANALOG_0, SEND_CONFIG_ANALOG_1, SEND_CONFIG_ANALOG_2, SEND_CONFIG_ANALOG_3, SEND_CONFIG_ANALOG_4, SEND_CONFIG_ANALOG_5;
-
+static bool publish_D0; // Indica si es necesario informar al gateway sobre estado de las salidas digitales
+static bool publish_D1; // Indica si es necesario informar al gateway sobre estado de las entradas digitales
BLE ble;
// Permite imprimir mensajes en la consola
Serial pc(USBTX, USBRX);
-static uint8_t analog_enabled;
-
// Para las entradas digitales (Botones)
-static uint8_t state_button_2 = 0, state_button_3 = 0,state_button_4 = 0,state_button_5 = 0 ;
-static uint8_t state_button_6 = 0, state_button_7 = 0, state_button_8 = 0, state_button_9 = 0,state_button_10 = 0,state_button_11 = 0 ;
-static uint8_t state_button_12 = 0, state_button_13 = 0, state_button_14 = 0, state_button_15 = 0;
// Para las entradas analogicas (Sensores)
-static float value_A0, value_A1, value_A2, value_A3, value_A4, value_A5;
+static float value_A5, value_A4, value_A3, value_A2, value_A1, value_A0;
+
// The Nordic UART Service
static const uint8_t uart_base_uuid[] = {0x71, 0x3D, 0, 0, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E};
@@ -431,6 +369,9 @@
// Trama de Configuracion de los Pines (a).
static uint8_t TRAMA_CONFIG_GENERAL[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00}; // Length 12
+static uint8_t TRAMA_CONFIG_ANALOG[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 6
+static uint8_t LECTURA_DIGITAL[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 6
+static uint8_t LECTURA_ANALOGICA[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Length 5
uint8_t txPayload[TXRX_BUF_LEN] = {0,};
uint8_t rxPayload[TXRX_BUF_LEN] = {0,};
@@ -448,7 +389,6 @@
pc.printf("Disconnected \r\n");
pc.printf("Restart advertising \r\n");
ble.startAdvertising();
- analog_enabled = 0; // Deja que envie lecturas el PT 1000
SEND_CONFIG_GENERAL = 0;
@@ -459,22 +399,40 @@
SEND_CONFIG_ANALOG_3 = OFF;
SEND_CONFIG_ANALOG_4 = OFF;
SEND_CONFIG_ANALOG_5 = OFF;
-
+ CONNECTED = false;
+ PIN_CONNECT = 0;
}
// Carga la configuración de las entradas digitales del MOTE.
void readDigitalInputs_Value ()
{
- // ORIGINAL
- //DigitalInput_DATA = (uint16_t) ((BUTTON_15 << 15) | (BUTTON_14 << 14) | (BUTTON_13 << 13) | (BUTTON_12 << 12) | (BUTTON_11 << 11) | (BUTTON_10 << 10) | (BUTTON_9 << 9) | (BUTTON_8 << 8) | (BUTTON_7 << 7) | (BUTTON_6 << 6) |(BUTTON_5 << 5) | (BUTTON_4 << 4) | (BUTTON_3 << 3) | (BUTTON_2 << 2));
DigitalInput_DATA = (uint16_t) (((D15_TYPE == IN ? 1:0) << 15) | ((D14_TYPE == IN?1:0)<< 14) | ((D13_TYPE == IN ?1:0) << 13) | ((D12_TYPE == IN ?1:0) << 12) | ((D11_TYPE == IN ?1:0) << 11) | ((D10_TYPE == IN? 1:0) << 10) | ((D9_TYPE == IN? 1:0) << 9) | ((D8_TYPE == IN ? 1:0) << 8) | ((D7_TYPE == IN ? 1:0) << 7) | ((D6_TYPE == IN ? 1:0) << 6) |((D5_TYPE == IN ? 1:0) << 5) | ((D4_TYPE == IN ? 1:0) << 4) | ((D3_TYPE == IN ? 1:0) << 3) | ((D2_TYPE == IN ? 1:0) << 2));
}
+// Crea el Mapa de bits de las posiciones ocupadas de los pines digitales de salidas.
+void readActuadoresDigitales()
+{
+ DigitalOutput_DATA = (uint16_t) ((D15_TYPE == OUT ? 1 : 0) << 15) | ((D14_TYPE == OUT ? 1 : 0) << 14) | ((D13_TYPE == OUT ? 1 : 0) << 13) | ((D12_TYPE == OUT ? 1 : 0) << 12);
+ DigitalOutput_DATA |= (uint16_t) ((D11_TYPE == OUT ? 1 : 0) << 11) | ((D10_TYPE == OUT ? 1 : 0) << 10) | ((D9_TYPE == OUT ? 1 : 0) << 9) | ((D8_TYPE == OUT ? 1 : 0) << 8);
+ DigitalOutput_DATA |= (uint16_t) ((D7_TYPE == OUT ? 1 : 0) << 7) | ((D6_TYPE == OUT ? 1 : 0) << 6) | ((D5_TYPE == OUT ? 1 : 0) << 5) | ((D4_TYPE == OUT ? 1 : 0) << 4);
+ DigitalOutput_DATA |= (uint16_t) ((D3_TYPE == OUT ? 1 : 0) << 3) | ((D2_TYPE == OUT ? 1 : 0) << 2) ;
+}
-void cargarEstadoEntradasDigitales(){
- ESTADO_ENTRADAS_DIGITALES = (uint16_t) (((D15_TYPE == IN ? state_button_15 :0) << 15) |((D14_TYPE == IN ? state_button_14 :0) << 14) |((D13_TYPE == IN ? state_button_13 :0) << 13) |((D12_TYPE == IN ? state_button_12 :0) << 12));
- ESTADO_ENTRADAS_DIGITALES |= (uint16_t) (((D11_TYPE == IN ? state_button_11 :0) << 11) |((D10_TYPE == IN ? state_button_10 :0) << 10) |((D9_TYPE == IN ? state_button_9 :0) << 9) |((D8_TYPE == IN ? state_button_8 :0) << 8));
- ESTADO_ENTRADAS_DIGITALES |= (uint16_t) (((D7_TYPE == IN ? state_button_7 :0) << 7) |((D6_TYPE == IN ? state_button_6 :0) << 6) |((D5_TYPE == IN ? state_button_5 :0) << 5) |((D4_TYPE == IN ? state_button_4 :0) << 4));
- ESTADO_ENTRADAS_DIGITALES |= (uint16_t) (((D3_TYPE == IN ? state_button_3 :0) << 3) |((D2_TYPE == IN ? state_button_2 :0) << 2));
+// Crea el Mapa de bits de los estados de los pines digitales de entrada.
+void cargarEstadoEntradasDigitales()
+{
+ ESTADO_ENTRADAS_DIGITALES = (uint16_t) ((D15_TYPE == IN ? PIN_D15 : 0) << 15) | ((D14_TYPE == IN ? PIN_D14 : 0) << 14) | ((D13_TYPE == IN ? PIN_D13 : 0) << 13) | ((D12_TYPE == IN ? PIN_D12 : 0) << 12);
+ ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D11_TYPE == IN ? PIN_D11 : 0) << 11) | ((D10_TYPE == IN ? PIN_D10 : 0) << 10) | ((D9_TYPE == IN ? PIN_D9 : 0) << 9) | ((D8_TYPE == IN ? PIN_D8 : 0) << 8);
+ ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D7_TYPE == IN ? PIN_D7 : 0) << 7) | ((D6_TYPE == IN ? PIN_D6 : 0) << 6) | ((D5_TYPE == IN ? PIN_D5 : 0) << 5) | ((D4_TYPE == IN ? PIN_D4 : 0) << 4);
+ ESTADO_ENTRADAS_DIGITALES |= (uint16_t) ((D3_TYPE == IN ? PIN_D3 : 0) << 3) | ((D2_TYPE == IN ? PIN_D2 : 0) << 2) ;
+}
+
+// Crea el Mapa de bits de los estados de los pines digitales de salida.
+void cargarEstadosSalidasDigitales()
+{
+ ESTADO_SALIDAS_DIGITALES = (uint16_t) ((D15_TYPE == OUT ? PIN_D15 : 0) << 15) | ((D14_TYPE == OUT ? PIN_D14 : 0) << 14) | ((D13_TYPE == OUT ? PIN_D13 : 0) << 13) | ((D12_TYPE == OUT ? PIN_D12 : 0) << 12);
+ ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D11_TYPE == OUT ? PIN_D11 : 0) << 11) | ((D10_TYPE == OUT ? PIN_D10 : 0) << 10) | ((D9_TYPE == OUT ? PIN_D9 : 0) << 9) | ((D8_TYPE == OUT ? PIN_D8 : 0) << 8);
+ ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D7_TYPE == OUT ? PIN_D7 : 0) << 7) | ((D6_TYPE == OUT ? PIN_D6 : 0) << 6) | ((D5_TYPE == OUT ? PIN_D5 : 0) << 5) | ((D4_TYPE == OUT ? PIN_D4 : 0) << 4);
+ ESTADO_SALIDAS_DIGITALES |= (uint16_t) ((D3_TYPE == OUT ? PIN_D3 : 0) << 3) | ((D2_TYPE == OUT ? PIN_D2 : 0) << 2) ;
}
//Funcion para crear los extra bytes
@@ -488,161 +446,23 @@
AnalogInput_Ted [4] = A4_TED;
AnalogInput_Ted [5] = A5_TED;
- if (D15_USO == ON && D15_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D15_USO << 15);
-
- if (D14_USO == ON && D14_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D14_USO << 14);
-
- if (D13_USO == ON && D13_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D13_USO << 13);
-
- if (D12_USO == ON && D12_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D12_USO << 12);
-
- if (D11_USO == ON && D11_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D11_USO << 11);
-
- if (D10_USO == ON && D10_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D10_USO << 10);
-
- if (D9_USO == ON && D9_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D9_USO << 9);
-
- if (D8_USO == ON && D8_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D8_USO << 8);
-
- if (D7_USO == ON && D7_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D7_USO << 7);
-
- if (D6_USO == ON && D6_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D6_USO << 6);
-
- if (D5_USO == ON && D5_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D5_USO << 5);
-
- if (D4_USO == ON && D4_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D4_USO << 4);
-
- if (D3_USO == ON && D3_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D3_USO << 3);
-
- if (D2_USO == ON && D2_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D2_USO << 2);
-
- if (D1_USO == ON && D1_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D1_USO << 1);
-
- if (D0_USO == ON && D0_TYPE == IN)
- DigitalInput_Pos |= (uint16_t) (D0_USO << 0);
-
-
-
-
- if (D15_USO == 1 && D15_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D15_USO << 15);
-
- if (D14_USO == 1 && D14_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D14_USO << 14);
-
- if (D13_USO == 1 && D13_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D13_USO << 13);
-
- if (D12_USO == 1 && D12_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D12_USO << 12);
-
- if (D11_USO == 1 && D11_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D11_USO << 11);
-
- if (D10_USO == 1 && D10_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D10_USO << 10);
-
- if (D9_USO == 1 && D9_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D9_USO << 9);
-
- if (D8_USO == 1 && D8_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D8_USO << 8);
-
- if (D7_USO == 1 && D7_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D7_USO << 7);
+ DigitalInput_Pos = (uint16_t) ((D15_TYPE == IN ? 1:0) << 15) | ((D14_TYPE == IN ? 1:0) << 14) | ((D13_TYPE == IN ? 1:0) << 13)| ((D12_TYPE == IN ? 1:0) << 12);
+ DigitalInput_Pos |= (uint16_t) ((D11_TYPE == IN ? 1:0) << 11) | ((D10_TYPE == IN ? 1:0) << 10) | ((D9_TYPE == IN ? 1:0) << 9) | ((D8_TYPE == IN ? 1:0) << 8);
+ DigitalInput_Pos |= (uint16_t) ((D7_TYPE == IN ? 1:0) << 7) | ((D6_TYPE == IN ? 1:0) << 6) | ((D5_TYPE == IN ? 1:0) << 5) | ((D4_TYPE == IN ? 1:0) << 4);
+ DigitalInput_Pos |= (uint16_t) ((D3_TYPE == IN ? 1:0) << 3) | ((D2_TYPE == IN ? 1:0) << 2) | ((D13_TYPE == IN ? 1:0) << 1) | ((D12_TYPE == IN ? 1:0));
- if (D6_USO == 1 && D6_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D6_USO << 6);
-
- if (D5_USO == 1 && D5_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D5_USO << 5);
-
- if (D4_USO == 1 && D4_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D4_USO << 4);
-
- if (D3_USO == 1 && D3_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D3_USO << 3);
-
- if (D2_USO == 1 && D2_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D2_USO << 2);
-
- if (D1_USO == 1 && D1_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D1_USO << 1);
-
- if (D0_USO == 1 && D0_TYPE == OUT)
- DigitalOutput_Pos |= (uint16_t) (D0_USO << 0);
-
-
-
- if (D15_USO == 1 && D15_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D15_USO << 15);
-
- if (D14_USO == 1 && D14_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D14_USO << 14);
-
- if (D13_USO == 1 && D13_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D13_USO << 13);
-
- if (D12_USO == 1 && D12_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D12_USO << 12);
-
- if (D11_USO == 1 && D11_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D11_USO << 11);
+ DigitalOutput_Pos = (uint16_t) ((D15_TYPE == OUT ? 1:0) << 15) | ((D14_TYPE == OUT ? 1:0) << 14) | ((D13_TYPE == OUT ? 1:0) << 13)| ((D12_TYPE == OUT ? 1:0) << 12);
+ DigitalOutput_Pos |= (uint16_t) ((D11_TYPE == OUT ? 1:0) << 11) | ((D10_TYPE == OUT ? 1:0) << 10) | ((D9_TYPE == OUT ? 1:0) << 9) | ((D8_TYPE == OUT ? 1:0) << 8);
+ DigitalOutput_Pos |= (uint16_t) ((D7_TYPE == OUT ? 1:0) << 7) | ((D6_TYPE == OUT ? 1:0) << 6) | ((D5_TYPE == OUT ? 1:0) << 5) | ((D4_TYPE == OUT ? 1:0) << 4);
+ DigitalOutput_Pos |= (uint16_t) ((D3_TYPE == OUT ? 1:0) << 3) | ((D2_TYPE == OUT ? 1:0) << 2) | ((D13_TYPE == OUT ? 1:0) << 1) | ((D12_TYPE == OUT ? 1:0));
- if (D10_USO == 1 && D10_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D10_USO << 10);
-
- if (D9_USO == 1 && D9_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D9_USO << 9);
-
- if (D8_USO == 1 && D8_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D8_USO << 8);
-
- if (D7_USO == 1 && D7_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D7_USO << 7);
-
- if (D6_USO == 1 && D6_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D6_USO << 6);
-
- if (D5_USO == 1 && D5_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D5_USO << 5);
-
- if (D4_USO == 1 && D4_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D4_USO << 4);
-
- if (D3_USO == 1 && D3_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D3_USO << 3);
-
- if (D2_USO == 1 && D2_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D2_USO << 2);
-
- if (D1_USO == 1 && D1_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D1_USO << 1);
-
- if (D0_USO == 1 && D0_TYPE == PWM)
- DigitalPwm_Pos |= (uint16_t) (D0_USO << 0);
-
-
- //Digital inputs
+ DigitalPwm_Pos = (uint16_t) ((D15_TYPE == PWM ? 1:0) << 15)| ((D14_TYPE == PWM ? 1:0) << 14) | ((D13_TYPE == PWM ? 1:0) << 13)| ((D12_TYPE == PWM ? 1:0) << 12);
+ DigitalPwm_Pos |= (uint16_t) ((D11_TYPE == PWM ? 1:0) << 11) | ((D10_TYPE == PWM ? 1:0) << 10) | ((D9_TYPE == PWM ? 1:0) << 9) | ((D8_TYPE == PWM ? 1:0) << 8);
+ DigitalPwm_Pos |= (uint16_t) ((D7_TYPE == PWM ? 1:0) << 7) | ((D6_TYPE == PWM ? 1:0) << 6) | ((D5_TYPE == PWM ? 1:0) << 5) | ((D4_TYPE == PWM ? 1:0) << 4);
+ DigitalPwm_Pos |= (uint16_t) ((D3_TYPE == PWM ? 1:0) << 3) | ((D2_TYPE == PWM ? 1:0) << 2) | ((D13_TYPE == PWM ? 1:0) << 1) | ((D12_TYPE == PWM ? 1:0));
+
AnalogInput_Pos = (uint16_t) ((A5_USO << 5) | (A4_USO << 4) | (A3_USO << 3) | (A2_USO << 2) | (A1_USO << 1) | (A0_USO << 0));
- //Digital Outputs
-
-
+
//para probar
pc.printf("DigitalInput_Pos = %x \r\n", DigitalInput_Pos);
@@ -664,7 +484,6 @@
TRAMA_CONFIG_GENERAL [9] = 0xD0; // Codigo de las salidas difitales
TRAMA_CONFIG_GENERAL [10] = (DigitalOutput_Pos>> 8);
TRAMA_CONFIG_GENERAL [11] = DigitalOutput_Pos;
-
}
@@ -674,15 +493,17 @@
void connectionCallback(const Gap::ConnectionCallbackParams_t *)
{
pc.printf("connectionCallback \r\n");
+ PIN_CONNECT = 1;
makeExtraBytes_CONFIG();
SEND_CONFIG_GENERAL = 1;
+ CONNECTED = true;
}
// Recepta las caracteristicas que se desea escribir en el mote.
void WrittenHandler(const GattWriteCallbackParams *Handler)
{
- pc.printf("WrittenHandler(const GattWriteCallbackParams *Handler) \r\n");
+ //pc.printf("WrittenHandler(const GattWriteCallbackParams *Handler) \r\n");
uint8_t buf[TXRX_BUF_LEN];
uint16_t bytesRead, index;
@@ -694,10 +515,10 @@
for(index=0; index<bytesRead; index++)
pc.putc(buf[index]);
- pc.printf("Leemos la trama: \r\n");
- for(index=0; index<bytesRead; index++) {
- pc.printf("buf[%02x]: %02x\r\n", index, buf[index]);
- }
+ //pc.printf("Leemos la trama: \r\n");
+ //for(index=0; index<bytesRead; index++) {
+ //pc.printf("buf[%02x]: %02x\r\n", index, buf[index]);
+ //}
// Desde el telefono desactiva el envio de tramas de configuracion general o de cada sensor.
if (buf[0] == 0xDC) { // Dato Configuracion
@@ -713,6 +534,9 @@
SEND_CONFIG_ANALOG_3 = (A3_USO == ON)?1:0;
SEND_CONFIG_ANALOG_4 = (A4_USO == ON)?1:0;
SEND_CONFIG_ANALOG_5 = (A5_USO == ON)?1:0;
+
+ publish_D1 = true; // bandera a true, para que el Mote deba obligatoriamente enviar al gateway el estado de las entradas digitales.
+ publish_D0 = true; // bandera a true, para que el Mote deba obligatoriamente enviar al gateway el estado de las entradas digitales.
}
// Maneja las Tramas de confirmacion de la configuracion detallada de cada senssor analogico
@@ -738,88 +562,132 @@
break;
}
}
+ }else if (buf[0] == 0xAD) {
+ // Desde el gateway asignamos el nuevo valor del paquete id
+ // de esta manera al ser el paquete id = 0, no volvera hacer enviado de nuevo las lecturas de digital out al gateway
+ PAQUETE_ID = (((buf[1] << 8) & 0xFF00) | (buf[2] & 0xFF));
}
// Verifico si es una trama de Escitura.
if(buf[0] == 0xEE) {
- PAQUETE_ID = buf[1];
+ PAQUETE_ID = (((buf[1] << 8) & 0xFF00) | (buf[2] & 0xFF));
+ //pc.printf("PAQUETE_ID: %d\r\n", PAQUETE_ID);
// Verifico si es un signal Digital Out
- if(buf[2] == 0xD0) {
+ if(buf[3] == 0xD0) {
+ publish_D0 = true; // indica que el satado de las salidas digitales deben ser enviadas para informar al gateway el estado de las mismas.
// Evaluo sobre que pin se debe actuar.
- switch (buf[3]) {
+ switch (buf[4]) {
case 0x02:
- #ifdef PIN_D2
- PIN_D2 = (buf[4] == 0x01) ? 1:0;
+ #if D2_TYPE == OUT
+ PIN_D2 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x03:
- PIN_D3 = (buf[4] == 0x01) ? 1:0; break;
+ #if D3_TYPE == OUT
+ PIN_D3 = (buf[5] == 0x01) ? 1:0;
+ #endif
+ break;
case 0x04:
- PIN_D4 = (buf[4] == 0x00) ? 1:0; break;
+ #if D4_TYPE == OUT
+ PIN_D4 = (buf[5] == 0x01) ? 1:0;
+ #endif
+ break;
case 0x05:
- PIN_D5 = (buf[4] == 0x00) ? 1:0; break;
+ #if D5_TYPE == OUT
+ PIN_D5 = (buf[5] == 0x01) ? 1:0;
+ #endif
+ break;
case 0x06:
- PIN_D6 = (buf[4] == 0x01) ? 1:0; break;
+ #if D6_TYPE == OUT
+ PIN_D6 = (buf[5] == 0x01) ? 1:0;
+ #endif
+ break;
case 0x07:
- #ifdef PIN_D7
- PIN_D7 = (buf[4] == 0x01) ? 1:0;
+ #if D7_TYPE == OUT
+ PIN_D7 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x08:
- #ifdef PIN_D8
- PIN_D8 = (buf[4] == 0x01) ? 1:0;
+ #if D8_TYPE == OUT
+ PIN_D8 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x09:
- #ifdef PIN_D9
- PIN_D9 = (buf[4] == 0x01) ? 1:0;
+ #if D9_TYPE == OUT
+ PIN_D9 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x10:
- #ifdef PIN_D10
- PIN_D10 = (buf[4] == 0x01) ? 1:0;
+ #if D10_TYPE == OUT
+ PIN_D10 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x11:
- #ifdef PIN_D11
- PIN_D11 = (buf[4] == 0x01) ? 1:0;
+ #if D11_TYPE == OUT
+ PIN_D11 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x12:
- #ifdef PIN_D12
- PIN_D12 = (buf[4] == 0x01) ? 1:0;
+ #if D12_TYPE == OUT
+ PIN_D12 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x13:
- #ifdef PIN_D13
- PIN_D13 = (buf[4] == 0x01) ? 1:0;
+ #if D13_TYPE == OUT
+ PIN_D13 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x14:
- #ifdef PIN_D14
- PIN_D14 = (buf[4] == 0x01) ? 1:0;
+ #if D14_TYPE == OUT
+ PIN_D14 = (buf[5] == 0x01) ? 1:0;
#endif
break;
case 0x15:
- #ifdef PIN_D15
- PIN_D15 = (buf[4] == 0x01) ? 1:0;
+ #if D15_TYPE == OUT
+ PIN_D15 = (buf[5] == 0x01) ? 1:0;
#endif
break;
}
// Verifico si es un signal Analog out
- } else if(buf[2] == 0xA0) {
- float value = (float)buf[4]/255;
- switch (buf[3]) {
+ } else if(buf[3] == 0xA0) {
+ float value = (float)buf[5]/255;
+ bool enviar_trama = false;
+ int posicion = 0x00;
+ switch (buf[4]) {
case 0x05:
- PIN_D5 = value; break;
+ #if D5_TYPE == PWM
+ PIN_D5 = value;
+ posicion = 0x05;
+ enviar_trama = true;
+ #endif
+ break;
case 0x06:
- PIN_D6 = value; break;
- case 0x09:
- #ifdef PIN_D9
- PIN_D9 = value;
+ #if D6_TYPE == PWM
+ PIN_D6 = value;
+ posicion = 0x06;
+ enviar_trama = true;
#endif
break;
+ case 0x09:
+ #if D9_TYPE == PWM
+ PIN_D9 = value;
+ posicion = 0x09;
+ enviar_trama = true;
+ #endif
+ break;
+ }
+
+ if (enviar_trama){
+ LECTURA_DIGITAL[0] = 0xDD; // Codigo Datos
+ LECTURA_DIGITAL[1] = 0xA0; // A0 --> Codigo Senial (Analog Output)
+ LECTURA_DIGITAL[2] = posicion; // Posicion de la interfaz
+ LECTURA_DIGITAL[3] = (int8_t)(PAQUETE_ID >> 8); // primera parte del paquete
+ LECTURA_DIGITAL[4] = (int8_t)PAQUETE_ID ; // segunda parte del paquete
+ LECTURA_DIGITAL[5] = buf[5]; // Valor de las salidas digitales
+ PAQUETE_ID = 0;
+ pc.printf("PWM LECTURA_DIGITAL %x \r\n", LECTURA_DIGITAL);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD
}
}
}
@@ -831,166 +699,247 @@
* Desde este metodo envia las tramas al Gateway.
*/
void m_status_check_handle(void)
-{
-
- uint8_t TRAMA_CONFIG_ANALOG[5];
- uint8_t LECTURA_DIGITAL[6];
- uint8_t LECTURA_ANALOGICA[6];
-
- //pc.printf("enviar_config %d \r\n", enviar_config_01);
- if (SEND_CONFIG_GENERAL == 1) {
- // Envia la configuracion Genaral del Mote.
- pc.printf("TRAMA_CONFIG_GENERAL0 %d \r\n", TRAMA_CONFIG_GENERAL[0]);
- pc.printf("TRAMA_CONFIG_GENERAL1 %d \r\n", TRAMA_CONFIG_GENERAL[1]);
- pc.printf("SEND_CONFIG_GENERAL %d \r\n", SEND_CONFIG_GENERAL);
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_GENERAL, 12);
- }
-
-// Envio de las tramas de Configuracion del Mote.
- // -- Configuracion detallada de los sensores.
- // Evalua si se encuentra pendiente enviar la configuracion de los sensores.
- if (SEND_CONFIG_ANALOG_0 == ON||SEND_CONFIG_ANALOG_1 == ON||SEND_CONFIG_ANALOG_2 == ON||SEND_CONFIG_ANALOG_3 == ON||SEND_CONFIG_ANALOG_4 == ON||SEND_CONFIG_ANALOG_5 == ON) {
-
- TRAMA_CONFIG_ANALOG[0] = (0xC2); // Codigo que indica que la configuracion sera por cada Pin.
- TRAMA_CONFIG_ANALOG[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor)
- TRAMA_CONFIG_ANALOG[2] = (0xAA); // Tipo de Signal AA | DD
-
- if (A0_USO == ON && SEND_CONFIG_ANALOG_0 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x00; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A0_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- pc.printf("SEND_CONFIG_ANALOG_0 \r\n");
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
-
- } else if (A1_USO == ON && SEND_CONFIG_ANALOG_1 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x01; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A1_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- pc.printf("SEND_CONFIG_ANALOG_1 \r\n");
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
-
- } else if (A2_USO == ON && SEND_CONFIG_ANALOG_2 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x02; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A2_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- pc.printf("SEND_CONFIG_ANALOG_2 \r\n");
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
-
- } else if (A3_USO == ON && SEND_CONFIG_ANALOG_3 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x03; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A3_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- pc.printf("SEND_CONFIG_ANALOG_3 \r\n");
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
-
- } else if (A4_USO == ON && SEND_CONFIG_ANALOG_4 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x04; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A4_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- pc.printf("SEND_CONFIG_ANALOG_4 \r\n");
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
-
- } else if (A5_USO == ON && SEND_CONFIG_ANALOG_5 == ON) {
- TRAMA_CONFIG_ANALOG[3] = 0x05; // Posicion que ocupa en el mote
- int16_t TED_PF = (int16_t) (256 * A5_TED); // Conversion Punto Fijo
- TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
- TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
- //pc.printf("SEND_CONFIG_ANALOG_5 %x , %x \r\n", TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5]);
- //pc.printf("SEND_CONFIG_ANALOG_6 %x, %x, %x, %x, %x, %x, %x \r\n", TRAMA_CONFIG_ANALOG[0], TRAMA_CONFIG_ANALOG[1], TRAMA_CONFIG_ANALOG[2], TRAMA_CONFIG_ANALOG[3], TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5], TRAMA_CONFIG_ANALOG[6] );
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+{
+ // Verifica si alguien esta conectado para enviar las tramas a través de Bluetooth.
+ if (CONNECTED){
+ if (SEND_CONFIG_GENERAL == 1) {
+ // Envia la configuracion Genaral del Mote.
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_GENERAL, 12);
+ }
+
+ // Envio de las tramas de Configuracion de los sensores.
+ // Evalua si se encuentra pendiente enviar la configuracion de los sensores.
+ if (SEND_CONFIG_ANALOG_0 == ON||SEND_CONFIG_ANALOG_1 == ON||SEND_CONFIG_ANALOG_2 == ON||SEND_CONFIG_ANALOG_3 == ON||SEND_CONFIG_ANALOG_4 == ON||SEND_CONFIG_ANALOG_5 == ON) {
+
+ TRAMA_CONFIG_ANALOG[0] = (0xC2); // Codigo que indica que la configuracion sera por cada Pin.
+ TRAMA_CONFIG_ANALOG[1] = (0x05); // Categoria puede ser: A (Actuador) | 5 (Sensor)
+ TRAMA_CONFIG_ANALOG[2] = (0xAA); // Tipo de Signal AA | DD
+
+ if (A0_USO == ON && SEND_CONFIG_ANALOG_0 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x00; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A0_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_0 \r\n");
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+
+ } else if (A1_USO == ON && SEND_CONFIG_ANALOG_1 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x01; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A1_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_1 \r\n");
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+
+ } else if (A2_USO == ON && SEND_CONFIG_ANALOG_2 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x02; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A2_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_2 \r\n");
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+
+ } else if (A3_USO == ON && SEND_CONFIG_ANALOG_3 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x03; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A3_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_3 \r\n");
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+
+ } else if (A4_USO == ON && SEND_CONFIG_ANALOG_4 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x04; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A4_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_4 \r\n");
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+
+ } else if (A5_USO == ON && SEND_CONFIG_ANALOG_5 == ON) {
+ TRAMA_CONFIG_ANALOG[3] = 0x05; // Posicion que ocupa en el mote
+ int16_t TED_PF = (int16_t) (256 * A5_TED); // Conversion Punto Fijo
+ TRAMA_CONFIG_ANALOG[4] = (int8_t)(TED_PF >> 8);
+ TRAMA_CONFIG_ANALOG[5] = (int8_t)(TED_PF);
+ pc.printf("SEND_CONFIG_ANALOG_5 %x , %x \r\n", TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5]);
+ //pc.printf("SEND_CONFIG_ANALOG_6 %x, %x, %x, %x, %x, %x, %x \r\n", TRAMA_CONFIG_ANALOG[0], TRAMA_CONFIG_ANALOG[1], TRAMA_CONFIG_ANALOG[2], TRAMA_CONFIG_ANALOG[3], TRAMA_CONFIG_ANALOG[4], TRAMA_CONFIG_ANALOG[5], TRAMA_CONFIG_ANALOG[6] );
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), TRAMA_CONFIG_ANALOG, 6);
+ }
+ }
+ // Envio de las tramas de lecturas del Mote.
+ cargarEstadoEntradasDigitales(); // Leemos los estados digitales.
+ //pc.printf("ESTADO_ENTRADAS_DIGITALES_OLD %x - ESTADO_ENTRADAS_DIGITALES %x \r\n", ESTADO_ENTRADAS_DIGITALES_OLD, ESTADO_ENTRADAS_DIGITALES);
+ if (ESTADO_ENTRADAS_DIGITALES_OLD != ESTADO_ENTRADAS_DIGITALES || publish_D1) {
+ if (publish_D1){
+ publish_D1 = false;
+ }
+ ESTADO_ENTRADAS_DIGITALES_OLD = ESTADO_ENTRADAS_DIGITALES;
+
+ LECTURA_DIGITAL[0] = 0xDD; // Codigo de lectura de datos
+ LECTURA_DIGITAL[1] = 0xD1; // Digital Input
+ LECTURA_DIGITAL[2] = (int8_t)(ESTADO_ENTRADAS_DIGITALES >> 8); // valores de las interfaces digitales
+ LECTURA_DIGITAL[3] = (int8_t)(ESTADO_ENTRADAS_DIGITALES); // valores de las interfaces digitales
+ pc.printf("Envio LECTURA_DIGITAL %x \r\n", ESTADO_ENTRADAS_DIGITALES); // Imprimo en terminal lo que esta enviando desde el mote.
+
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 4); // Para el RTD
+
+ }else if (PAQUETE_ID != 0 || publish_D0) {
+ if (publish_D0){
+ publish_D0 = false;
+ }
+ // Lecturas digitales
+ cargarEstadosSalidasDigitales();
+
+ pc.printf("ESTADO_SALIDAS_DIGITALES: %x \r\n", ESTADO_SALIDAS_DIGITALES);
+ LECTURA_DIGITAL[0] = 0xDD; // Codigo
+ LECTURA_DIGITAL[1] = 0xD0; // D0 --> Digital Output
+ LECTURA_DIGITAL[2] = (int8_t)(PAQUETE_ID >> 8); // primera parte del paquete
+ LECTURA_DIGITAL[3] = (int8_t)PAQUETE_ID ; // segunda parte del paquete
+ LECTURA_DIGITAL[4] = (int8_t)(ESTADO_SALIDAS_DIGITALES >> 8); // Valor de las salidas digitales
+ LECTURA_DIGITAL[5] = (int8_t)(ESTADO_SALIDAS_DIGITALES); // Valor de las salidas digitales
+
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD
}
- }
-
-// Envio de las tramas de lecturas del Mote.
- // -- Envio las lecturas digitales
- if (PAQUETE_ID != 0) {
- PAQUETE_ID = 0;
- readDigitalInputs_Value(); // Leemos los estados digitales.
-
- LECTURA_DIGITAL[0] = (0xDD); // Codigo
- LECTURA_DIGITAL[1] = PAQUETE_ID; // paquete id
- LECTURA_DIGITAL[2] = PAQUETE_ID; // paquete id
- LECTURA_DIGITAL[3] = 0xDD; // A1| A0| D1| D0
- LECTURA_DIGITAL[4] = DigitalInput_DATA; // Posicion
- pc.printf("Envio LECTURA_DIGITAL \r\n"); // Imprimo en terminal lo que esta enviando desde el mote.
-
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 5); // Para el RTD
- }
-
-
- // If digital in changes, report the state
- // original
- //if ((BUTTON_2 != state_button_2 && D2_TYPE == IN) || (BUTTON_3 != state_button_3 && D3_TYPE == IN) || (BUTTON_4 != state_button_4 && D4_TYPE == IN) || (BUTTON_5 != state_button_5 && D5_TYPE == IN) || (BUTTON_6 != state_button_6 && D6_TYPE == IN) || (BUTTON_7 != state_button_7 && D7_TYPE == IN) || (BUTTON_8 != state_button_8 && D8_TYPE == IN) || (BUTTON_9 != state_button_9 && D9_TYPE == IN) || (BUTTON_10 != state_button_10 && D10_TYPE == IN) || (BUTTON_11 != state_button_11 && D11_TYPE == IN) || (BUTTON_12 != state_button_12 && D12_TYPE == IN) || (BUTTON_13 != state_button_13 && D13_TYPE == IN) || (BUTTON_14 != state_button_14 && D14_TYPE == IN) || (BUTTON_15 != state_button_15 && D15_TYPE == IN)) {
- if ((PIN_D2 != state_button_2 && D2_TYPE == IN) || (PIN_D3 != state_button_3 && D3_TYPE == IN) || (PIN_D4 != state_button_4 && D4_TYPE == IN) || (PIN_D5 != state_button_5 && D5_TYPE == IN) || (PIN_D6 != state_button_6 && D6_TYPE == IN) || (PIN_D7 != state_button_7 && D7_TYPE == IN) || (PIN_D8 != state_button_8 && D8_TYPE == IN) || (PIN_D9 != state_button_9 && D9_TYPE == IN) || (PIN_D10 != state_button_10 && D10_TYPE == IN) || (PIN_D11 != state_button_11 && D11_TYPE == IN) || (PIN_D12 != state_button_12 && D12_TYPE == IN) || (PIN_D13 != state_button_13 && D13_TYPE == IN) || (PIN_D14 != state_button_14 && D14_TYPE == IN) || (PIN_D15 != state_button_15 && D15_TYPE == IN)) {
- // Lecturas digitales
- readDigitalInputs_Value();
- // Actualizando estados de las variables auxiliares
- state_button_2 = (D2_USO == ON && D2_TYPE == IN) ? PIN_D2 : 0;
- state_button_3 = (D3_USO == ON && D3_TYPE == IN) ? PIN_D3 : 0;
- state_button_4 = (D4_USO == ON && D4_TYPE == IN) ? PIN_D4 : 0;
- state_button_5 = (D5_USO == ON && D5_TYPE == IN) ? PIN_D5 : 0;
- state_button_6 = (D6_USO == ON && D6_TYPE == IN) ? PIN_D6 : 0;
- state_button_7 = (D7_USO == ON && D7_TYPE == IN) ? PIN_D7 : 0;
- state_button_8 = (D8_USO == ON && D8_TYPE == IN) ? PIN_D8 : 0;
- state_button_9 = (D9_USO == ON && D9_TYPE == IN) ? PIN_D9 : 0;
- state_button_10 = (D10_USO == ON && D10_TYPE == IN) ? PIN_D10:0;
- state_button_11 = (D11_USO == ON && D11_TYPE == IN) ? PIN_D11:0;
- state_button_12 = (D12_USO == ON && D12_TYPE == IN) ? PIN_D12:0;
- state_button_13 = (D13_USO == ON && D13_TYPE == IN) ? PIN_D13:0;
- state_button_14 = (D14_USO == ON && D14_TYPE == IN) ? PIN_D14:0;
- state_button_15 = (D15_USO == ON && D15_TYPE == IN) ? PIN_D15:0;
-
- PAQUETE_ID = 0x3E8;
- pc.printf("ESTADO_ENTRADAS_DIGITALES: %d \r\n", ESTADO_ENTRADAS_DIGITALES);
- LECTURA_DIGITAL[0] = 0xDD; // Codigo
- LECTURA_DIGITAL[1] = (PAQUETE_ID >> 8); // primera parte del paquete
- LECTURA_DIGITAL[2] = PAQUETE_ID ; // segunda parte del paquete
- LECTURA_DIGITAL[3] = 0xD0; // D0 --> Digital Output
- LECTURA_DIGITAL[4] = (ESTADO_ENTRADAS_DIGITALES >> 8); // Valor de las salidas digitales
- LECTURA_DIGITAL[5] = (ESTADO_ENTRADAS_DIGITALES); // Valor de las salidas digitales
-
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_DIGITAL, 6); // Para el RTD
- }
-
-// Envio de las tramas de las lecturas de los sensores habilitados.
- if (SEND_CONFIG_GENERAL == 0) {
-
- LECTURA_ANALOGICA[0] = 0xDD; // Codigo
- LECTURA_ANALOGICA[1] = 0x00; // paquete id
- LECTURA_ANALOGICA[2] = 0x00; // paquete id
-
-
- // Si la configuracion ha sido enviada, envio las lecturas. Esta para cumplir con una secuencia.
- if (A5_USO == ON) {
- float s = ANALOG_A5.read();
- if ( value_A5 != s) {
- value_A5 = s;
-
- uint16_t value = s * 1024;
-
-
- float Vtemp = value * 0.0032080078125;
- float Rtemp = (15111 / Vtemp) - 4630;
- float Tempfinal = ((Rtemp - 1000) / 3.850);
-
- //2- Conversion flotante a punto fijo
- int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
-
- LECTURA_ANALOGICA[3] = 0xA1; // --> Analog Output (A0)
- LECTURA_ANALOGICA[4] = 0x05; // --> Posicion del sensor
- LECTURA_ANALOGICA[5] = (int8_t)(Temperature_PF >> 8);
- LECTURA_ANALOGICA[6] = (int8_t)(Temperature_PF);
-
- pc.printf("Temperature_PF (Format HEX): %x \r\n", Temperature_PF);
- ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 7); // Para el RTD
+
+ // Envio de las tramas de las lecturas de los sensores habilitados.
+ if (SEND_CONFIG_GENERAL == 0) {
+
+ LECTURA_ANALOGICA[0] = 0xDD; // Codigo Datos
+ LECTURA_ANALOGICA[1] = 0xA1; // --> Analog Input (A1)
+
+
+ // Si la configuracion ha sido enviada, envio las lecturas. Esta para cumplir con una secuencia.
+ if (A5_USO == ON) {
+ float s = ANALOG_A5;
+ if (value_A5 != s) {
+ value_A5 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x05; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A5 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
+ }
+ if (A4_USO == ON) {
+ float s = ANALOG_A4;
+ if (value_A4 != s) {
+ value_A4 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x04; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A4 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
}
-
-
+ if (A3_USO == ON) {
+ float s = ANALOG_A3;
+ if (value_A3 != s) {
+ value_A3 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x03; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A3 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
+ }
+ if (A2_USO == ON) {
+ float s = ANALOG_A2;
+ if (value_A2 != s) {
+ value_A2 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x02; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A2 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
+ }
+ if (A1_USO == ON) {
+ float s = ANALOG_A1;
+ if (value_A1 != s) {
+ value_A1 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x01; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A1 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
+ }
+ if (A0_USO == ON) {
+ float s = ANALOG_A0;
+ if (value_A0 != s) {
+ value_A0 = s;
+
+ uint16_t value = s * 1024;
+
+ float Vtemp = value * 0.0032080078125;
+ float Rtemp = (15111 / Vtemp) - 4630;
+ float Tempfinal = ((Rtemp - 1000) / 3.850);
+
+ //2- Conversion flotante a punto fijo
+ int16_t Temperature_PF = (int16_t) (256 * Tempfinal);
+
+ LECTURA_ANALOGICA[2] = 0x00; // --> Posicion del sensor
+ LECTURA_ANALOGICA[3] = (int8_t)(Temperature_PF >> 8);
+ LECTURA_ANALOGICA[4] = (int8_t)(Temperature_PF);
+
+ pc.printf("ANALOG_A0 (Format HEX): %x , LECTURA_ANALOGICA: %x \r\n", Temperature_PF, LECTURA_ANALOGICA);
+ ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), LECTURA_ANALOGICA, 5); // Para el RTD
+ }
+ }
}
}
}
@@ -998,17 +947,17 @@
void apagarLeds()
{
// SOLO PARA NRF51822
- if (D3_TYPE == OUT && D3_USO == ON){
- PIN_D3 = 0;
+ if (D3_TYPE == OUT) {
+ //PIN_D3 = 0;
}
- if (D4_TYPE == OUT && D4_USO == ON){
- PIN_D4 = 1;
+ if (D4_TYPE == OUT) {
+ //PIN_D4 = 1;
}
- if (D5_TYPE == OUT && D5_USO == ON){
- PIN_D5 = 1;
+ if (D5_TYPE == OUT) {
+ //PIN_D5 = 1;
}
- if (D6_TYPE == OUT && D6_USO == ON){
- PIN_D6 = 0;
+ if (D6_TYPE == OUT) {
+ //PIN_D6 = 0;
}
}
@@ -1041,15 +990,44 @@
apagarLeds();
//por dixys
// para probar, luego quitar. Esto hace que cada ticker se envie un dato analogico via BLE
- analog_enabled = 0;
// valores refernenciales para los estados de los sensores.
- value_A0 = ANALOG_A0;
- value_A1 = ANALOG_A1;
- value_A2 = ANALOG_A2;
- value_A3 = ANALOG_A3;
- value_A4 = ANALOG_A4;
- value_A5 = ANALOG_A5.read();
+
+ #if A0_USO == ON
+ value_A0 = ANALOG_A0.read();
+ #else
+ value_A0 = 0;
+ #endif
+
+ #if A1_USO == ON
+ value_A1 = ANALOG_A1.read();
+ #else
+ value_A1 = 0;
+ #endif
+
+ #if A2_USO == ON
+ value_A2 = ANALOG_A2.read();
+ #else
+ value_A2 = 0;
+ #endif
+
+ #if A3_USO == ON
+ value_A3 = ANALOG_A3.read();
+ #else
+ value_A3 = 0;
+ #endif
+
+ #if A4_USO == ON
+ value_A4 = ANALOG_A4.read();
+ #else
+ value_A4 = 0;
+ #endif
+
+ #if A5_USO == ON
+ value_A5 = ANALOG_A5.read();
+ #else
+ value_A5 = 0;
+ #endif
while(1) {
ble.waitForEvent();