hola necesito ayuda para comunicar un sensor que funciona con la libreria <AltSoftSerial.h> y necesito enviar la variable llamada final a thinger pero no estoy muy experto en este tipo de comunicacion rx y tx para thinger.
#define _DEBUG_
#define _DISABLE_TLS_
#include <BridgeSSLClient.h>
#include <ThingerYun.h>
#define USERNAME "xxxx"
#define DEVICE_ID "xxx"
#define DEVICE_CREDENTIAL "xxx"
ThingerYun thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
#include <AltSoftSerial.h> //Librería AltSoftSerial
AltSoftSerial altSerial; //Instancia de la clase AltSoftSerial
//Flags para el control de la entrada de datos
boolean startSequence = true;
boolean receiveData = false;
boolean flag = true;
void(* resetFunc) (void) = 0;
int contador = 0;
void setup() {
//Se inicia el puerto serie con la computadora
Serial.begin(115200);
Bridge.begin();
//Se inicia el puerto serie con el sensor
altSerial.begin(4800);
delay (5000);
// thing["millis"] >> outputValue(millis());
thing["dato"] >> [](pson& out){
// out["humedad"]=;
};
//delay(2000);
}
//}
void loop() {
thing.handle();
delay(1000);
/*
Bloque de programación para recibir datos
de la computadora
*/
if (flag) { // Parte a eliminar y que sea automático sin tener que poner start en el puerto serial
//Serial.println("starting...");
receiveData = true;
Serial.flush();
altSerial.flush();
startTraceMode();
flag = false;
Serial.println("starting...");
}
// if (Serial.available() > 0) {
// String input = Serial.readString();
//Si el dato recibido es start, se empieza a leer datos
//if (input == "start") { // Parte a eliminar y que sea automático sin tener que poner start en el puerto serial
//Serial.println("starting...");
//receiveData = true;
//Serial.flush();
//altSerial.flush();
//startTraceMode();
//flag = false;
//}
// }
//Si el flag esta activo
if (receiveData) {
//Si hay datos disponibles en el puerto serie del sensor...
if (altSerial.available() > 0) {
while (altSerial.available() > 0) {
delay(25);
//Se bloquea la secuencia de inicio
if (startSequence) { // Luego de conectar el protoboard la secuencia se queda aquí
altSerial.read();
}
else
{
//Se transforman los datos leidos a capacitancia
if (contador <= 62) {
int capacitance = 0;
float intervalos = 0;
float porcentaje = 0;
float final = 0;
capacitance = altSerial.read();
capacitance = capacitance + (altSerial.read() * 256);
// Se convierte a valores de humedad en porcentaje
intervalos = 15;
porcentaje = (capacitance - 12483) / (15);
final = 100 - porcentaje;
//Se imprime el resultado
Serial.println(final);
Serial.println(" %");
contador++;
}
else {
resetFunc();
}
}
}
if (startSequence) {
startSequence = false;
}
}
}
}
//Secuencia de inicio del sensor
void startTraceMode() {
startSequence = true;
altSerial.write(1);
delay(1000);
altSerial.write(0x54); // valores de bits obtenidos de device monitoring para recoger los datos
altSerial.write(0x19); // valores de bits obtenidos de device monitoring para recoger los datos
}