Arduino - Ayuda con Multitask

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 17 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Ayuda con Multitask

Publicado por Tomás Felipe (2 intervenciones) el 17/10/2020 20:32:26
Hola estoy programando para automatizar un invernadero, compré el sensor equivocado y tengo que programar algunos horarios de riego, el problema es que si uso "DELAY" para hacer que la bomba de agua se encienda cada 3 días el programa completo se detiene. Sé que debería usar la función millims pero no sé cómo hacerlo. Alguien puede ayudarme? gracias por adelantado. aquí está mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <dht.h>
dht DHT;
#define DHT11_PIN 8
void setup(){
  pinMode (9,OUTPUT);
  pinMode (10,OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{
  DHT.read11(DHT11_PIN);
 
  //TEMPERATURA//
  Serial.print("Temperatura = ");
  Serial.print(DHT.temperature);
  Serial.println(" C");
 
  //HUMEDAD RELATIVA//
  Serial.print("Humedad = ");
  Serial.print(DHT.humidity);
  Serial.println(" %");
  delay(2000);
 
if ("Temperatura =" >20) {digitalWrite(9, HIGH);}
if ("Temperatura ="<15) {digitalWrite(9, LOW);}
if ("Humedad = "<70){digitalWrite(10, HIGH);}
if ("Humedad = "<80){digitalWrite(10, LOW);}
 
delay (300000);
digitalWrite (10,HIGH);
 delay (6000);
 digitalWrite (10,LOW);
 delay (172800000);
}

Es la parte final, remarcada con negrita la que tiene el problema.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con Multitask

Publicado por Nacho (36 intervenciones) el 17/10/2020 22:11:47
¿Un delay para tres días?

Sí, puedes usar millis. millis da la cantidad de milisegundos que lleva el arduino funcionando.
1
2
3
4
5
6
7
unsigned long timeAnt = millis();
if (millis()) > timeAnt + [milisegundos de tres días])
{
     timeAnt=millis();
     // a darle al riego
}
millis() se pone a 0 cada 50 días, más o menos.

También podrías usar un timer así https://www.prometec.net/timers/

Pero yo usaría un reloj rtc. Por los 4 céntimos que vale, se lo enchufas al arduino, lees la fecha y hora cada minuto o más y programas una agenda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Multitask

Publicado por Tomás (2 intervenciones) el 18/10/2020 00:03:44
Muchas gracias!!, el timer me llega en una semana, lo encargue hace tiempo pero vivo en el culo del mundo y se a demorado casi un mes, estaba ansioso de continuar el proyecto sin el pero no encontraba la forma.

Un grande Nacho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar