@@ -233,128 +233,29 @@ void Stepper::step(int steps_to_move)
233
233
*/
234
234
void Stepper::stepMotor (int thisStep)
235
235
{
236
- if (this ->pin_count == 2 ) {
237
- switch (thisStep) {
238
- case 0 : // 01
239
- digitalWrite (motor_pin_1, LOW);
240
- digitalWrite (motor_pin_2, HIGH);
241
- break ;
242
- case 1 : // 11
243
- digitalWrite (motor_pin_1, HIGH);
244
- digitalWrite (motor_pin_2, HIGH);
245
- break ;
246
- case 2 : // 10
247
- digitalWrite (motor_pin_1, HIGH);
248
- digitalWrite (motor_pin_2, LOW);
249
- break ;
250
- case 3 : // 00
251
- digitalWrite (motor_pin_1, LOW);
252
- digitalWrite (motor_pin_2, LOW);
253
- break ;
254
- }
255
- }
256
- if (this ->pin_count == 4 ) {
257
- switch (thisStep) {
258
- case 0 : // 1010
259
- digitalWrite (motor_pin_1, HIGH);
260
- digitalWrite (motor_pin_2, LOW);
261
- digitalWrite (motor_pin_3, HIGH);
262
- digitalWrite (motor_pin_4, LOW);
263
- break ;
264
- case 1 : // 0110
265
- digitalWrite (motor_pin_1, LOW);
266
- digitalWrite (motor_pin_2, HIGH);
267
- digitalWrite (motor_pin_3, HIGH);
268
- digitalWrite (motor_pin_4, LOW);
269
- break ;
270
- case 2 : // 0101
271
- digitalWrite (motor_pin_1, LOW);
272
- digitalWrite (motor_pin_2, HIGH);
273
- digitalWrite (motor_pin_3, LOW);
274
- digitalWrite (motor_pin_4, HIGH);
275
- break ;
276
- case 3 : // 1001
277
- digitalWrite (motor_pin_1, HIGH);
278
- digitalWrite (motor_pin_2, LOW);
279
- digitalWrite (motor_pin_3, LOW);
280
- digitalWrite (motor_pin_4, HIGH);
281
- break ;
282
- }
283
- }
236
+ static PROGMEM const uint8_t phases[] = {
237
+ LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, HIGH,
238
+ LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH
239
+ };
284
240
285
- if (this ->pin_count == 5 ) {
286
- switch (thisStep) {
287
- case 0 : // 01101
288
- digitalWrite (motor_pin_1, LOW);
289
- digitalWrite (motor_pin_2, HIGH);
290
- digitalWrite (motor_pin_3, HIGH);
291
- digitalWrite (motor_pin_4, LOW);
292
- digitalWrite (motor_pin_5, HIGH);
293
- break ;
294
- case 1 : // 01001
295
- digitalWrite (motor_pin_1, LOW);
296
- digitalWrite (motor_pin_2, HIGH);
297
- digitalWrite (motor_pin_3, LOW);
298
- digitalWrite (motor_pin_4, LOW);
299
- digitalWrite (motor_pin_5, HIGH);
300
- break ;
301
- case 2 : // 01011
302
- digitalWrite (motor_pin_1, LOW);
303
- digitalWrite (motor_pin_2, HIGH);
304
- digitalWrite (motor_pin_3, LOW);
305
- digitalWrite (motor_pin_4, HIGH);
306
- digitalWrite (motor_pin_5, HIGH);
307
- break ;
308
- case 3 : // 01010
309
- digitalWrite (motor_pin_1, LOW);
310
- digitalWrite (motor_pin_2, HIGH);
311
- digitalWrite (motor_pin_3, LOW);
312
- digitalWrite (motor_pin_4, HIGH);
313
- digitalWrite (motor_pin_5, LOW);
314
- break ;
315
- case 4 : // 11010
316
- digitalWrite (motor_pin_1, HIGH);
317
- digitalWrite (motor_pin_2, HIGH);
318
- digitalWrite (motor_pin_3, LOW);
319
- digitalWrite (motor_pin_4, HIGH);
320
- digitalWrite (motor_pin_5, LOW);
321
- break ;
322
- case 5 : // 10010
323
- digitalWrite (motor_pin_1, HIGH);
324
- digitalWrite (motor_pin_2, LOW);
325
- digitalWrite (motor_pin_3, LOW);
326
- digitalWrite (motor_pin_4, HIGH);
327
- digitalWrite (motor_pin_5, LOW);
328
- break ;
329
- case 6 : // 10110
330
- digitalWrite (motor_pin_1, HIGH);
331
- digitalWrite (motor_pin_2, LOW);
332
- digitalWrite (motor_pin_3, HIGH);
333
- digitalWrite (motor_pin_4, HIGH);
334
- digitalWrite (motor_pin_5, LOW);
335
- break ;
336
- case 7 : // 10100
337
- digitalWrite (motor_pin_1, HIGH);
338
- digitalWrite (motor_pin_2, LOW);
339
- digitalWrite (motor_pin_3, HIGH);
340
- digitalWrite (motor_pin_4, LOW);
341
- digitalWrite (motor_pin_5, LOW);
342
- break ;
343
- case 8 : // 10101
344
- digitalWrite (motor_pin_1, HIGH);
345
- digitalWrite (motor_pin_2, LOW);
346
- digitalWrite (motor_pin_3, HIGH);
347
- digitalWrite (motor_pin_4, LOW);
348
- digitalWrite (motor_pin_5, HIGH);
349
- break ;
350
- case 9 : // 00101
351
- digitalWrite (motor_pin_1, LOW);
352
- digitalWrite (motor_pin_2, LOW);
353
- digitalWrite (motor_pin_3, HIGH);
354
- digitalWrite (motor_pin_4, LOW);
355
- digitalWrite (motor_pin_5, HIGH);
356
- break ;
357
- }
241
+ switch (pin_count) {
242
+ case 2 :
243
+ digitalWrite (motor_pin_1, (thisStep+1 ) & 2 );
244
+ digitalWrite (motor_pin_2, (thisStep+2 ) & 2 );
245
+ break ;
246
+ case 4 :
247
+ digitalWrite (motor_pin_4, (thisStep+0 ) & 2 );
248
+ digitalWrite (motor_pin_2, (thisStep+1 ) & 2 );
249
+ digitalWrite (motor_pin_3, (thisStep+2 ) & 2 );
250
+ digitalWrite (motor_pin_1, (thisStep+3 ) & 2 );
251
+ break ;
252
+ case 5 :
253
+ digitalWrite (motor_pin_1, pgm_read_byte (&phases[thisStep+0 ]));
254
+ digitalWrite (motor_pin_4, pgm_read_byte (&phases[thisStep+2 ]));
255
+ digitalWrite (motor_pin_2, pgm_read_byte (&phases[thisStep+4 ]));
256
+ digitalWrite (motor_pin_5, pgm_read_byte (&phases[thisStep+6 ]));
257
+ digitalWrite (motor_pin_3, pgm_read_byte (&phases[thisStep+8 ]));
258
+ break ;
358
259
}
359
260
}
360
261
0 commit comments