- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
Aviso
El foro está en modo de sólo lectura.
Termostato programable con Nextion
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
6 años 11 meses antes #946
por Jose Luis
Respuesta de Jose Luis sobre el tema Termostato programable con Nextion
El programa que me has enviado es muy básico aun y la pantalla solo tiene la pantalla principal. Por eso mismo no se como tienes los datos en arudino y se a donde los quieres enviar en la pantalla, ya que no velo le etiqueta donde iria el reloj.
Creo recordar que el rtc era externo y no usabas el de la pantalla nextion. Entonces cuando leas con el arduino, tendras varias variables, una con la hora, otra con los minutos y otra con los segundo. Si es asi lo que deves hacer es pasar esas variables numéricas a tipo string. Lo que debes hacer es concatenar las variables, separándolas por dos puntos.,de esta forma al hacer esto te quedaría una variable string algo asi "12:10:03". En nextion tienes un componente Texto, y le envias el string a esa etiqueta.
Yo lo haría asi.
Creo recordar que el rtc era externo y no usabas el de la pantalla nextion. Entonces cuando leas con el arduino, tendras varias variables, una con la hora, otra con los minutos y otra con los segundo. Si es asi lo que deves hacer es pasar esas variables numéricas a tipo string. Lo que debes hacer es concatenar las variables, separándolas por dos puntos.,de esta forma al hacer esto te quedaría una variable string algo asi "12:10:03". En nextion tienes un componente Texto, y le envias el string a esa etiqueta.
Yo lo haría asi.
- linesguapo
- Autor del tema
- Fuera de línea
- Navegador Iniciado
Menos
Más
- Mensajes: 11
- Gracias recibidas: 0
6 años 11 meses antes #947
por linesguapo
Respuesta de linesguapo sobre el tema Termostato programable con Nextion
Es que casi todo estará en la pantalla principal, salvo la programación semanal por eso te decía que el video tuto del botón de encendido mediante la nextion no me ayudaba para hacer el tema de subir y bajar el set point, (po que estam en pantallas diferentes, he encontrado un código por ahí de un termostato hecho con arduino aunque no con la nextión, la parte set point me podría servir, aunque no entiendo el código del todo, por lo que veo declara una variable float para el set y la preestablece en 20 grados luego En loop lee el pin digital 6 y 7 que es donde tiene conectado los botones de bajar y subir el SET y le suma 0,1 respectivamente por lo que creo que esto me podría servir el único problema que tengo es como cambiar el código para que en lugar de que reciba la instrucción de los pines 6 y 7 la reciba desde los botones de la nextion:
#include <LiquidCrystal.h>
#define beta 3950
#define resistance 2.8
float set=20.0;
int n=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void loop() {
if(digitalRead(6))
{
set=set+0.1;
}
if(digitalRead(7))
{
set=set-0.1;
}
long a = analogRead(0);
float temp1 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp2 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp3 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp4 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp5 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp=(temp1+temp2+temp3+temp4+temp5)/5;
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.setCursor(6, 0);
lcd.print(temp);
lcd.setCursor(12, 0);
lcd.print((char)223);
lcd.setCursor(13, 0);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Set: ");
lcd.setCursor(6, 1);
lcd.print(set);
lcd.setCursor(12, 1);
lcd.print((char)223);
lcd.setCursor(13, 1);
lcd.print("C");
if(temp>set)
{
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
digitalWrite(8,LOW);
lcd.setCursor(15,0);
lcd.print("O");
lcd.setCursor(15,1);
lcd.print("N");
} else if(set-temp<1 && temp<set)
{
digitalWrite(10,LOW);
digitalWrite(9,HIGH);
digitalWrite(8,LOW);
lcd.setCursor(15,0);
lcd.print(" ");
lcd.setCursor(15,1);
lcd.print(" ");
} else{
digitalWrite(10,LOW);
digitalWrite(9,LOW);
digitalWrite(8,HIGH);
lcd.setCursor(15,0);
lcd.print(" ");
lcd.setCursor(15,1);
lcd.print(" ");
}
}
#include <LiquidCrystal.h>
#define beta 3950
#define resistance 2.8
float set=20.0;
int n=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void loop() {
if(digitalRead(6))
{
set=set+0.1;
}
if(digitalRead(7))
{
set=set-0.1;
}
long a = analogRead(0);
float temp1 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp2 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp3 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp4 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp5 = beta / (log(((1024.0 * resistance / a) - 2. / 2. + (beta / 298.0)) - 273.0;
delay(50);
float temp=(temp1+temp2+temp3+temp4+temp5)/5;
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.setCursor(6, 0);
lcd.print(temp);
lcd.setCursor(12, 0);
lcd.print((char)223);
lcd.setCursor(13, 0);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Set: ");
lcd.setCursor(6, 1);
lcd.print(set);
lcd.setCursor(12, 1);
lcd.print((char)223);
lcd.setCursor(13, 1);
lcd.print("C");
if(temp>set)
{
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
digitalWrite(8,LOW);
lcd.setCursor(15,0);
lcd.print("O");
lcd.setCursor(15,1);
lcd.print("N");
} else if(set-temp<1 && temp<set)
{
digitalWrite(10,LOW);
digitalWrite(9,HIGH);
digitalWrite(8,LOW);
lcd.setCursor(15,0);
lcd.print(" ");
lcd.setCursor(15,1);
lcd.print(" ");
} else{
digitalWrite(10,LOW);
digitalWrite(9,LOW);
digitalWrite(8,HIGH);
lcd.setCursor(15,0);
lcd.print(" ");
lcd.setCursor(15,1);
lcd.print(" ");
}
}
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 11 meses antes #948
por Jose Luis
Respuesta de Jose Luis sobre el tema Termostato programable con Nextion
Olvidemosno de este ultimo código y vamos a centrarlos en el código y la pantalla que has compartido anteriormente. Entonces, lo primero que quieres es mostar la hora en la pantalla, no?
Pues en la pantalla que has creado con el editor de nextion añádele un componente de texto, con las medidas, la fuente, y la anchura de fuente que te guste, y vuelve a subir el fichero.
Luego, en el código que me has enviado no esta incluido el rtc, al no estarlo, yo no te puedo decir como hacer para enviar los datos, ya que no veo como tienes la hora en arduino.
Entonces, añade a la pantalla el componte de texto para que se vea la hora. Añade al fichero que arduino que me enviste la lectura del rtc.
Después de eso nos vuelves a proporcionar los dos códigos como ya has hecho y yo te ayudare a enviar la hora a la pantalla.
Te parece bien?
Oye, si nos sale un proyecto interesante, te importaría que hiciera un video para enseñárselo a la comunidad' por supuesto diciendo que el proyecto es tuyo.
Pues en la pantalla que has creado con el editor de nextion añádele un componente de texto, con las medidas, la fuente, y la anchura de fuente que te guste, y vuelve a subir el fichero.
Luego, en el código que me has enviado no esta incluido el rtc, al no estarlo, yo no te puedo decir como hacer para enviar los datos, ya que no veo como tienes la hora en arduino.
Entonces, añade a la pantalla el componte de texto para que se vea la hora. Añade al fichero que arduino que me enviste la lectura del rtc.
Después de eso nos vuelves a proporcionar los dos códigos como ya has hecho y yo te ayudare a enviar la hora a la pantalla.
Te parece bien?
Oye, si nos sale un proyecto interesante, te importaría que hiciera un video para enseñárselo a la comunidad' por supuesto diciendo que el proyecto es tuyo.
- linesguapo
- Autor del tema
- Fuera de línea
- Navegador Iniciado
Menos
Más
- Mensajes: 11
- Gracias recibidas: 0
6 años 11 meses antes #949
por linesguapo
Respuesta de linesguapo sobre el tema Termostato programable con Nextion
gracias por responder, lo primero que quería hacer (antes de lo del reloj) es algo que si puedes ver como esta armado en el código y es que los botones b0 y b1 (Son los de subir y bajar el valor del SET y que dependiendo de si esta por encima o por debajo con una histéresis de 1 grado (diferencial entre lo elegido en set point y la temperatura real) active una salida que active un relé y cambie el color del fondo a rojo (o cambe a una pantalla igual que la principal pero con el fondo rojo) con esto lo que quiero es poder ver la temperatura y si está encendida la caldera (fondo en rojo) sin levantarme del sofá . El tema del otro código que he pegado es que hay una parte que me podría valer para lo que quiero :
float set=20.0;
void loop() {
if(digitalRead(6))
{
set=set+0.1;
}
if(digitalRead(7))
{
set=set-0.1;
}
Lo único que tendría que cambiar la parte de los brotones físicos conectados a los pines digitales 6 y 7 para que la instrucción para la condición fuera dada por por los botones de la nextión y luego la variable set la enviaría a a la etiqueta n0 (que no se si la sustituiré por una de texto (t6) ya he tenido problemas con las numéricas)
En eso es lo que necesito que me ayudes con el código, y en cuanto a la publicación del proyecto en tu canal, por supuesto que puedes publicarlo de echo me agradaría mucho que lo publicaras y además será muy útil para mucha gente ya que todo el mundo necesita un termostato en su vida
Voy a ir integrando la parte gráfica del reloj y diseñando la pantalla de programación y temporizado y si puedes pasarme el código para lo que te comento, con esto ya tendríamos un termostato funcional y solo faltaría irnos a la versión 4.0 en al que se puede implementar la 2º pantalla para programar los días y hora de funcionamiento, vamos lo típico de todos los termostatos.
float set=20.0;
void loop() {
if(digitalRead(6))
{
set=set+0.1;
}
if(digitalRead(7))
{
set=set-0.1;
}
Lo único que tendría que cambiar la parte de los brotones físicos conectados a los pines digitales 6 y 7 para que la instrucción para la condición fuera dada por por los botones de la nextión y luego la variable set la enviaría a a la etiqueta n0 (que no se si la sustituiré por una de texto (t6) ya he tenido problemas con las numéricas)
En eso es lo que necesito que me ayudes con el código, y en cuanto a la publicación del proyecto en tu canal, por supuesto que puedes publicarlo de echo me agradaría mucho que lo publicaras y además será muy útil para mucha gente ya que todo el mundo necesita un termostato en su vida
Voy a ir integrando la parte gráfica del reloj y diseñando la pantalla de programación y temporizado y si puedes pasarme el código para lo que te comento, con esto ya tendríamos un termostato funcional y solo faltaría irnos a la versión 4.0 en al que se puede implementar la 2º pantalla para programar los días y hora de funcionamiento, vamos lo típico de todos los termostatos.
- Jose Luis
- Fuera de línea
- Navegador Platino
Menos
Más
- Mensajes: 620
- Karma: 6
- Gracias recibidas: 68
6 años 11 meses antes - 6 años 11 meses antes #950
por Jose Luis
Respuesta de Jose Luis sobre el tema Termostato programable con Nextion
Hacerlo con botones fisicos es muyyyy facil, hacerlo cuando se pulse un boton en la nextion, si en el loop solo estas mirando solo eventos, tambien es myyyyyy facil, cuando leas la temperatura, la humedad, actualices datos en pantalla y encima quieras estar actualizadon el texto de un boton con el reloj ... no se por que me da que vas terminar completamente desesperado.
Desde luego, mi experiencia es totalmente nefasta con ello. No vale con ver un codigo pegarlo y decir quiero hacer lo mismo pero con nextion, simplemente, por que te va crear muchisimos problemas. Por eso me canso de decir que quiero ver el reloj implementado y demas, por que se que no va funcionar y habra que replantearse todo, en cambio tu vas poniendo trozos de codigo por aqui y por alli, que solos funcionan de maravilla, pero que cuando los integres, lo que me temo, es que no te va funcionar nada. Por que? Por que todos los comandos que le envies a la pantalla van funcionar bien, pero los comandos que te envie la pantalla, el arduino, no va oler ni uno.
Por eso estoy intrigado como vas poner remedio a todos eses problemas, por que yo muchos de ellos no he sido capaz de soluccionarlos y he tenido que dar rodeos.
Integra todo y me cuentas.
P.D. A ti te preocupa como integrar los botones, a mi me preocupa como vas poder leer los eventos que te envia la pantalla al tiempo que haces actualizaciones sobre las etiquetas que ya tienes. Si consigues hacer eso, que puedas mandar datos y al tiempo que los eventos que te llegan desde la pantalla, los puedas capturar y no te pille uno y se salte 100, el resto lo tendras facil.
Desde luego, mi experiencia es totalmente nefasta con ello. No vale con ver un codigo pegarlo y decir quiero hacer lo mismo pero con nextion, simplemente, por que te va crear muchisimos problemas. Por eso me canso de decir que quiero ver el reloj implementado y demas, por que se que no va funcionar y habra que replantearse todo, en cambio tu vas poniendo trozos de codigo por aqui y por alli, que solos funcionan de maravilla, pero que cuando los integres, lo que me temo, es que no te va funcionar nada. Por que? Por que todos los comandos que le envies a la pantalla van funcionar bien, pero los comandos que te envie la pantalla, el arduino, no va oler ni uno.
Por eso estoy intrigado como vas poner remedio a todos eses problemas, por que yo muchos de ellos no he sido capaz de soluccionarlos y he tenido que dar rodeos.
Integra todo y me cuentas.
P.D. A ti te preocupa como integrar los botones, a mi me preocupa como vas poder leer los eventos que te envia la pantalla al tiempo que haces actualizaciones sobre las etiquetas que ya tienes. Si consigues hacer eso, que puedas mandar datos y al tiempo que los eventos que te llegan desde la pantalla, los puedas capturar y no te pille uno y se salte 100, el resto lo tendras facil.
Última Edición: 6 años 11 meses antes por Jose Luis.
- linesguapo
- Autor del tema
- Fuera de línea
- Navegador Iniciado
Menos
Más
- Mensajes: 11
- Gracias recibidas: 0
6 años 11 meses antes #951
por linesguapo
Respuesta de linesguapo sobre el tema Termostato programable con Nextion
Si, ya lo habíamos comentado, pero tú mismo dijiste que con leer la temperatura/Humedad cada cierto tiempo 20-30 segundos y actualizar los valores en la nextion cada 20/30 segundos se corregía ese problema, los botones del setpoint en principio no se van a usar mucho, la mayoría de la gente establece una programación de los grados que le gusten y eso no se vuelve a modificar en la vida al igual que la programación que una vez establecido es raro que se vuelva a modificar.
Bueno voy ver si integro lo de rejoj y seguimos hablando
Bueno voy ver si integro lo de rejoj y seguimos hablando
Tiempo de carga de la página: 0.102 segundos