-
Notifications
You must be signed in to change notification settings - Fork 0
/
CustomStepper.h
62 lines (57 loc) · 1.47 KB
/
CustomStepper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//Based on the work of Igor Campos
#ifndef CUSTOMSTEPPER_H
#define CUSTOMSTEPPER_H
#if defined(ARDUINO) && ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
enum motormode {CONTINUOUS, STEPS , HOME, UNHOME};
enum motordir {STOP, CW, CCW};
class CustomStepper
{
private:
boolean done;
byte pin1;
byte pin2;
byte pin3;
byte pin4;
byte pinOptoLED;
byte pinOptoTran;
byte noSteps;
byte steps[8];
byte nextStep;
motordir direction;
motormode mode;
unsigned int stepsToGo;
unsigned int absolutePosition;
void calcAbsolutePosition();
float stepCorrection;
float rpm;
float spr;
float time;
unsigned long timer;
void setTimer();
void calcTime();
void disable();
void step();
void dostep();
void setupOpto();
void setupMotor();
boolean readOpto();
void unhome();
unsigned int degreesToSteps(float degrees);
public:
CustomStepper(byte pin1, byte pin2, byte pin3, byte pin4, byte pinOptpLED, byte pinOptoTran, byte steps[] = (byte[]){8, B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001}, float spr = 4075.7728395, float rpm = 12, motordir direction = CW);
void setRPM(float RPM);
void setSPR(float SPR);
void setDirection(motordir direction = CW);
void rotateDegrees(float degrees);
void rotateToDegrees(float degrees);
float positionDegrees();
void home();
void run();
boolean isDone();
void dump();
};
#endif