// Release logic demo for Wokwi (Arduino Uno).
// Potentiometer = stand-in for the field sensor.
// Servo = stand-in for the latch holding the habitat layer.
#include <Servo.h>
Servo latch;
const int SENSOR_PIN = A0;
const int SERVO_PIN = 9;
const int THRESHOLD = 300; // reading below this = field absent (range 0-1023)
const unsigned long LIMIT_MS = 5000; // 30 s for the demo (weeks in real life)
unsigned long lastSeen = 0;
bool released = false;
void setup() {
Serial.begin(9600);
latch.attach(SERVO_PIN);
latch.write(0); // 0 degrees = latched (layer attached)
lastSeen = millis();
Serial.println("Layer attached. Machine field being monitored.");
}
void loop() {
int level = analogRead(SENSOR_PIN);
// Field present: reset the absence timer.
if (level > THRESHOLD) {
lastSeen = millis();
}
unsigned long absentMs = millis() - lastSeen;
// Field absent for longer than the limit: release the layer.
if (!released && absentMs > LIMIT_MS) {
latch.write(90); // 90 degrees = released
released = true;
Serial.println("RELEASED: field absent past the limit.");
}
Serial.print("level=");
Serial.print(level);
Serial.print(" absent_s=");
Serial.print(absentMs / 1000);
Serial.print(" state=");
Serial.println(released ? "RELEASED" : "ATTACHED");
delay(500);
}