-
Miguel
-
Autor del tema
-
Fuera de línea
-
Navegador Iniciado
-
-
Mensajes: 3
-
Gracias recibidas: 0
-
-
|
Hola buenos días a todos, estoy probando un sketch en arduino para controlar un ventilador automáticamente, (que arranque en 30 grados y se apague en 20 grados) pero no lo logró.
Desde que se activa el arduino uno, está funcionando, permanentemente, no se en donde esta el fallo si me dan una ayuda les agradesco.(estoy aprendiendo)
La temperatura y humedad me aparecen bien en la pantalla, y actualizandose.
Se incluye un interruptor para una iluminación, que lo comandó en pantalla nextion ( basic) que funciona bien
Adjunto el archivo.
Muchas Gracias
Saludos
Miguel
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
-
Jose Luis
-
-
Fuera de línea
-
Navegador Platino
-
-
Mensajes: 1148
-
Gracias recibidas: 230
-
-
|
Podrias incluir en un fichero comprimido con rar, el fichero del arduino y el de la nextion.
Asi nos ahorras tiempo y podemos ver todo el proyecto.
Un saludo.
Edito por que acabo de echarle un ojo al programa y no esta bien planteado, Solo con un vistazo general he visto varias cosas que no deberian estar asi.
1.- Entiendes como funciona millis(), lo digo por que estas usando millis para temporixar las medidas ( perfecto) pero luego dentro millis metes un delay(4000).
2.- Por que el control de los estados (variable state no esta unida al boton de la nextion)? Jamas vas poder desconectar, vamos nunca se pondra el state a 0.
3.-. El problema lo tienes en el millis(), despues de que lees no reseteas el contrador de millis con lo que siempre se cumpliera esa condicion.
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
-
Miguel
-
Autor del tema
-
Fuera de línea
-
Navegador Iniciado
-
-
Mensajes: 3
-
Gracias recibidas: 0
-
-
|
Hola buenas tardes Jose Luis.
Bien ,
Adjunto el proyecto Arduino ( 1.8.2 ) y la pantalla Nextion envio imagenes de la información.
Aclaraciones, estoy incluyendo en el sketch de arduino, que cuando se encienda el ventilador se active la animación en la pantalla, no se si esta bien!!!!!!
En la pantalla he probado la animación y funciona bien.
1 No tengo bien claro los de los millis(),
2 y (variable state no está unida al boton de la nextion)? solo puede estar unida a un botón en la pantalla, o el cambio de los grados que mide el DHT22 no maneja la variable pregunto?
3 Si fuera posible tenes ejemplos de cómo hacer que la animación del ventilador solo aparezca en pantalla cuando se encienda el ventilador.
Gracias.
Miguel Garcia.
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
-
Jose Luis
-
-
Fuera de línea
-
Navegador Platino
-
-
Mensajes: 1148
-
Gracias recibidas: 230
-
-
|
Vamos a ver el loop () int botonMarcha = myNextion.getComponentValue("page0.bt2");
if (botonMarcha == true ) digitalWrite(ledStatus1, HIGH); else digitalWrite(ledStatus1, LOW);
Lees el boton de marcha de la nextion. En la siguiente linea si esta en on, activas un led de estatus si esta en off lo apagas. Pero no haces nada mas. No te quedas con una variable para controlar el proceso. Si apagas el boton, seguiria funcionando todo iguail y seguirias teniendo encendiendo el ventilador. Vamos esto no vale pa na.
Seguimos :
if ( millis() - auxMillis > intervaloMedidas) {
// delay(1000); // Tiempo entre mediciones.
h = dht.readHumidity(); // Leemos Humedad.
t = dht.readTemperature(); // Leemos temperatura en grados celsuis.
imprimeNextion();
float currentTemperature = GetTemperature();
if (state == 0 && currentTemperature > thresholdHIGH)
{
state = 1;
digitalWrite(pin, HIGH); // encender ventilador
}
if (state == 1 && currentTemperature < thresholdLOW)
{
state == 0;
digitalWrite(pin, LOW); // apagar ventilador
}
delay(4000); // esperar 4 segundos entre medicioens
}
Este bloque deberia preguntar si el boton de encendido esta activo, como no lo hace como ya te dije antes, le da igual como este funcionara siempre.
Por otro lado, el millis funciona la primera vez, si, pero ya no vuelve a funcionar mas, por que despues de que el millis te activa un vez si no reseteas, se cumplira siempre ya que millis() - auxMillis siempre sera mayor que intervaloMedidas.
Y supongo que ocmo no te funcionaba millis, pusiste al final el temporizador de 4 segundos. Por que millis como lo tienes no va.
Ve corrigiendo estes fallos y asi iremos avanzando.
En la seccion de videos, hay un video publicado y puedes bajrte el fichero de la nextion, para ver como se hace una animacion paso a paso. Miralo.
Un saludo.
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
-
Miguel
-
Autor del tema
-
Fuera de línea
-
Navegador Iniciado
-
-
Mensajes: 3
-
Gracias recibidas: 0
-
-
|
Hola Jose Luis buenos días,
primero gracias por la ayuda,
En primer lugar aclaro que el botón (bt2) en la pantalla, lo tengo solo para encender y apagar la iluminación independiente del control de temperatura, y actúa perfectamente.
2, Lo que pretendo hacer es que una vez que el arduino este encendido (activado) el encendido y apagado del ventilador sea automático con los rango que prefijo (en este caso a los 35º se enciende y a los 20º se apaga) sin que en la pantalla tenga que activar o enviarle algo.
3, No tengo claro cómo corregir la función de encendido y apagado en el loop () ,
(reseteo con un delay de 1000 a millis() - auxMillis )...........
4, Vi los videos y ise un ocultamiento de la animación pero no se si con, myNextion.sendCommand("page0.p4.pic=16"); que inclui en el setup basta para activarlo ??
5, Para aclararlo, estoy usando las librerias no oficiales de nextion.
Adjunto de nuevo el proyecto.
Gracias.
Saludos.
Miguel
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
-
Jose Luis
-
-
Fuera de línea
-
Navegador Platino
-
-
Mensajes: 1148
-
Gracias recibidas: 230
-
-
|
Ah vale, entonces no tienes ningun boton que active o desactive el aire? Deberias tenerlo no? Yo es que di por hecho que lo tenias. Error mio.
2 .- Para que entiendas como funciona millis, pon una linea de codigo despues de la linea if ( millis() - auxMillis > intervaloMedidas) { , donde te imprima por pantalla Millis y auxmillis, verras como la diferencia siempre es mayor que intervaloMedidas. Que has de hacer para que no sea, auxMillis=millis)(); Te acoonsejo que aunque te doy la soluccion, hagas lo que te dije, sino, jamas var tener claro como funciona millis.Viendo la solucion y viendo como te funcina ahora, te acordaras de por vida ya.
3.- el ocultamiento es con vis, lo que quieres hacer tu seria bt0.val=0 para desactivarlo y bt0.val=1 para activarlo desde el arduino.
Creo que respondi a todas tus preguntas.
|
Por favor, Identificarse o Crear cuenta para unirse a la conversación.
|
Tiempo de carga de la página: 0.100 segundos