// 200 steps per revolution stepper motor, 12 VDC int dir = 4; // digital pin 4 DIRECTION int stp = 2; // digital pin 2 STEP int val; int count; int deelay; void setup() { pinMode(dir, OUTPUT); pinMode(stp, OUTPUT); Serial.begin(9600); // begin serial communication with the computer at 9600 bps } void loop() { // start the loop for (val = 0; val <=50; val++) { digitalWrite(dir, HIGH); //go clockwise 1/4 turn digitalWrite(stp, HIGH); delay(1); // waits for 1 milli second digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(1); } for (val = 0; val <=100; val++) //go counterclockwise 1/2 turn { digitalWrite(dir, LOW); digitalWrite(stp, HIGH); delay(2); // waits for 2 milli seconds digitalWrite(dir, LOW); digitalWrite(stp, LOW); delay(2); } for (val = 0; val <=400; val++) //go clockwise 2 turns { digitalWrite(dir, HIGH); digitalWrite(stp, HIGH); delay(8); // waits for 8 milli seconds digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(8); // waits for 8 milli seconds } for (val = 0; val <=50; val++) //go counterclockwise 1/4 turn { digitalWrite(dir, LOW); digitalWrite(stp, HIGH); delay(1); digitalWrite(dir, LOW); digitalWrite(stp, LOW); } delay(1000); for (deelay = 5; deelay >=0; deelay-=1) // this loop ramps up speed every 1 turn for 5 revolutions { for (val = 0; val <=200; val++) //go clockwise 1 turn { digitalWrite(dir, HIGH); digitalWrite(stp, HIGH); delay(deelay); digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(deelay); } } for (val = 0; val <=1600; val++) { digitalWrite(dir, HIGH); //go clockwise 8 turns digitalWrite(stp, HIGH); delay(1); // waits for 15 milli seconds digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(1); } delay(1000); for (count = 0; count <=20; count++) // this loop flutters the motor back and forth 20 times 1/10 of a turn { for (val = 0; val <=20; val++) { digitalWrite(dir, HIGH); //go clockwise 1/10 turn digitalWrite(stp, HIGH); delay(1); // waits for 15 milli seconds digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(1); } for (val = 0; val <=20; val++) //go counterclockwise 1/10 turn { digitalWrite(dir, LOW); digitalWrite(stp, HIGH); delay(1); // waits for 1 milli seconds digitalWrite(dir, LOW); digitalWrite(stp, LOW); delay(1); } } delay(1000); for (val = 0; val <=100; val++) //go counterclockwise 1/2 turn { digitalWrite(dir, LOW); digitalWrite(stp, HIGH); delay(1); // waits for 1 milli seconds digitalWrite(dir, LOW); digitalWrite(stp, LOW); delay(1); } delay(30); for (count = 0; count <=20; count++) // this loop flutters the motor back and forth 20 times 1/10 of a turn... again { for (val = 0; val <=20; val++) { digitalWrite(dir, HIGH); //go clockwise 1/10 turn digitalWrite(stp, HIGH); delay(1); // waits for 1 milli seconds digitalWrite(dir, HIGH); digitalWrite(stp, LOW); delay(1); } for (val = 0; val <=20; val++) //go counterclockwise 1/10 turn { digitalWrite(dir, LOW); digitalWrite(stp, HIGH); delay(1); // waits for 15 milli seconds digitalWrite(dir, LOW); digitalWrite(stp, LOW); delay(1); } } delay(1000); }