bool signal = false;
bool prevSignal = false; // Variable to store the previous state of the signal
bool signalChanged = false; // Flag to track if the signal has changed
double startTime, kistStartTime, totalTime,
aantal_kisten_per_uur, currentTime, kistTime = 0;
void setup() {
Serial.begin(9600);
pinMode(4, INPUT); // Set pin 4 as an input pin
kistStartTime = millis(); // slaat de huidige tijd op in de kistStartTime
}
void loop() {
digitalWrite(4, LOW);
signal = digitalRead(4);
Serial.print("Poort 4: ");
Serial.println(signal);
digitalWrite(4, HIGH);
if (signal && !prevSignal && !signalChanged) {
// Execute this block only when signal transitions from LOW to HIGH
currentTime = millis(); //slaat de huidige tijd in milliseconden op in de variabele currentTime
kistTime = currentTime - kistStartTime; // berekent de tijd per kist
kistStartTime = currentTime; // verandert de kistStartTime variabele naar de huidige tijd
totalTime += kistTime;
Serial.println(kistTime);
aantal_kisten_per_uur = 3600000 / kistTime;
Serial.print("Aantal kisten per uur: ");
Serial.println(aantal_kisten_per_uur);
// Set the flag to prevent re-execution until the signal changes to LOW
signalChanged = true;
}
// Reset the flag when the signal changes to LOW
if (!signal) {
signalChanged = false;
}
// Update the previous state of the signal
prevSignal = signal;
delay(5000); // wat is de minimale delay??
}