/*
Forum: https://forum.arduino.cc/t/streaming-a-string-of-all-4809-analogue-values-with-steppers-serial-controlled/1429922
Wokwi:https://wokwi.com/projects/455513548603608065
2026/02/09
ec2021
*/
constexpr byte enablePin {2};
#include <AccelStepper.h>
AccelStepper stepper[] = {
// (Driver , stepPin, directionPin)
{AccelStepper::DRIVER, 3, 4},
{AccelStepper::DRIVER, 5, 6},
{AccelStepper::DRIVER, 7, 8},
{AccelStepper::DRIVER, 9, 10},
{AccelStepper::DRIVER, 11, 12}
};
uint8_t noOfSteppers = sizeof(stepper) / sizeof(stepper[0]);
constexpr byte analogIn[] = {A1, A2, A3, A4, A5 };
byte noOfAnalogs = sizeof(analogIn) / sizeof(analogIn[0]);
void setup() {
Serial.begin(115200);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
initSteppers();
}
void loop() {
runSteppers();
readAnalogsEveryMilliSeconds(100);
}
void initSteppers() {
for (int i = 0; i < noOfSteppers; i++) {
stepper[i].setPinsInverted(false, false, true);
stepper[i].enableOutputs();
stepper[i].setMaxSpeed(1000);
stepper[i].setSpeed(200);
}
}
void runSteppers() {
for (int i = 0; i < noOfSteppers; i++) {
stepper[i].runSpeed();
}
}
void readAnalogsEveryMilliSeconds(unsigned long interval) {
static unsigned long lastReading = 0;
if (millis() - lastReading >= interval) {
lastReading = millis();
readAnalogs();
}
}
void readAnalogs() {
for (int i = 0; i < noOfAnalogs; i++) {
int value = analogRead(analogIn[i]);
Serial.print(i);
Serial.print(" =\t");
Serial.print(value);
Serial.print("\t");
}
Serial.println();
}