Bowls Eye  1.0
stepperMotor.c
Go to the documentation of this file.
1 
8 #include "stepperMotor.h"
9 
15 void StepperMotor_construct(StepperMotor_t *stepper, uint8_t multiple){
16 
17  stepper->pinEnA = PIN_EN_A_;
18  stepper->pinEnB = PIN_EN_B_;
19  stepper->pinA0 = PIN_IN_1_;
20  stepper->pinA1 = PIN_IN_2_;
21  stepper->pinB0 = PIN_IN_3_;
22  stepper->pinB1 = PIN_IN_4_;
23 
24  stepper->step[0] = StepperMotor_step0;
25  stepper->step[1] = StepperMotor_step1;
26  stepper->step[2] = StepperMotor_step2;
27  stepper->step[3] = StepperMotor_step3;
28 
29  stepper->currentStep = 0;
30  stepper->waitTime = STEP_DELAY_;
31 
32  stepper->stepMultiple = multiple;
33  stepper->direction = DIRECTION_CLOCKWISE_;
34 
35  StepperMotor_enable(stepper);
36 }
37 
43 
44  if(stepper->direction == DIRECTION_CLOCKWISE_){
45 
46  for(uint8_t i=0; i<stepper->stepMultiple; i++){
47 
49  time_sleep(stepper->waitTime);
50  }
51  }
52  else{
53 
54  for(uint8_t i=0; i<stepper->stepMultiple; i++){
55 
57  time_sleep(stepper->waitTime);
58  }
59  }
60 }
61 
67 void StepperMotor_setStepSize(StepperMotor_t *stepper, uint8_t multiple){
68 
69  stepper->stepMultiple = multiple;
70 }
71 
77 void StepperMotor_setDirection(StepperMotor_t *stepper, uint8_t direction){
78 
79  stepper->direction = direction;
80 }
81 
87 
88  gpio_write(pi, stepper->pinEnA, 1);
89  gpio_write(pi, stepper->pinEnB, 1);
90 
91  gpio_write(pi, stepper->pinA0, 0);
92  gpio_write(pi, stepper->pinA1, 0);
93  gpio_write(pi, stepper->pinB0, 0);
94  gpio_write(pi, stepper->pinB1, 0);
95 }
96 
102 
103  gpio_write(pi, stepper->pinEnA, 0);
104  gpio_write(pi, stepper->pinEnB, 0);
105 
106  gpio_write(pi, stepper->pinA0, 0);
107  gpio_write(pi, stepper->pinA1, 0);
108  gpio_write(pi, stepper->pinB0, 0);
109  gpio_write(pi, stepper->pinB1, 0);
110 }
111 
117 
118  gpio_write(pi, stepper->pinEnA, 1);
119 }
120 
126 
127  gpio_write(pi, stepper->pinEnB, 1);
128 }
129 
135 
136  stepper->step[stepper->currentStep](stepper);
137 
138  stepper->currentStep++;
139 
140  StepperMotor_wrapStep(stepper);
141 }
142 
148 
149  stepper->step[stepper->currentStep](stepper);
150  stepper->currentStep--;
151 
152  StepperMotor_wrapStep(stepper);
153 }
154 
160 
161  if(stepper->currentStep >= NO_STEPS_){
162  stepper->currentStep = 0;
163  }
164 
165  if(stepper->currentStep < 0){
166  stepper->currentStep = NO_STEPS_ - 1;
167  }
168 }
169 
175 
176  gpio_write(pi, stepper->pinA0, 0);
177  gpio_write(pi, stepper->pinA1, 1);
178  gpio_write(pi, stepper->pinB0, 1);
179  gpio_write(pi, stepper->pinB1, 0);
180 }
181 
187 
188  gpio_write(pi, stepper->pinA0, 0);
189  gpio_write(pi, stepper->pinA1, 1);
190  gpio_write(pi, stepper->pinB0, 0);
191  gpio_write(pi, stepper->pinB1, 1);
192 }
193 
199 
200  gpio_write(pi, stepper->pinA0, 1);
201  gpio_write(pi, stepper->pinA1, 0);
202  gpio_write(pi, stepper->pinB0, 0);
203  gpio_write(pi, stepper->pinB1, 1);
204 }
205 
211 
212  gpio_write(pi, stepper->pinA0, 1);
213  gpio_write(pi, stepper->pinA1, 0);
214  gpio_write(pi, stepper->pinB0, 1);
215  gpio_write(pi, stepper->pinB1, 0);
216 }
void StepperMotor_decrementStep(StepperMotor_t *stepper)
Definition: stepperMotor.c:147
uint8_t pinEnA
Definition: stepperMotor.h:37
void StepperMotor_enB(StepperMotor_t *stepper)
Definition: stepperMotor.c:125
void StepperMotor_step0(StepperMotor_t *stepper)
Definition: stepperMotor.c:174
void StepperMotor_setStepSize(StepperMotor_t *stepper, uint8_t multiple)
Definition: stepperMotor.c:67
void StepperMotor_wrapStep(StepperMotor_t *stepper)
Definition: stepperMotor.c:159
void StepperMotor_update(StepperMotor_t *stepper)
Definition: stepperMotor.c:42
void StepperMotor_setDirection(StepperMotor_t *stepper, uint8_t direction)
Definition: stepperMotor.c:77
void StepperMotor_step2(StepperMotor_t *stepper)
Definition: stepperMotor.c:198
void StepperMotor_enA(StepperMotor_t *stepper)
Definition: stepperMotor.c:116
void StepperMotor_step1(StepperMotor_t *stepper)
Definition: stepperMotor.c:186
void StepperMotor_step3(StepperMotor_t *stepper)
Definition: stepperMotor.c:210
int8_t currentStep
Definition: stepperMotor.h:38
void StepperMotor_disable(StepperMotor_t *stepper)
Definition: stepperMotor.c:101
uint8_t stepMultiple
Definition: stepperMotor.h:40
void StepperMotor_construct(StepperMotor_t *stepper, uint8_t multiple)
Definition: stepperMotor.c:15
Structure for interfacing with stepper motor and its dual H bridge driver.
Definition: stepperMotor.h:34
void StepperMotor_enable(StepperMotor_t *stepper)
Definition: stepperMotor.c:86
void StepperMotor_incrementStep(StepperMotor_t *stepper)
Definition: stepperMotor.c:134