const int MOTOR[] = {3, 4, 19, 38}; const int PWM12 = 40; const int PWM34 = 39; void setup() { for (int i = 0; i < 4; i++) pinMode(MOTOR[i], OUTPUT); // enable motor output with pulse width modulation turned on all the time pinMode(PWM34, OUTPUT); pinMode(PWM12, OUTPUT); digitalWrite(PWM34, HIGH); digitalWrite(PWM12, HIGH); } void loop() { const char halfsteps[ ] = {0x9, 0x1, 0x5, 0x4, 0x6, 0x2, 0xa, 0x8}; static int i; digitalGroupWrite(MOTOR, 4, halfsteps[i++ & 7]); delay(50); } // write to a group of output pins void digitalGroupWrite(const int* group, int length, int data) { for (int i = 0; i < length; i++) digitalWrite(group[i], data & (1 << i) ? HIGH : LOW); }