]> git.piffa.net Git - sketchbook_andrea/blob - motors/stepper/step_3_half_step/step_3_half_step.ino
step motors
[sketchbook_andrea] / motors / stepper / step_3_half_step / step_3_half_step.ino
1
2
3 /*
4        BYJ48 Stepper motor code
5  Connect :
6  IN1 >> D8
7  IN2 >> D9
8  IN3 >> D10
9  IN4 >> D11
10  VCC ... 5V Prefer to use external 5V Source
11  Gnd
12  written By :Mohannad Rawashdeh
13  http://www.instructables.com/member/Mohannad+Rawashdeh/
14  28/9/2013
15  */
16
17 #define IN1  8
18 #define IN2  9
19 #define IN3  10
20 #define IN4  11
21 int Steps = 0;
22 boolean Direction = true;// gre
23 unsigned long last_time;
24 unsigned long currentMillis ;
25 int steps_left=4095;
26 long time;
27 void setup()
28 {
29   Serial.begin(115200);
30   pinMode(IN1, OUTPUT); 
31   pinMode(IN2, OUTPUT); 
32   pinMode(IN3, OUTPUT); 
33   pinMode(IN4, OUTPUT); 
34   // delay(1000);
35
36 }
37 void loop()
38 {
39   while(steps_left>0){
40     currentMillis = micros();
41     if(currentMillis-last_time>=1000){
42       stepper(1); 
43       time=time+micros()-last_time;
44       last_time=micros();
45       steps_left--;
46     }
47   }
48   Serial.println(time);
49   Serial.println("Wait...!");
50   delay(2000);
51   Direction=!Direction;
52   steps_left=4095;
53 }
54
55 void stepper(int xw){
56   for (int x=0;x<xw;x++){
57     switch(Steps){
58     case 0:
59       digitalWrite(IN1, LOW); 
60       digitalWrite(IN2, LOW);
61       digitalWrite(IN3, LOW);
62       digitalWrite(IN4, HIGH);
63       break; 
64     case 1:
65       digitalWrite(IN1, LOW); 
66       digitalWrite(IN2, LOW);
67       digitalWrite(IN3, HIGH);
68       digitalWrite(IN4, HIGH);
69       break; 
70     case 2:
71       digitalWrite(IN1, LOW); 
72       digitalWrite(IN2, LOW);
73       digitalWrite(IN3, HIGH);
74       digitalWrite(IN4, LOW);
75       break; 
76     case 3:
77       digitalWrite(IN1, LOW); 
78       digitalWrite(IN2, HIGH);
79       digitalWrite(IN3, HIGH);
80       digitalWrite(IN4, LOW);
81       break; 
82     case 4:
83       digitalWrite(IN1, LOW); 
84       digitalWrite(IN2, HIGH);
85       digitalWrite(IN3, LOW);
86       digitalWrite(IN4, LOW);
87       break; 
88     case 5:
89       digitalWrite(IN1, HIGH); 
90       digitalWrite(IN2, HIGH);
91       digitalWrite(IN3, LOW);
92       digitalWrite(IN4, LOW);
93       break; 
94     case 6:
95       digitalWrite(IN1, HIGH); 
96       digitalWrite(IN2, LOW);
97       digitalWrite(IN3, LOW);
98       digitalWrite(IN4, LOW);
99       break; 
100     case 7:
101       digitalWrite(IN1, HIGH); 
102       digitalWrite(IN2, LOW);
103       digitalWrite(IN3, LOW);
104       digitalWrite(IN4, HIGH);
105       break; 
106     default:
107       digitalWrite(IN1, LOW); 
108       digitalWrite(IN2, LOW);
109       digitalWrite(IN3, LOW);
110       digitalWrite(IN4, LOW);
111       break; 
112     }
113     SetDirection();
114   }
115
116 void SetDirection(){
117   if(Direction==1){ 
118     Steps++;
119   }
120   if(Direction==0){ 
121     Steps--; 
122   }
123   if(Steps>7){
124     Steps=0;
125   }
126   if(Steps<0){
127     Steps=7; 
128   }
129 }
130
131