//Claro, aquí está el código con un loop repetitivo que ejecutará las funciones:
//```cpp
#include <Arduino.h>
bool sensor1State = false;
bool sensor2State = false;
bool valveState = false;
bool processStarted = false;
bool sensorPisState = false;
bool state0= false;
const int sensor1Pin = 2; // Ejemplo de pin para el sensor 1
const int sensor2Pin = 4; // Ejemplo de pin para el sensor 2
const int sensorPis = 5; // Ejemplo de pin para el sensor pis
const int valvePin = 32; // Ejemplo de pin para la válvula
const int startSwitchPin = 15; // Ejemplo de pin para el switch de inicio
void sensor1Changed() {
if (digitalRead(sensor1Pin) == 1 && processStarted) {
sensor1State = true;
Serial.println("sensor1 true");
}else{
sensor1State = false;
Serial.println("sensor1 false");
}
delay(10);
}
void sensor2Changed() {
if (digitalRead(sensor2Pin) == 1 && processStarted) {
sensor2State = true;
Serial.println("sensor2 true");
}else{
sensor2State = false;
Serial.println("sensor2 false");
}
delay(10);
}
void sensorPisChanged(){
if (digitalRead(sensorPis)==1 && processStarted){
sensorPisState = true;
}else{
sensorPisState = false;
}
delay(10);
}
void startSwitchChanged() {
if (digitalRead(startSwitchPin)) {
processStarted = true;
Serial.println("Process started");
// Iniciar el proceso aquí
} else {
processStarted = false;
Serial.println("Process stopped");
// Detener el proceso aquí
}
delay(10);
}
void setup() {
pinMode(sensor1Pin, INPUT);
pinMode(sensor2Pin, INPUT);
pinMode(valvePin, OUTPUT);
pinMode(startSwitchPin, INPUT_PULLUP);
attachInterrupt(sensor1Pin, sensor1Changed, CHANGE);
attachInterrupt(sensor2Pin, sensor2Changed, CHANGE);
attachInterrupt(sensorPis, sensorPisChanged, CHANGE);
attachInterrupt(startSwitchPin, startSwitchChanged, CHANGE);
//iniciar comunicacion serial
Serial.begin(115200);
}
void loop() {
sensor1Changed();
sensor2Changed();
sensorPisChanged();
startSwitchChanged();
// Otras tareas del loop repetitivo
if (sensor2State == 0 && sensor1State == 1){
digitalWrite(valvePin, high);
delay (2000);
}else if (sensorPisState == 0 && sensor1State == 1){
digitalWrite(valvePin, LOW);
state1 = true;
}else if (sensorPisState == 1 && sensor1State == 0){
state2 = true;
}else if (sensorPisState == 1 && sensor2State == 1){
state3 = true;
}else{
digitalWrite(valvePin, LOW);
}
delay(100);
}
//```
//En este código, las funciones `sensor1Changed`, `sensor2Changed` y `startSwitchChanged` son llamadas repetidamente en el loop de forma que se ejecuten en cada iteración. Además, se pueden incluir otras tareas en el loop que necesite tu programa.Loading
esp32-devkit-c-v4
esp32-devkit-c-v4