Hola,
pues el proyecto lo llevas bien encarrilado. Supongo que lo que quieres hacer que la salida siga a la entrada.
Para eso, simplemente:
int E_calentador = 2; // Entrada Calentador conectado al pin digital 2
int S_calentador = 3; // Salida Calentador conectado al pin digital 3
int E_bomba = 4; // Entrada bomba conectado al pin digital 4
int S_bomba = 5; // Salida bomba conectado al pin digital 5
int E_luz = 6; // Entrada luz conectado al pin digital 6
int S_luz = 7; // Salida luz conectado al pin digital 7
void setup()
{
pinMode(E_calentador, INPUT); //configura el pin del calentador como entrada
pinMode(S_calentador, OUTPUT); //configura el pin del calentador como salida
pinMode(E_bomba, INPUT); //configura el pin de la comba como entrada
pinMode(S_bomba, OUTPUT); //configura el pin de la bomba como salida
pinMode(E_luz, INPUT); //configura el pin de la luz como entrada
pinMode(S_luz, OUTPUT); //configura el pin de la luz como salida
}
void loop()
{
digitalWrite ( S_calentador, digitalRead ( E_calentador ) );
digitalWrite ( S_bomba, digitalRead ( E_bomba ) );
digitalWrite ( S_luz, digitalRead ( E_luz ) );
delay ( 100 ); // Esperamos 100ms antes de hacer la siguiente lectura
}
Otra forma de declara las constantes que tienes es ponerle el cualificador const delante ya que no se pueden modificar.
También habrás visto la directiva "define", lo que hace es sustituir lo que aparece delante del por lo que aparece detrás:
#define E_calentador 2 // Entrada Calentador conectado al pin digital 2
#define S_calentador 3 // Salida Calentador conectado al pin digital 3
#define E_bomba 4 // Entrada bomba conectado al pin digital 4
#define S_bomba 5 // Salida bomba conectado al pin digital 5
#define E_luz 6 // Entrada luz conectado al pin digital 6
#define S_luz 7 // Salida luz conectado al pin digital 7
Si sustituyes este código por las declaraciones del principio también va a funcionar.
Por último comentar que en el if, si te fijas, el operador igual lo has definido como una asignación. Es un error muy común. Una buena práctica es poner la constante antes y después la variable.
Por ejemplo:
// ***** Apagar el calentador modo manual *****
if (E_calentador = LOW) // <---- no te da ningún error
{
digitalWrite(S_calentador, LOW);
}
if (LOW = E_calentador ) // <---- te da ningún error
{
digitalWrite(S_calentador, LOW);
}
if (LOW == digitalRead(E_calentador) ) // OK
{
digitalWrite(S_calentador, LOW);
}
Recuerda que tienes que leer de los pines, no de la variable que siempre será el valor que le has dado.
Otro error suele ser poner ";" hasta en la sopa. En este caso, los "ifs" no lo necesitan.
if (E_bomba == HIGH); // <----- Ufff, no hará nada y nunca entrará en la condición,
//si tienes un "else" dará error en el "else"
{
digitalWrite(S_bomba, HIGH);
}
if (E_bomba == HIGH) // OK
{
digitalWrite(S_bomba, HIGH);
}
if (HIGH == E_bomba) // Mejor
{
digitalWrite(S_bomba, HIGH);
}
En este último ejemplo, estás comprobando la variable E_bomba vale HIGH, no el pin, recuerda.
Espero que the sea de ayuda.