#define IN1 8 
#define IN2 9 
#define IN3 10 
#define IN4 11 
#define IN5 4 
#define IN6 5 
#define IN7 6 
#define IN8 7 
#define INn1 22 
#define INn2 24 
#define INn3 26 
#define INn4 28 
#include <Servo.h> 
Servo myservo; // create servo object to control a servo 
// twelve servo objects can be created on most boards 
int pos = 0;  
int Steps = 0; 
int Steps1 = 0; 
int Steps2 = 0; 
boolean Direction = true;// gre 
boolean Direction1 = true;// gre 
boolean Direction2 = true;// gre 
unsigned long last_time; 
unsigned long currentMillis ; 
int steps_left=40950; 
int steps_left1=40950; 
int steps_left2=40950; 
int k=0; 
long time; 
void setup() 
{ 
Serial.begin(115200); 
pinMode(IN1, OUTPUT);  
pinMode(IN2, OUTPUT);  
pinMode(IN3, OUTPUT);  
pinMode(IN4, OUTPUT); 
pinMode(IN5, OUTPUT);  
pinMode(IN6, OUTPUT);  
pinMode(IN7, OUTPUT);  
pinMode(IN8, OUTPUT); 
pinMode(INn1, OUTPUT);  
pinMode(INn2, OUTPUT);  
pinMode(INn3, OUTPUT);  
pinMode(INn4, OUTPUT); 
myservo.attach(12);   
// delay(1000); 
} 
//_____________________________________________________________ 
void motor1 (int spd1 ,int steps1 ,int dir1 ){ 
steps_left1 = steps1 ; 
Direction1 = dir1 ; 
while(steps_left1>0){ 
currentMillis = micros(); 
if(currentMillis-last_time>=spd1){ 
stepper1(1);  
time=time+micros()-last_time; 
last_time=micros(); 
steps_left1--; 
} 
  
//delay(1000); 
//Direction=!Direction; 
  
 
} 
   
  
   
} 
//-___________________________________________________________ 
void loop() 
{ 
k=0; 
while(k<2000){ 
motor (1000 , 1 , 0 ); 
motor1 (1000 , 1 , 1 ); 
k++; 
} 
while(k<3500){ 
motor (3700 , 1 , 1 ); 
motor2 (1000 , 1 , 1 ); 
k++; 
} 
while(k<5000){ 
motor (1000 , 1 , 1 ); 
motor2 (1000 , 1 , 0 ); 
k++; 
} 
myservo.write(30); 
delay(1000); 
while(k<5500){ 
motor (3700 , 1 , 0 ); 
motor1 (1000 , 1 , 0 ); 
motor2 (1000 , 1 , 0 ); 
k++; 
} 
myservo.write(0); 
delay(2000); 
/* while(k<9000){ 
motor (800 , 1 , 0 ); 
motor1 (800 , 1 , 1 ); 
k++; 
} 
while(k<12000){ 
motor (800 , 1 , 0 ); 
motor1 (1000 , 1 , 0 ); 
k++; 
}*/ 
  
   
} 
void motor (int spd ,int steps ,int dir ){ 
steps_left = steps ; 
Direction = dir ; 
while(steps_left>0){ 
currentMillis = micros(); 
if(currentMillis-last_time>=spd){ 
stepper(1);  
time=time+micros()-last_time; 
last_time=micros(); 
steps_left--; 
   
} 
  
//delay(1000); 
//Direction=!Direction; 
  
 
} 
   
  
   
} 
//____________________________________________________________________________________
_____ 
 
void motor2 (int spd2 ,int steps2 ,int dir2 ){ 
steps_left2 = steps2 ; 
Direction2 = dir2 ; 
while(steps_left2>0){ 
currentMillis = micros(); 
if(currentMillis-last_time>=spd2){ 
stepper2(1);  
time=time+micros()-last_time; 
last_time=micros(); 
steps_left2--; 
} 
  
//delay(1000); 
//Direction=!Direction; 
  
 
} 
   
  
   
} 
//__________________________________________________ 
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 stepper1(int xy){ 
for (int x=0;x<xy;x++){ 
switch(Steps1){ 
case 0: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, HIGH); 
break;  
case 1: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, HIGH); 
digitalWrite(IN8, HIGH); 
break;  
case 2: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, HIGH); 
digitalWrite(IN8, LOW); 
break;  
case 3: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, HIGH); 
digitalWrite(IN7, HIGH); 
digitalWrite(IN8, LOW); 
break;  
case 4: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, HIGH); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, LOW); 
break;  
case 5: 
digitalWrite(IN5, HIGH);  
digitalWrite(IN6, HIGH); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, LOW); 
break;  
case 6: 
digitalWrite(IN5, HIGH);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, LOW); 
break;  
case 7: 
digitalWrite(IN5, HIGH);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, HIGH); 
break;  
default: 
digitalWrite(IN5, LOW);  
digitalWrite(IN6, LOW); 
digitalWrite(IN7, LOW); 
digitalWrite(IN8, LOW); 
break;  
} 
SetDirection1(); 
} 
} 
//____________________________________________________________________ 
void stepper2(int xz){ 
for (int x=0;x<xz;x++){ 
switch(Steps2){ 
case 0: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, HIGH); 
break;  
case 1: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, HIGH); 
digitalWrite(INn4, HIGH); 
break;  
case 2: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, HIGH); 
digitalWrite(INn4, LOW); 
break;  
case 3: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, HIGH); 
digitalWrite(INn3, HIGH); 
digitalWrite(INn4, LOW); 
break;  
case 4: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, HIGH); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, LOW); 
break;  
case 5: 
digitalWrite(INn1, HIGH);  
digitalWrite(INn2, HIGH); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, LOW); 
break;  
case 6: 
digitalWrite(INn1, HIGH);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, LOW); 
break;  
case 7: 
digitalWrite(INn1, HIGH);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, HIGH); 
break;  
default: 
digitalWrite(INn1, LOW);  
digitalWrite(INn2, LOW); 
digitalWrite(INn3, LOW); 
digitalWrite(INn4, LOW); 
break;  
} 
SetDirection2(); 
} 
}  
//______________________________________________________ 
void SetDirection(){ 
if(Direction==1){ Steps++;} 
if(Direction==0){ Steps--; } 
if(Steps>7 ){Steps=0;} 
if(Steps<0){Steps=7; } 
} 
//___________________________________________________________ 
void SetDirection1(){ 
if(Direction1==1){ Steps1++;} 
if(Direction1==0){ Steps1--; } 
if(Steps1>7 ){Steps1=0;} 
if(Steps1<0){Steps1=7; } 
} 
//______________________________ 
void SetDirection2(){ 
if(Direction2==1){ Steps2++;} 
if(Direction2==0){ Steps2--; } 
if(Steps2>7 ){Steps2=0;} 
if(Steps2<0){Steps2=7; } 
} 
 

OpenBot-Code

  • 1.
    #define IN1 8  #defineIN2 9  #define IN3 10  #define IN4 11  #define IN5 4  #define IN6 5  #define IN7 6  #define IN8 7  #define INn1 22  #define INn2 24  #define INn3 26  #define INn4 28  #include <Servo.h>  Servo myservo; // create servo object to control a servo  // twelve servo objects can be created on most boards  int pos = 0;   int Steps = 0;  int Steps1 = 0;  int Steps2 = 0;  boolean Direction = true;// gre  boolean Direction1 = true;// gre  boolean Direction2 = true;// gre  unsigned long last_time;  unsigned long currentMillis ;  int steps_left=40950;  int steps_left1=40950;  int steps_left2=40950;  int k=0;  long time;  void setup()  {  Serial.begin(115200);  pinMode(IN1, OUTPUT);   pinMode(IN2, OUTPUT);   pinMode(IN3, OUTPUT);   pinMode(IN4, OUTPUT);  pinMode(IN5, OUTPUT);   pinMode(IN6, OUTPUT);   pinMode(IN7, OUTPUT);   pinMode(IN8, OUTPUT);  pinMode(INn1, OUTPUT);   pinMode(INn2, OUTPUT);   pinMode(INn3, OUTPUT);   pinMode(INn4, OUTPUT);  myservo.attach(12);    // delay(1000);  }  //_____________________________________________________________  void motor1 (int spd1 ,int steps1 ,int dir1 ){  steps_left1 = steps1 ; 
  • 2.
    Direction1 = dir1;  while(steps_left1>0){  currentMillis = micros();  if(currentMillis-last_time>=spd1){  stepper1(1);   time=time+micros()-last_time;  last_time=micros();  steps_left1--;  }     //delay(1000);  //Direction=!Direction;       }             }  //-___________________________________________________________  void loop()  {  k=0;  while(k<2000){  motor (1000 , 1 , 0 );  motor1 (1000 , 1 , 1 );  k++;  }  while(k<3500){  motor (3700 , 1 , 1 );  motor2 (1000 , 1 , 1 );  k++;  }  while(k<5000){  motor (1000 , 1 , 1 );  motor2 (1000 , 1 , 0 );  k++;  }  myservo.write(30);  delay(1000);  while(k<5500){  motor (3700 , 1 , 0 );  motor1 (1000 , 1 , 0 );  motor2 (1000 , 1 , 0 );  k++;  }  myservo.write(0);  delay(2000);  /* while(k<9000){  motor (800 , 1 , 0 ); 
  • 3.
    motor1 (800 ,1 , 1 );  k++;  }  while(k<12000){  motor (800 , 1 , 0 );  motor1 (1000 , 1 , 0 );  k++;  }*/         }  void motor (int spd ,int steps ,int dir ){  steps_left = steps ;  Direction = dir ;  while(steps_left>0){  currentMillis = micros();  if(currentMillis-last_time>=spd){  stepper(1);   time=time+micros()-last_time;  last_time=micros();  steps_left--;      }     //delay(1000);  //Direction=!Direction;       }             }  //____________________________________________________________________________________ _____    void motor2 (int spd2 ,int steps2 ,int dir2 ){  steps_left2 = steps2 ;  Direction2 = dir2 ;  while(steps_left2>0){  currentMillis = micros();  if(currentMillis-last_time>=spd2){  stepper2(1);   time=time+micros()-last_time;  last_time=micros();  steps_left2--;  }     //delay(1000);  //Direction=!Direction; 
  • 4.
         }             }  //__________________________________________________  voidstepper(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); 
  • 5.
    digitalWrite(IN3, LOW);  digitalWrite(IN4, LOW);  break;   case7:  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 stepper1(int xy){  for (int x=0;x<xy;x++){  switch(Steps1){  case 0:  digitalWrite(IN5, LOW);   digitalWrite(IN6, LOW);  digitalWrite(IN7, LOW);  digitalWrite(IN8, HIGH);  break;   case 1:  digitalWrite(IN5, LOW);   digitalWrite(IN6, LOW);  digitalWrite(IN7, HIGH);  digitalWrite(IN8, HIGH);  break;   case 2:  digitalWrite(IN5, LOW);   digitalWrite(IN6, LOW);  digitalWrite(IN7, HIGH);  digitalWrite(IN8, LOW);  break;   case 3:  digitalWrite(IN5, LOW);   digitalWrite(IN6, HIGH);  digitalWrite(IN7, HIGH);  digitalWrite(IN8, LOW);  break;   case 4:  digitalWrite(IN5, LOW);  
  • 6.
    digitalWrite(IN6, HIGH);  digitalWrite(IN7, LOW);  digitalWrite(IN8,LOW);  break;   case 5:  digitalWrite(IN5, HIGH);   digitalWrite(IN6, HIGH);  digitalWrite(IN7, LOW);  digitalWrite(IN8, LOW);  break;   case 6:  digitalWrite(IN5, HIGH);   digitalWrite(IN6, LOW);  digitalWrite(IN7, LOW);  digitalWrite(IN8, LOW);  break;   case 7:  digitalWrite(IN5, HIGH);   digitalWrite(IN6, LOW);  digitalWrite(IN7, LOW);  digitalWrite(IN8, HIGH);  break;   default:  digitalWrite(IN5, LOW);   digitalWrite(IN6, LOW);  digitalWrite(IN7, LOW);  digitalWrite(IN8, LOW);  break;   }  SetDirection1();  }  }  //____________________________________________________________________  void stepper2(int xz){  for (int x=0;x<xz;x++){  switch(Steps2){  case 0:  digitalWrite(INn1, LOW);   digitalWrite(INn2, LOW);  digitalWrite(INn3, LOW);  digitalWrite(INn4, HIGH);  break;   case 1:  digitalWrite(INn1, LOW);   digitalWrite(INn2, LOW);  digitalWrite(INn3, HIGH);  digitalWrite(INn4, HIGH);  break;   case 2:  digitalWrite(INn1, LOW);  
  • 7.
    digitalWrite(INn2, LOW);  digitalWrite(INn3, HIGH);  digitalWrite(INn4,LOW);  break;   case 3:  digitalWrite(INn1, LOW);   digitalWrite(INn2, HIGH);  digitalWrite(INn3, HIGH);  digitalWrite(INn4, LOW);  break;   case 4:  digitalWrite(INn1, LOW);   digitalWrite(INn2, HIGH);  digitalWrite(INn3, LOW);  digitalWrite(INn4, LOW);  break;   case 5:  digitalWrite(INn1, HIGH);   digitalWrite(INn2, HIGH);  digitalWrite(INn3, LOW);  digitalWrite(INn4, LOW);  break;   case 6:  digitalWrite(INn1, HIGH);   digitalWrite(INn2, LOW);  digitalWrite(INn3, LOW);  digitalWrite(INn4, LOW);  break;   case 7:  digitalWrite(INn1, HIGH);   digitalWrite(INn2, LOW);  digitalWrite(INn3, LOW);  digitalWrite(INn4, HIGH);  break;   default:  digitalWrite(INn1, LOW);   digitalWrite(INn2, LOW);  digitalWrite(INn3, LOW);  digitalWrite(INn4, LOW);  break;   }  SetDirection2();  }  }   //______________________________________________________  void SetDirection(){  if(Direction==1){ Steps++;}  if(Direction==0){ Steps--; }  if(Steps>7 ){Steps=0;}  if(Steps<0){Steps=7; } 
  • 8.
    }  //___________________________________________________________  void SetDirection1(){  if(Direction1==1){ Steps1++;}  if(Direction1==0){Steps1--; }  if(Steps1>7 ){Steps1=0;}  if(Steps1<0){Steps1=7; }  }  //______________________________  void SetDirection2(){  if(Direction2==1){ Steps2++;}  if(Direction2==0){ Steps2--; }  if(Steps2>7 ){Steps2=0;}  if(Steps2<0){Steps2=7; }  }