there's no need. structures can be statically initialized
output:
4 5 For 0 Motor-B
6 7 Rev 0 Motor-C
8 9 Rev 0 Motor-A
code:
struct Motor {
const byte StepPin;
const byte DirPin;
const char *Desc;
bool forward;
int pos;
};
enum { For = 1, Rev = 0 };
Motor motors [] = {
{ 4, 5, "Motor-B", For },
{ 6, 7, "Motor-C" },
{ 8, 9, "Motor-A" },
};
const int Nmotor = sizeof(motors)/sizeof(Motor);
char s [90];
// -----------------------------------------------------------------------------
void disp () {
Motor *p = motors;
for (int n = 0; n < Nmotor; n++, p++) {
sprintf (s, " %2d %2d %3s %6d %s", p->StepPin, p->DirPin,
p->forward ? "For" : "Rev", p->pos, p->Desc);
Serial.println (s);
}
}
// -----------------------------------------------------------------------------
void setup ()
{
Serial.begin (9600);
for (int n = 0; n < Nmotor; n++) {
pinMode (motors [n].StepPin, OUTPUT);
pinMode (motors [n].DirPin, OUTPUT);
}
disp();
}
void loop () { }