+
+
+/*
+ BYJ48 Stepper motor code
+ Connect :
+ IN1 >> D8
+ IN2 >> D9
+ IN3 >> D10
+ IN4 >> D11
+ VCC ... 5V Prefer to use external 5V Source
+ Gnd
+ written By :Mohannad Rawashdeh
+ http://www.instructables.com/member/Mohannad+Rawashdeh/
+ 28/9/2013
+ */
+
+#define IN1 8
+#define IN2 9
+#define IN3 10
+#define IN4 11
+int Steps = 0;
+boolean Direction = true;// gre
+unsigned long last_time;
+unsigned long currentMillis ;
+int steps_left=4095;
+long time;
+void setup()
+{
+ Serial.begin(115200);
+ pinMode(IN1, OUTPUT);
+ pinMode(IN2, OUTPUT);
+ pinMode(IN3, OUTPUT);
+ pinMode(IN4, OUTPUT);
+ // delay(1000);
+
+}
+void loop()
+{
+ while(steps_left>0){
+ currentMillis = micros();
+ if(currentMillis-last_time>=1000){
+ stepper(1);
+ time=time+micros()-last_time;
+ last_time=micros();
+ steps_left--;
+ }
+ }
+ Serial.println(time);
+ Serial.println("Wait...!");
+ delay(2000);
+ Direction=!Direction;
+ steps_left=4095;
+}
+
+void stepper(int xw){
+ for (int x=0;x<xw;x++){
+ switch(Steps){
+ case 0:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, HIGH);
+ break;
+ case 1:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, HIGH);
+ digitalWrite(IN4, HIGH);
+ break;
+ case 2:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, HIGH);
+ digitalWrite(IN4, LOW);
+ break;
+ case 3:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, HIGH);
+ digitalWrite(IN3, HIGH);
+ digitalWrite(IN4, LOW);
+ break;
+ case 4:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, HIGH);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, LOW);
+ break;
+ case 5:
+ digitalWrite(IN1, HIGH);
+ digitalWrite(IN2, HIGH);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, LOW);
+ break;
+ case 6:
+ digitalWrite(IN1, HIGH);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, LOW);
+ break;
+ case 7:
+ digitalWrite(IN1, HIGH);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, HIGH);
+ break;
+ default:
+ digitalWrite(IN1, LOW);
+ digitalWrite(IN2, LOW);
+ digitalWrite(IN3, LOW);
+ digitalWrite(IN4, LOW);
+ break;
+ }
+ SetDirection();
+ }
+}
+void SetDirection(){
+ if(Direction==1){
+ Steps++;
+ }
+ if(Direction==0){
+ Steps--;
+ }
+ if(Steps>7){
+ Steps=0;
+ }
+ if(Steps<0){
+ Steps=7;
+ }
+}
+
+