]> git.piffa.net Git - sketchbook_andrea/blob - motors/stepper/step_2_full_step_raw/step_2_full_step_raw.ino
step motors
[sketchbook_andrea] / motors / stepper / step_2_full_step_raw / step_2_full_step_raw.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   // Impostato ad Half Steps
57   for (int x=0;x<xw;x++){
58     switch(Steps){
59     case 0:
60       digitalWrite(IN1, LOW); 
61       digitalWrite(IN2, LOW);
62       digitalWrite(IN3, LOW);
63       digitalWrite(IN4, LOW);
64       break; 
65     case 1:
66       digitalWrite(IN1, LOW); 
67       digitalWrite(IN2, LOW);
68       digitalWrite(IN3, HIGH);
69       digitalWrite(IN4, HIGH);
70       break; 
71     case 2:
72       digitalWrite(IN1, LOW); 
73       digitalWrite(IN2, LOW);
74       digitalWrite(IN3, HIGH);
75       digitalWrite(IN4, HIGH);
76       break; 
77     case 3:
78       digitalWrite(IN1, LOW); 
79       digitalWrite(IN2, HIGH);
80       digitalWrite(IN3, HIGH);
81       digitalWrite(IN4, LOW);
82       break; 
83     case 4:
84       digitalWrite(IN1, LOW); 
85       digitalWrite(IN2, HIGH);
86       digitalWrite(IN3, HIGH);
87       digitalWrite(IN4, LOW);
88       break; 
89     case 5:
90       digitalWrite(IN1, HIGH); 
91       digitalWrite(IN2, HIGH);
92       digitalWrite(IN3, LOW);
93       digitalWrite(IN4, LOW);
94       break; 
95     case 6:
96       digitalWrite(IN1, HIGH); 
97       digitalWrite(IN2, HIGH);
98       digitalWrite(IN3, LOW);
99       digitalWrite(IN4, HIGH);
100       break; 
101     case 7:
102       digitalWrite(IN1, HIGH); 
103       digitalWrite(IN2, LOW);
104       digitalWrite(IN3, LOW);
105       digitalWrite(IN4, HIGH);
106       break; 
107     default:
108       digitalWrite(IN1, LOW); 
109       digitalWrite(IN2, LOW);
110       digitalWrite(IN3, LOW);
111       digitalWrite(IN4, LOW);
112       break; 
113     }
114     SetDirection();
115   }
116
117 void SetDirection(){
118   if(Direction==1){ 
119     Steps++;
120   }
121   if(Direction==0){ 
122     Steps--; 
123   }
124   if(Steps>7){
125     Steps=0;
126   }
127   if(Steps<0){
128     Steps=7; 
129   }
130 }
131
132