#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; }
}

Open bot

  • 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);
  • 2.
    pinMode(INn4, OUTPUT); myservo.attach(12); // delay(1000); } //_____________________________________________________________ voidmotor1 (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 );
  • 3.
    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; }
  • 4.
    } //___________________________________________________________________________ ______________ void motor2 (intspd2 ,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);
  • 5.
    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;
  • 6.
    } 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);
  • 7.
    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);
  • 8.
    digitalWrite(INn3, HIGH); digitalWrite(INn4, LOW); break; case3: 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(); } }
  • 9.
    //______________________________________________________ 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; } }