/* http://www.bristolwatch.com/L298N/stepper.htm Program Stepper motor demo Lewis Loflin lewis@bvu.net */ // color code based on a motor I used #define black 8 // Q1 #define brown 9 // Q2 #define orange 10 //Q3 #define yellow 11 //Q4 int temp, potVal; #include #include #include LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 void setup() { pinMode(black, OUTPUT); pinMode(brown, OUTPUT); pinMode(orange, OUTPUT); pinMode(yellow, OUTPUT); all_coils_off(); lcd.init(); // initialize the lcd lcd.backlight(); } void loop() { potVal = analogRead(0) + 5; lcd.print("CW delay: "); lcd.print(potVal); forward(200, potVal); all_coils_off(); lcd.home(); lcd.clear(); lcd.print("Pause 2 Sec. "); delay(2000); lcd.home(); lcd.clear(); lcd.print("CCW delay: "); lcd.print(potVal + 5); reverse(200, potVal + 5); all_coils_off(); lcd.home(); lcd.clear(); lcd.print("Pause 2 Sec. "); delay(2000); lcd.home(); lcd.clear(); lcd.print("Slow-Fast"); delay(1000); forward(200, 50); reverse(200, 40); forward(200, 30); reverse(200, 20); forward(200, 10); reverse(200, 10); all_coils_off(); lcd.home(); lcd.clear(); lcd.print("Random"); delay(1000); reverse(28, 100); forward(100, 50); reverse(200, 10); reverse(75, 150); forward(50, 50); reverse(125, 20); all_coils_off(); lcd.home(); lcd.clear(); } // end loop void all_coils_off(void) { digitalWrite(black, 0); digitalWrite(brown, 0); digitalWrite(orange, 0); digitalWrite(yellow, 0); } void reverse(int i, int j) { while (1) { digitalWrite(black, 1); digitalWrite(brown, 0); digitalWrite(orange, 1); digitalWrite(yellow, 0); delay(j); i--; if (i < 1) break; digitalWrite(black, 0); digitalWrite(brown, 1); digitalWrite(orange, 1); digitalWrite(yellow, 0); delay(j); i--; if (i < 1) break; digitalWrite(black, 0); digitalWrite(brown, 1); digitalWrite(orange, 0); digitalWrite(yellow, 1); delay(j); i--; if (i < 1) break; digitalWrite(black, 1); digitalWrite(brown, 0); digitalWrite(orange, 0); digitalWrite(yellow, 1); delay(j); i--; if (i < 1) break; } } void forward(int i, int j) { while (1) { digitalWrite(black, 1); digitalWrite(brown, 0); digitalWrite(orange, 0); digitalWrite(yellow, 1); delay(j); i--; if (i < 1) break; digitalWrite(black, 0); digitalWrite(brown, 1); digitalWrite(orange, 0); digitalWrite(yellow, 1); delay(j); i--; if (i < 1) break; digitalWrite(black, 0); digitalWrite(brown, 1); digitalWrite(orange, 1); digitalWrite(yellow, 0); delay(j); i--; if (i < 1) break; digitalWrite(black, 1); digitalWrite(brown, 0); digitalWrite(orange, 1); digitalWrite(yellow, 0); delay(j); i--; if (i < 1) break; } }