// Triaxial_initial_test ver 1.0.0  05 December 2025
#include <AccelStepper.h>

#define STEPPER_A 26  //32
#define STEPPER_B 25  //33
#define STEPPER_C 33  //25
#define STEPPER_D 32  //26
AccelStepper stepper(AccelStepper::FULL4WIRE, STEPPER_A, STEPPER_C, STEPPER_B, STEPPER_D);

#define nudgeButton 0
#define minuteButton 27
#define LED 2
#define sensorInput 34


int i;
bool j;
bool k;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  pinMode(nudgeButton, INPUT_PULLUP);
  pinMode(minuteButton, INPUT_PULLUP);
  pinMode(sensorInput, INPUT);
  digitalWrite(2, LOW);  // turn off LED


  // Change these to suit your stepper if you want
  stepper.setMinPulseWidth(20);
  stepper.setMaxSpeed(400.0);
  stepper.setAcceleration(400.0);
  stepper.setSpeed(400);
  stepper.setCurrentPosition(0);
}

void loop() {

  // test inputs and light LED if triggered
  bool j = (digitalRead(nudgeButton));
  bool k = (digitalRead(minuteButton));
  bool l = (digitalRead(sensorInput));


  if (j == false || k == false || l == false) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }


  // test step position and move if it has stopped
  if (stepper.distanceToGo() == 0) {
    Serial.print("Waiting ");
    Serial.println(i);
    stepper.setCurrentPosition(0);
    stepper.moveTo(2048);
    delay(200);
    i++;
  }

  stepper.run();  // Move the motor one step
}
