-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsnootor_dc.h
128 lines (115 loc) · 2.2 KB
/
snootor_dc.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/**
* @file
* @author ikujam@ikujam.org
* @version 148
* @section LICENSE
* copyleft Snootlab, 2011
* this code is public domain, enjoy!
* @section DESCRIPTION
* Snootlab Max 7313 Motor shield library
* Based on Adafruit Motor shield library
* https://github.com/adafruit/Adafruit-Motor-Shield-library
*
*/
#include "snootor_defines.h"
#include "snootor_common.h"
#include "snootor_motor.h"
#ifndef __SNOOTOR_DC_H
#define __SNOOTOR_DC_H
/**
* SnootorDC
*
* DC motor class
*
* strongly inspired from Lady Ada's code
*
*/
class SnootorDC: public SnootorMotor{
public:
/**
* Empty constructor
*/
SnootorDC(void);
~SnootorDC(void);
/**
* init
*
* @param motornum - PWM numerotation adafruit, 1->4
* @param freq - motorspeed (from adafruit library)
*/
void init(uint8_t motornum, uint8_t freq = MOTOR34_8KHZ);
/**
* delay
* "multitask" wrapper for SC.delay
*
* @param ms - time to wait
*
* @return - this, for chaining method calls
*
*/
SnootorDC* delay(uint16_t ms){SC.delay(ms);return this;} //
/**
* run
*
* @param run - sets direction - FORWARD, BACKWARD,RELEASE
*
* @return - this, for chaining method calls
*
*/
SnootorDC* run(uint8_t cmd);
/**
* run
*
* @param run - sets direction - FORWARD, BACKWARD,RELEASE
*
* @return - this, for chaining method calls
*
*/
SnootorDC* setSpeed(uint8_t speed); // via PWM
/**
* invert
*
* inverts the direction for this motor (FORWARD <=> BACKWARD)
* for simplification
*
*/
void invert(){(inverted)?inverted=0: inverted=1;}
/**
* isInverted
*
* checks if this motor is inverted
*
* @return 1 if inverted, 0 if not
*/
uint8_t isInverted();
/**
* next
*
* does one "multitask" step, not used for DC motors
*
*/
uint16_t next(){return 0;} // -> SnootorMotor
/**
* dump
*
* dumps motor state information if MOTOR_DEBUG define is active
*
*/
#ifdef MOTOR_DEBUG
void dump();
#else
void dump(){} // noop
#endif
/**
* stop
*
* stops this motor
*
*/
void stop(); // -> SnootorMotor
private:
uint8_t motornum;
uint8_t motor_speed;
uint8_t inverted;
};
#endif