Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme
  • Página:
  • 1

TEMA:

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 7 meses antes #2009

Tengo el siguiente codigo. Empieza con la lectura de una micro SD con datos de sensores en un archivo txt, los cuales son leidos primero en el string completo (parrafo completo), despues son separados
y almacenados en una variable individual (siguen siendo string), despues, como se necesita sacar el promedio de esas operaciones se convierten a float. Al final pasar a variable tipo char para ser enviadas
a la pantalla nextion a su correspondiente elemento text. El codigo completo es el siguiente:

//Librerias de la nextion

#include <doxygen.h>
#include <NexButton.h>
#include <NexConfig.h>
#include <NexCrop.h>
#include <NexGauge.h>
#include <NexHardware.h>
#include <NexHotspot.h>
#include <NexObject.h>
#include <NexPage.h>
#include <NexPicture.h>
#include <NexProgressBar.h>
#include <NexSlider.h>
#include <NexText.h>
#include <Nextion.h>
#include <NexTouch.h>
#include <NexWaveform.h>
#include <Nextion.h>
#include <EasyNextionLibrary.h>
#include <trigger.h>

// Librerias de la micro SD y una libreria especial que se para tramas de string de forma mas rapida.

#include <SD.h>
#include <Separador.h>

Separador s;

File myFile;
int UltimaPocicion=0;
int pausa=1000;

// Arduino -> Nextion
// Pino 5v -> Vermelho
// Pino GND -> Preto
// Pino 0 -> azul
// Pino 1 -> Amarelo

//Nomenclatura es:
//"T" para referir temperatura
//"H" para referir humedad
//Numeros del uno al cinco para ubicar numero de sensor y de variable, por ejemplo T1S1 es temperatura varable 1 del sensor 1.

//Se declaran los elementos de la nextion y se especifican sus carateristicas

//Ojo a la linea de abajo es de la variable donde tengo problema pero ya revise muchas veces y esta bien declarado.

NexText TPROM = NexText(4, 3, "TPROM");

//
sensor 1
NexText T1S1 = NexText(6, 4, "T1S1");
NexText T2S1 = NexText(6, 6, "T2S1");
NexText T3S1 = NexText(6, 7, "T3S1");
NexText T4S1 = NexText(6, 5, "T4S1");
NexText T5S1 = NexText(6, 3, "T5S1");

NexText H1S1 = NexText(7, 7, "H1S1");
NexText H2S1 = NexText(7, 6, "H2S1");
NexText H3S1 = NexText(7, 5, "H3S1");
NexText H4S1 = NexText(7, 4, "H4S1");
NexText H5S1 = NexText(7, 3, "H5S1");

void setup() {

// Si inicia la nextion y el puerto serial

nexInit();
Serial.begin(9600);
Serial.print("Iniciando SD ...");
if (!SD.begin(53)) {
Serial.println("No se pudo inicializar");
return;
}
Serial.println("inicializacion exitosa");
}

void loop() {

//Se corresponde a leer la micro sd y a especificar la lectura por párrafo y se imprime.

myFile = SD.open("datos3.txt");//abrimos el archivo
int totalBytes=myFile.size();
String cadena="";

if (myFile) {
if(UltimaPocicion>=totalBytes) UltimaPocicion=0;
myFile.seek(UltimaPocicion);

//--Leemos una línea de la hoja de texto
while (myFile.available()) {

char caracter=myFile.read();
cadena=cadena+caracter;
UltimaPocicion=myFile.position();
if(caracter==10)//ASCII de nueva de línea
{
break;

}
}


//
myFile.close(); //cerramos el archivo
Serial.println("Ultima cadena leida es:");
Serial.println(cadena);

//En esta ´parte se usa la libreria "separador.h". El string leido corresponde a un parrafo del archivo txt. seria algo como:
// 22.2, 22,3, 22.4, 22.5, 22.6, 22.7, 22.2, 22,3, 22.4, 22.5, 22.6, 22.7, (todo es un solo string) la libreria separa cada elemento, diferenciandolo con las comas.

String datosrecibidos = cadena;

String elemento1 = s.separa(datosrecibidos, ',',1); //aqui separa por ejemplo segun la posicion desde "cadena" corresponde a 22.3 (pues dice que va en posicion 1)
String elemento2 = s.separa(datosrecibidos, ',',2);
String elemento3 = s.separa(datosrecibidos, ',',3);
String elemento4 = s.separa(datosrecibidos, ',',4);
String elemento5 = s.separa(datosrecibidos, ',',5);
String elemento6 = s.separa(datosrecibidos, ',',6);
String elemento7 = s.separa(datosrecibidos, ',',7);
String elemento8 = s.separa(datosrecibidos, ',',8);
String elemento9 = s.separa(datosrecibidos, ',',9);
String elemento10 = s.separa(datosrecibidos, ',',10);

//aqui solo se imprime ya cada string separado para verificar en puerto serial y se agrega °C

Serial.println("La temperatura 1 es: " + elemento1 + "°C");
Serial.println("La temperatura 2 es: " + elemento2 + "°C");
Serial.println("La temperatura 3 es: " + elemento3 + "°C");
Serial.println("La temperatura 4 es: " + elemento4 + "°C");
Serial.println("La temperatura 5 es: " + elemento5 + "°C");
Serial.println("La temperatura 6 es: " + elemento6 + "°C");
Serial.println("La temperatura 7 es: " + elemento7 + "°C");
Serial.println("La temperatura 8 es: " + elemento8 + "°C");
Serial.println("La temperatura 9 es: " + elemento9 + "°C");
Serial.println("La temperatura 10 es: " + elemento10 + "°C");

//Aqui se convierte en float cada string

float felemento1 = elemento1.toFloat();
float felemento2 = elemento2.toFloat();
float felemento3 = elemento3.toFloat();
float felemento4 = elemento4.toFloat();
float felemento5 = elemento5.toFloat();
float felemento6 = elemento6.toFloat();
float felemento7 = elemento7.toFloat();
float felemento8 = elemento8.toFloat();
float felemento9 = elemento9.toFloat();
float felemento10 = elemento10.toFloat();

//En esta parte se hace un simple promedio (por ello se necesitaba convertir de string a float)

float PROMtemp = ((felemento1 + felemento2 + felemento3 + felemento4 + felemento5 + felemento6 + felemento7 + felemento8 + felemento9 + felemento10)/10);

//Aqui resulta el problema, solo estoy haciendolo con un solo elemento porque no he podido resolver dicho problema. Al pasar el float PROMtemp a char (que es el tipo de dato que necesita
// la funcion setText en el simulador de nextion y en la pantalla no se visualiza nada. Ya verifique el nombre del elemento, su forma de declararlo con sus características y todo y no me envia nada.

char TPROMED [10];

dtostrf(PROMtemp, 5, 1, TPROMED); //number, width, decimal places, buffer

TPROM.setText(TPROMED);

/Aqui solo verifico con el puerto serial, no es importante

Serial.println("Promedio FLOAT de Temperatura es: ");
Serial.println(PROMtemp);

Serial.println("Promedio STRING de Temperatura es: ");
Serial.println(TPROMED);

Serial.println("oPERACION es: ");
Serial.println(TPROMED);



Serial.println(felemento1);
Serial.println(felemento2);
Serial.println(felemento3);
Serial.println(felemento4);
Serial.println(felemento5);
Serial.println(felemento6);
Serial.println(felemento7);
Serial.println(felemento8);
Serial.println(felemento9);
Serial.println(felemento10);

} else {
Serial.println("Error al abrir el archivo");
}
//Aqui envio datos tipos char a los elementos setText de la nextion y funciona bien, solo son de prueba pero en el caso de arriba no puedo.

//
sensor 1

char DatoS1T1[5] = "123";
char DatoS1T2[5] = "456";
char DatoS1T3[5] = "789";
char DatoS1T4[5] = "123";
char DatoS1T5[5] = "456";

T1S1.setText(DatoS1T1);
T2S1.setText(DatoS1T2);
T3S1.setText(DatoS1T3);
T4S1.setText(DatoS1T4);
T5S1.setText(DatoS1T5);

char DatoS1H1[5] = "123";
char DatoS1H2[5] = "456";
char DatoS1H3[5] = "789";
char DatoS1H4[5] = "123";
char DatoS1H5[5] = "456";

H1S1.setText(DatoS1H1);
H2S1.setText(DatoS1H2);
H3S1.setText(DatoS1H3);
H4S1.setText(DatoS1H4);
H5S1.setText(DatoS1H5);

}

Por favor, Identificarse para unirse a la conversación.

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 7 meses antes #2010

Por favor, sube el fichero del arduino y de la pantalla nextion, los dos, comprimidors en un winrar. Ambos fihceros son necesarios para saber si haces el envio de forma correcta.

Gracias.

Por favor, Identificarse para unirse a la conversación.

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 6 meses antes #2016

Hola perdon por la tardanza, aqui esta e proyecto en nextion, con el archivo de arduino y la libreria usada, para usar strings y separarlos, el diseño del hmi y el archivo de texto a leer desde la micro sd

Por favor, Identificarse para unirse a la conversación.

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 6 meses antes #2017

Tambien cualquier duda respondere. Arriba explico un poco pero en resumen el programa lee el arreglo de string desde la micro sd, despues lo separa con ayuda de la libreria y se asigna su respectiva variable luego se pasa a float para poder sacar promedio y al final trato de pasarlo a char para mandarlo a la nextio y ahi es donde no puedo.

Por favor, Identificarse para unirse a la conversación.

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 6 meses antes #2018

No has subido ningun codigo.

Por favor, Identificarse para unirse a la conversación.

PROBLEMA MANDANDO DATOS POR ELEMNTO setText 3 años 6 meses antes #2034

si lo hice amigo, dejame env

Archivo Adjunto:

Nombre del Archivo: FOTOS.rar
Tamaño del Archivo:2,235 KB

Archivo Adjunto:

Nombre del Archivo: separador.zip
Tamaño del Archivo:7 KB
iarlo de nuevo
Ahi va la libreria separador para separar el string leido de la micro sd, tambien parte del codigo lee las ultimas 5 cadenas registradas, un archivo txt que trae las mediciones y el hmi usado,

Archivo Adjunto:

Nombre del Archivo: FOTOS.rar
Tamaño del Archivo:2,235 KB

Archivo Adjunto:

Nombre del Archivo: separador.zip
Tamaño del Archivo:7 KB
Adjuntos:

Por favor, Identificarse para unirse a la conversación.

  • Página:
  • 1
Tiempo de carga de la página: 0.110 segundos
Gracias a Foro Kunena

Login