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

TEMA:

Sensor de presión en Nextion 2 años 3 meses antes #2538

Hola.
Quiero usar un sensor de presión (300 psi) en mi pantalla nextion, pero no puedo hacerlo. Intento usar el método de este enlace, quiero usar 2 números para mostrar 10.5 bar (ejemplo). Es de alguna manera me puede ayudar con esto? Tengo la página 0, la página 1 y la página 2. En mi pantalla, el número n0 (ID 1) y el número n1 (ID 2) están en la página 2.
www.cambatronics.com/web/descargas/nextion/leer_presion.ino

Arduino mega 2560

Code

#include "Nextion.h"

NexNumber n0= NexNumber (2,1, "n0");
NexNumber n1= NexNumber (2,2, "n1");


float presionActual; // Temperatura actual del compresor.

// Variables control datos serie.
char trama [30];
String readString = String(30);
int bytesLeidos;
String control;

const int sensorPresion = A0; // Lectura sensor presion.

void setup() {

Serial.begin(9600); // Inicializa com por hardware.
readString ="";

}

void loop() {

if (Serial.available() > 0){ leerPuertoSerie();} //subrutina leer datos serie

presionActual = lecturaPresion();
envioNextion();
delay(100);
}

// Conexion con Nextion.

void envioNextion () {
int presionParteEntera= presionActual;
int presionParteDecimal= (presionActual - presionParteEntera)*100;
int presionAnalogica=presionActual*100;
int presionAnalogicaNextion=map(presionAnalogica,0,1000,0,271);

if (presionAnalogicaNextion < 45) {
presionAnalogicaNextion+=314;
}
else {
presionAnalogicaNextion-=46;
}



Serial.print("n0.val=");
Serial.print( presionParteEntera);
ff();
Serial.print("n1.val=");
Serial.print( presionParteDecimal);
ff();
}


// Proceso lectura presion
float lecturaPresion () {
int presionActual = analogRead(sensorPresion); // leer valor analogico sensor presion.
if (presionActual < 101) presionActual=101; // Sensor a 0 bares da 0.5Vdc de salida (los obviamos).
if (presionActual > 920) presionActual=920; // Serson da 4.5Vdc a 12 bares.
if (presionActual > 784) presionActual=784; // Sersor limitado a max 10 bares.
float lecturaSensor = (presionActual-101)*(12.00/819.00);
// se multiplica por 100 a int y se pasa de nuevo a float para tener solo 2 decimales.
int ajusteMedida = lecturaSensor *100;
return ((float)ajusteMedida/100);
}


//Convierte de string a hex.
int StrToHex(char str[])
{
return (int) strtol(str, 0, 16);
}

// leer datos serie.
void leerPuertoSerie () {

int conta = 0;
char c = Serial.read(); // Lee dato.
if (c=='*') { // Las tramas comienzan con *
readString="";
bytesLeidos=0;
do { // Blucle hasta final de la trama que es un #.
if (Serial.available()>0) { // Si hay dato dispobible ...
bytesLeidos++;
c = Serial.read(); // Leemos dato.
Serial.print(c); // impresion de testeo. Borrar.
if (c!='#')trama[bytesLeidos-1]= c; // Si no llego a final de la trama, suma caracter a lo ya reribido.
}
} while (c!='#'); // Si no llego ninal trama volvemos hacer el bucle.
imprimetrama();

}

}

//Bucle de control
void imprimetrama () {

Serial.print (" Dato leido : ");
for (int i=0; i<bytesLeidos;i++){
Serial.print(trama);
}
}

// ¡ 0xff
void ff(){
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}


Gracias
Adjuntos:

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

Sensor de presión en Nextion 2 años 3 meses antes #2540

Agradeceria que en un fichero .rar meteieras el programa del arduino y de la nextion. Intenta facilitar las cosas ya que si tenemos que ver la pantalla que has enviado de la nextion y perder el tiempo en crearla nosotros, va haber poca gente que lo haga. Si envias los dos ficheros, sera mas facil poder ver que error cometes.

Un saludo.

Por cierto, entiendo que leer la presion cuando llega una orden por puerto serie, no? Por que ocmo tienes el programa, solo hace la lectura cuando llega algun dato por puerto serie.
Por otro lado veo que usas librerias, pero luego mandas comandos sin librerias.
Conclusion, parate, medita, piensa lo que quieres hacer y no mezcles trozos de programas que, me da la sensacion, que no sabes ni lo que hacen.

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

Última Edición: por Jose Luis.

Sensor de presión en Nextion 2 años 3 meses antes #2541

Si conecto Nextion a Tx0 y Rx0 está funcionando en el valor de visualización, pero ya no funciona con los botones. Si conecto Nextion Tx2 y Rx2, los botones funcionan y no muestran el valor en n0 y n1.

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

Última Edición: por cornelemanuel.

Sensor de presión en Nextion 2 años 3 meses antes #2542

Dos detalles :

1.- Has enviado el codigo compilado de la tarjeta nextion. A mi eso no me vale de nada, no veo que has echo mal en el codigo de la nextion.
2,. Cuando te digo que tucodigo es una chapuza, que estas usando por un lado las librerias y por otro estan mandando codigo a pelo, me estas entendiendo?

Sabes cual es el problema? Que el codigo origianal de este video esta pensado para no usar librerias, tu has añadido lo que has considierado oportuno, sin cambiar las partes del programa que funcionaban sin usar librerias, con lo cual el programa es una chapuza.

Te vuelvo aconsejar te lo replantees todo y lo hagas todo con librerias o todo sin librerias.

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

Última Edición: por Jose Luis.

Sensor de presión en Nextion 2 años 3 meses antes #2543

Comprender. Intentaré encontrar una solución. Subo de nuevo archivos
Adjuntos:

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

Sensor de presión en Nextion 2 años 3 meses antes #2544

Te voy a decir lo que yo haria, que no tiene por que ser de esa forma, por que cada uno resuelve de su manera los problemas, pero te dire que haria yo :

1.- El codigo de gestion de las tramas por serial fuera, ya que lo estas usando tambien para la depuracion de las librerias.Osea borraria esa parte del codigo, osea el subprograma de leerpuertoserie.
2.- En lectura de presion estas calculando los grados para la aguja analogica, no lo usas, lo borraria
3.- En el envio de los datosa la nextion
 Serial.print("n0.val=");
 Serial.print( presionParteEntera);
 ff();
 Serial.print("n1.val="); 
 Serial.print( presionParteDecimal);
  ff(); 
Te das cuenta que envias los datos sin usar las librerias? Define n0 y n1 en las librerias, envialo desde las librerias y este codigo sobra.
No debes estar enviardo parte de los datos por ibrerias y partes sin librerias, al final todo se liara y sera mas dificil entender el por que.
4.- Yo siempre dejo que el arduino lleve el control, asi siempre sabra donde estas. Entonces para cambiar de pagina en la nextion, yo le enviaia la informacion al arduino de que quieres cambiar de pagina y el arduino le indicaria a la pantalla que cambiara de pagina. de esa formas, el arduino siempre sabe en que pagina estas, por que si tu cambias de pagina en la nextion y el arduino no te detecto el cambio, todo dejara de funcionar, mientras que como te digo yo, lo que puede pasar es que tengas que volver a pulsar el cambio de pagina por que el arduino no pillo la trama, pero nunca pasara que la nextion este en un y el arduino en otra.

basicamente es lo que haria, por eso te dije ayer que el programa es una chapuza por que coges troxos de otros de mis programas y los unes junto con tus modificaciones, pero sin equilibrar todo.

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

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