```cpp
int sensor;
int sensor2;
void setup() {
pinMode(4, OUTPUT); //Salida al Canal 4 del Reley
pinMode(5, OUTPUT); //Salida al Canal 3 del Reley
pinMode(6, OUTPUT); //Salida al Canal 2 del Reley
pinMode(7, OUTPUT); //Salida al Canal 1 del Reley
pinMode(8, OUTPUT);
// pinMode(9, OUTPUT);
pinMode(A5, INPUT); //Entrada Pin analogica (SENSOR PEGAMENTO)
pinMode(A4, INPUT); //Entrada Pin analogica (SENSOR HOJA)
Serial.begin(9600);
}
void loop() {
sensor = analogRead(A5);
sensor2 = analogRead(A4);
Serial.println(sensor2);
// RELEY DEL SENSOR -----> ACTIVA VALVULA
if (sensor) { digitalWrite(4, HIGH); } // Sensor (Activado) ----> Desactiva Valvula
if (sensor) { digitalWrite(4, LOW); } // Sensor (Desactivado) ----> Activa Valvula
// RELEY DE LA VALVULA -----> CIERRA VALVULA
if (sensor) { digitalWrite(5, LOW); }
if (sensor) { digitalWrite(5, HIGH); }
if (sensor) { digitalWrite(6, LOW); }
if (sensor) { digitalWrite(6, HIGH); }
if (sensor) { digitalWrite(7, HIGH); }
if (sensor) { digitalWrite(7, LOW); }
// SENSOR HOJA
if (sensor2) {
digitalWrite(8, HIGH);
delay(500);
}
if (sensor2) {
digitalWrite(8, LOW);
delay(500);
}
}
Dale formato a tu código dentro el IDE con este comando:
A continuación selecciona todo tu código en el IDE y aplica este comando antes de pegarlo al foro:
Así nos ayudas a entender tu código para poderte ayudar
1 Like
Al margen de lo que te pide @mancera1979 , tu código tiene un problema...
¿Qué pasaría si la variable sensor tiene justamente el valor 100?
Por otro lado, aunque no es un error, tu código sería más eficiente si hicieras
if (sensor >= 100) { // aquí incluyo el valor 100 en la condición
digitalWrite(4, HIGH); // Sensor (Activado) ----> Desactiva Valvula
digitalWrite(5, LOW);
// y sigue con las otras válvulas
} else { // sensor < 100
digitalWrite(4, LOW); // Sensor (Desactivado) ----> Activa Valvula
digitalWrite(5, HIGH);
// lo mismo para las otras válvulas
}
Y lo mismo para sensor2
1 Like
Moderador:
Por favor, lee las Normas del foro y edita tu código y los errores que has publicado usando etiquetas.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en (<CODE/> )
1 Like
listo amigo, crees que me puedas ayudar
saludos!!
No se si quieres algo asi
#define UMBRAL1 200
#define UMBRAL2 500
int sensor;
int sensor2;
unsigned long previusMillis;
byte estado2 = 0;
void setup() {
pinMode(4, OUTPUT); //Salida al Canal 4 del Reley
pinMode(5, OUTPUT); //Salida al Canal 3 del Reley
pinMode(6, OUTPUT); //Salida al Canal 2 del Reley
pinMode(7, OUTPUT); //Salida al Canal 1 del Reley
pinMode(8, OUTPUT);
// pinMode(9, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensor = analogRead(A5);
sensor2 = analogRead(A4);
Serial.println(sensor2);
// RELEY DEL SENSOR -----> ACTIVA VALVULA
if (sensor >= UMBRAL1) { // aquí incluyo el valor 100 en la condición
digitalWrite(4, HIGH); // Sensor (Activado) ----> Desactiva Valvula
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
// y sigue con las otras válvulas
} else { // sensor < 100
digitalWrite(4, LOW); // Sensor (Desactivado) ----> Activa Valvula
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
// lo mismo para las otras válvulas
}
// SENSOR2 con máquina de estados
switch(estado2) {
case 0: if (sensor2 >= UMBRAL2)
digitalWrite(8, !digitalRead((8)));
previusMillis = millis();
estado2 = 1;
break;
case 1: if (millis() - previusMillis > 500UL) {
estado2 = 0;
}
break;
}
}
1 Like
El código que editaste ahora está mal y no funcionaría, quitaste las comparaciones de las sentencias if()
Esto
if (sensor) { digitalWrite(4, HIGH); } // Sensor (Activado) ----> Desactiva Valvula
if (sensor) { digitalWrite(4, LOW); } // Sensor (Desactivado) ----> Activa Valvula
equivale a
if (sensor != 0) { digitalWrite(4, HIGH); } // Sensor (Activado) ----> Desactiva Valvula
if (sensor != 0) { digitalWrite(4, LOW); } // Sensor (Desactivado) ----> Activa Valvula
O sea que ejecuta ambas acciones para cualquier valor distinto de 0.
system
Closed
September 8, 2024, 9:46pm
8
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.