@@ -233,128 +233,29 @@ void Stepper::step(int steps_to_move)
233233 */
234234void Stepper::stepMotor (int thisStep)
235235{
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+ };
284240
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 ;
358259 }
359260}
360261
0 commit comments