Muy buenas tengo un Arduino Uno conectado a un ESP8266 NodeMCU 0.9 y del Arduino estoy enviando unos datos de 9 sensores, los cuales necesito obtener en el ESP y guardar cada valor por separado por lo que estuve investigando y la función Serial.readStringUntil() me permite separarlos siempre y cuando esos datos lleguen con algún carácter separador, así que en el Arduino estoy enviando esto:
Cada valor lo estoy enviando separado por un ;
Mi problema radica en que como la función es utilizada únicamente con String, la variable donde voy almacenar los datos debe ser un String y al momento de yo separar esos datos no puedo meterlos en un array, debido a que debe ser de tipo char, así que investigué cómo pasar de String a char y me encontré con una función llamada toCharArray(), pero esta función lo que hace es ubicar cada dato que llega y desglozarlo por completo, por ejemplo: si me llega un dato de valor 90, dentro del char lo que voy a obtener es, char[0] = 9 y char[1] = 0 por lo que esto no me es conveniente debido a que necesitaría el valor 90 y no los números por separado, así que bueno pensé en que podría volver a convertir este dato en String y ya obtener el 90 en String ya que los valores los necesito en formato String para poder enviarlos a un servidor por método POST pero no sé si esa sea una buena solución.
El ESP lo estoy programando en el IDE de arduino, el código que tengo es el siguiente:
#define DEBUG(a) Serial.println(a);
int i=0;
String datos[8];
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available() > 0){
String str = Serial.readStringUntil(';');
datos[i] = str;
i += 1;
if(i>=10){
i = 0;
}
//int data = str.toInt();
//DEBUG(str)
}
Serial.println(datos[0]);
}
Aquí yo declaré el vector como String y Arduino me lo permite pero al momento de verlo por Serial, me envía un error después de leer los datos.
Alguno tiene una mejor idea de hacer esto?
Muchas gracias.