Muy buenas tardes foreros, tengo ya hecho el prototipo y tengo en el arduino compilado con este código, solo he puesto la secuencia de agua caliente como muestra de lo que quiero, pero el código sigue con una secuencia de agua fría y otra de agua mixta, todas las secuencias son diferente y ahora mis dudas; cuando hice el código puse LOW cuando quería que se cerrase la electroválvula correspondiente y HIGH cuando quería que se abriera, cual es mi sorpresa que al subirlo a la placa funcionaba al revés esto es normal? y la otra petición es que debido a mi trabajo voy a empezar ha realizar secuencias en motores, iluminación, electroválvulas etc... por eso quiero dejar este proyecto como base para los demás y me gustaría que me guiasen a depurar el código lo máximo posible si puedo ahorrar líneas de código con alguna función o algo así o si por el contrario este es fiable para que dure años.
Epero sus comentarios como siempre y pido perdón por si hice una burrada en él código pero soy muy novel.
Un saludo a todos.
const int buttonPin0 = 2; // número del pin para el botón0
const int buttonPin1 = 3; // número del pin para el botón1
const int buttonPin2 = 4; // número del pin para el botón2
const int ELVC = 12; // número del pin de la electroválvula agua caliente
const int ELVF = 11; // número del pin de la electroválvula agua fría
const int ELVT = 10; // número del pin de la electroválvula techo
const int ELVS = 9; // número del pin de la electroválvula superior
const int ELVM = 8; // número del pin de la electroválvula medio
const int ELVI = 7; // número del pin de la electroválvula inferior
int buttonState0 = 0; // estado del botón (0 ó LOW es apagado y 1 ó HIGH es encendido)
int buttonState1 = 0; // estado del botón1 (0 ó LOW es apagado y 1 ó HIGH es encendido)
int buttonState2 = 0; // estado del botón (0 ó LOW es apagado y 1 ó HIGH es encendido)
void setup() {
pinMode(ELVC, OUTPUT); // Se identifica el pin 12 como salida
pinMode(ELVF, OUTPUT); // Se identifica el pin 11 como salida
pinMode(ELVT, OUTPUT); // Se identifica el pin 10 como salida
pinMode(ELVS, OUTPUT); // Se identifica el pin 9 como salida
pinMode(ELVM, OUTPUT); // Se identifica el pin 8 como salida
pinMode(ELVI, OUTPUT); // Se identifica el pin 7 como salida
pinMode(buttonPin0, INPUT); // Se identifica el pin 2 como entrada
pinMode(buttonPin1, INPUT); // Se identifica el pin 3 como entrada
pinMode(buttonPin2, INPUT); // Se identifica el pin 4 como entrada
}
void loop(){
buttonState0 = digitalRead(buttonPin0); // Leemos si el botón en pin2 está abierto o cerrado
buttonState1 = digitalRead(buttonPin1); // Leemos si el botón en pin3 está abierto o cerrado
buttonState2 = digitalRead(buttonPin2); // Leemos si el botón en pin4 está abierto o cerrado
delay (20);
if (buttonState0 == HIGH) // Si está siendo pulsado es HIGH se inicia secuencia AGUA CALIENTE
{
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(15000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(15000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
// Primera parte de la secuencia AGUA CALIENTE.
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, LOW);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, HIGH);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(15000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(15000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, HIGH);
digitalWrite(ELVS, HIGH);
digitalWrite(ELVM, HIGH);
digitalWrite(ELVI, HIGH);
delay(5000);
digitalWrite(ELVC, LOW);
digitalWrite(ELVF, LOW);
digitalWrite(ELVT, LOW);
digitalWrite(ELVS, LOW);
digitalWrite(ELVM, LOW);
digitalWrite(ELVI, LOW);
delay(15000);
// final secuencia segunda parte AGUA CALIENTE.
}