Actualizar a millis


```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);
  }
}
  1. Dale formato a tu código dentro el IDE con este comando:
    Captura de pantalla 2024-03-11 a las 8.19.56 p.m.

  2. A continuación selecciona todo tu código en el IDE y aplica este comando antes de pegarlo al foro:
    Captura de pantalla 2024-03-11 a las 8.18.18 p.m.


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.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.