Millis temporizador timer camara de frio

Hola, estoy teniendo problemas al hacer el sketch, necesito que al pulsar un boton se activen 2 relés durante 15 minutos y despues se apagen. Algien puede ayudarme? Es para un proyecto un poco grande, si alguien ayuda puedo poner el sketch y explicarlo mejor todo.

Have this one on me

unsigned long currentTime;
unsigned long startTime;
unsigned long period = 15 * 60 * 1000UL;
const byte buttonPin = A1;
const byte relay1Pin = 3;
const byte relay2Pin = 5;
boolean timing = false;

void setup()
{
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(relay1Pin, OUTPUT);
  pinMode(relay2Pin, OUTPUT);
  digitalWrite(relay1Pin, HIGH);
  digitalWrite(relay2Pin, HIGH);
}

void loop()
{
  currentTime = millis();
  if (!timing && digitalRead(buttonPin) == LOW)
  {
    digitalWrite(relay1Pin, LOW);
    digitalWrite(relay2Pin, LOW);
    startTime = currentTime;
    timing = true;
  }
  if (timing && currentTime - startTime >= period)
  {
    digitalWrite(relay1Pin, HIGH);
    digitalWrite(relay2Pin, HIGH);
    timing = false;
  }
}

Muchas gracias, soy nuevo en el foro, por aqui donde estamos escribiendo esta bien?

En cuanto pueda voy a subir todo el proyecto que estoy haciendo para que todos podamos aprender sobre el. Aun me falta acabarlo porque hay cosas que no se muy bien.

Para no hacerlo muy largo, ire por partes. En primer lugar voy a enumerar las piezas necesarias.

1.Arduino mega
2.Pantalla tft de elegoo (puede ser otra)
3.Modulo de 4 reles.
4. Cables de arduino.

Esto es por lo que vamos a empezar para no ir complicandolo, mas adelante pondremos sondas de temperatura y presostatos para alta presion y baja presion.

Esto va a ser para una camara frigorifica, se que hay varios temas abiertos pero no he encontrado ninguno que todo esté controlado con una pantalla tft.

Os explico el funcionamiento de lo que va a ser la cámara, mas adelante pondre el sketch y lo explicare.

Imaginemos que tenemos una cámara frigorífica, y queremos que se mantenga a - 10 grados, por ejemplo. Lo primero que tenemos que saber por encima es que una camara frigorífica, en el tema de electricidad, tenemos un compresor, un ventilador en el evaporador, un ventilador en el evaporador, y dos solenoides.

Voy a explicarlo mas o menos para el que le suene raro, el compresor se encarga de comprimir el gas refrigerante, al salir muy caliente debemos enfriarlo, entonces lo pasamos por el condensador, que se encarga de enfriar el gas, es mas o menos como un radiador de un coche, después el gas va hasta la valvula de expansión y ahi al expandirse se enfria todavía más, entonces lo llevamos al evaporador que está dentro de nuestra cámara frigorifica, el evaporador se encarga de enfriar la cámara, para el que no lo sepa lo que sucede es que el aire de dentro de la cámara cede su calor al refrigerante porque está mas frio. Y despues ya vuelve al compresor.

Bueno despues de explicarlo, hay que decir que en esta instalación colocamos dos solenoides, una será la solenoide de líquido, la cual se encarga de dejar pasar el regrigerante desde condensador hacia el evaporador, y la otra solenoide es la encargada de el desescarche, que el desescarche se hace cuando hay hielo en el evaporador, este hay que deshacerlo con calor.

Por lo tanto tenemos un relé encargado del compresor, otro relé encargado del ventilador del condensador, otro relé del ventilador del evaporador y el último es para las dos solenoides, que van en serie, la de liquido es NO, normalmente abierta, y la de desescarche es NC, normalmente cerrada.

Vamos a nombrar los relés,

Relé del compresor= A
Relé del vent. Condens. =B
Relé del vent. Evaporad. =C
Relé solenoides =D

Para que la cámara este encendida en modo frio, tiene que suceder que A, B y C estén encendidos y C esté apagado.

Cuando llegue a su temperatura, A, B y C estaran encendidos y D estará apagado. Esto es así porque vamos a regular la velocidad del compresor para que la temperatura se mantenga fija.

Si hay que hacer un desescarche, A y D estarán encendidas y B y C estarán apagadas.

Hasta aqui si alguien tiene alguna duda que me lo escriba por privado y si es algo interesante o importante lo publicaré. Mas que nada es para que cuando la gente venga y lea este tema no esté mucho tiempo leyendo cosas que no busca, asi irá a lo que le interesa.

Vale ahora viene lo que es un poco complicado, todo se va a controlar con arduino mega, ya que tiene más salidas que el arduino uno. En él va montada la pantalla táctil tft, con la cual podemos ver la temperatura de la cámara, el tiempo que ha transcurrido desque que el arduino se enciende, en que modo está la cámara, la versión de nuestro proyecto y la marca, todo esto son ejemplos. Además vamos a poder poner en marcha la cámara, hacer desescarches manualmente y cambiar la temperatura del setpoint, el tiempo de duracion del desescarche y cada cuanto tiempo se hace un desescarche automático.

Explicacion de palabras que puede que alguno no sepa.

Desescarche: Cuando el evaporador lleva mucho tiempo enfriando, se empieza a formar hielo en él, debido a la humedad. Es por eso que se tiene que hacer un desescarche, que es meter gas caliente (en nuestro caso) en el evaporador para descongelarlo.

Temperatura de setpoint: la temperatura a la que quieres que esté la cámara frigorífica. Si quieres - 20 grados, pues cuando llegue a ese valor se detendrá la "producción de frio" y se reanudará cuando la temperatura descienda.

De momento, ya que no he tocado nunca una pantalla tft… Voy a buscar algun programa que ya esté hecho, asi podremos ir cambiando parámetros y ver lo que pasa, y aprenderemos a colocar palabras, a poner lineas, a hacer botones… Pero para ir empezando por algo facil , no voy a activar salidas ni nada, simplemente vamos a hacer botones, recuadros y pantallas.

Tengo ya la pantalla tft, en mi cado es la elegoo tft. La cual vamos a unirla a nuestro arduino mega. Simplemente cuadramos los pines de la pantalla con los pines del arduino mega y presionamos para unirlos.

Y cual es tu consulta ?

Hola kike, mi consulta todavía no la he puesto, queria poner todos los pasos por si alguien de la comunidad lo necesita para cualquier proyecto.

Por favor Lee las normas del foro pero continúa. No hay problema.
Lo curioso es que tienes dudas que no planteas y describes todo como si fuera un tutorial pero en tu favor tal vez estes aprendiendo y compartiendo tu experiencia.

Si Surbyte, voy aprendiendo, y lo que aprendo lo voy poniendo aqui, por si a alguien le sirve. La verdad tengo alguna duda, mañana si puedo subire el programa de lo que tengo hecho y os pediré ayuda porque voy un poco perdido.

Sé que habrán cosas mal, y también faltan cosas que no sé como hacer, gracias por la ayuda.

Hola, si teneis alguna duda preguntar, me corre prisa, agradeceria colaboración del foro porfavor, si he hecho mal la consulta decírmelo, gracias.
Luego pienso hacer un tutorial para quien quiera hacerlo.

Hola por favor lee las Normas del Foro en Español y utiliza las etiquetas correspondientes para tu código, edita tus post anteriores.
Ahora cual es el error o el problema que te esta causando?

Muchas gracias Swift, he borrado el codigo que subí, voy a ir paso a paso para que no halla ningún problema.