// sketch.ino
// Main test loop integrating UI and Stepper modules
#include "user_interface.h"
#include "stepper_motor.h"
// Safety Interlock Flag
bool isCalibrated = false;
void setup() {
Serial.begin(115200);
setupUI(); // Initialize pins 2, 3, 4
setupStepper(); // Initialize pins 8, 9
delay(100);
Serial.println("System Powered On.");
Serial.println("WARNING: Actuator not calibrated. Press Calibrate Button first.");
}
void loop() {
// 1. CALIBRATION SEQUENCE
if (isCalibratePressed() && isCalibrated == false) {
Serial.println("Calibrating... Moving UP to find Home.");
// Pass the limit switch pin to the stepper file so it knows when to stop
calibrateActuator(limitSwitchPin);
isCalibrated = true;
Serial.println("SUCCESS: Limit Switch Hit. Position set to 0.");
Serial.println("System Ready. You may now press Start Sorting.");
delay(500);
}
// 2. MAIN SORTING SEQUENCE
if (isStartPressed()) {
if (isCalibrated == false) {
Serial.println("ERROR: Cannot start. Please press Calibrate first!");
delay(500);
}
else {
Serial.println("Cycle Started: Lowering Magnet...");
moveActuatorDown();
Serial.println("Grabbing scrap... (2 second pause)");
delay(2000);
Serial.println("Lifting Magnet...");
moveActuatorUp();
Serial.println("Cycle Complete. Returning to Standby.");
// Wait for button release
while(isStartPressed());
}
}
}Start Sorting
Calibrate
Limit Switch