Yo, personalmente, creo que lo mejor sería resolver el problema con una máquina de estados, que controle en qué secado se encuentra a la vez que en qué parte está del proceso de cada secado. Porque me temo que no sólo quiere que active o desactive cada relé, sino que también se muestre la temperatura en el LCD. Aunque siempre podemos poner dentro del for
el que muestre la temperatura. Pero insisto, nada de for
y más máquinas de estados. Además, con máquinas de estados, sería fácil implementar el uso de botones de inicio o la parada de todo el proceso, mostrar en que paso está, un botón para saltarse el paso en que está o muchas cosas más.
- Enlaces de interés sobre las máquinas de estados:
[OFF-TOPIC]
Respecto a:
Ya lo ha dicho @anon90500195, pero por si no está claro, el operador ternario:
<expresión condición> ? <expresión si es verdadero> : <expresión si falso>
devuelve el valor de <expresión si es verdadero>
en el caso de que el valor de <expresión condición>
sea verdadero. Y devuelve <expresión si es falso>
en el caso de que al valor de <expresión condición>
sea falso.
En la línea de código:
if (temprelePinA > ((digitalRead(boton) == HIGH) ? 40.00 : 42.0))
digitalRead(boton) == HIGH)
es la <expresión condición>
40.00
es la <expresión si es verdadero>
42.0
es la <expresión si es falso>
Con lo que la expresión ternaria tendrá el valor 40.00
si el pin boton
está a nivel alto y el valor 42.0
si ese pin está a nivel bajo.
Por lo que el if
verifica si el valor de temprelePinA
es mayor que 40.00
cuando el pin de boton
está a nivel alto y verifica si el valor de temprelePinA
es mayor que 42.0
cuando el pin de boton
está a nivel bajo. Así de "sencillo" .