-
Notifications
You must be signed in to change notification settings - Fork 1
/
ports.h
232 lines (193 loc) · 4.26 KB
/
ports.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
#ifndef PORTS_COMP2010_H_
#define PORTS_COMP2010_H_
#include <hax.h>
enum {
OI_R_X = OI_JOY_R_X(1),
OI_R_Y = OI_JOY_R_Y(1),
OI_L_X = OI_JOY_L_X(1),
OI_L_Y = OI_JOY_L_Y(1),
OI_L_B = OI_ROCKER_L(1),
OI_R_B = OI_ROCKER_R(1),
OI_BUT_L_U = OI_TRIGGER_L(1, OI_B_UP),
OI_BUT_L_D = OI_TRIGGER_L(1, OI_B_DN),
OI_BUT_R_U = OI_TRIGGER_R(1, OI_B_UP),
OI_BUT_R_D = OI_TRIGGER_R(1, OI_B_DN),
};
#if defined(ROBOT_NITISH)
enum nitish_motor_e {
MTR_LIFT_L,
MTR_LIFT_R,
MTR_DRIVE_L1,
MTR_DRIVE_L2,
MTR_DRIVE_R1,
MTR_DRIVE_R2,
MTR_ARM_L,
MTR_ARM_R,
MTR_LAST
};
#elif defined(ROBOT_KEVIN)
enum kevin_motor_e {
MTR_DRIVE_L = IX_MOTOR(1),
MTR_DRIVE_R,
MTR_LIFT_L,
MTR_LIFT_R,
MTR_ARM_LT,
MTR_ARM_LB,
MTR_ARM_RT,
MTR_ARM_RB,
MTR_LAST
};
#else
# error "Bad ROBOT_*"
#endif
#define MTR_NUM ((MTR_LAST) - IX_MOTOR(1) + 1)
#if defined(ROBOT_KEVIN)
/* PWM Motor Outputs */
# if defined(ARCH_PIC)
enum kevin_pic_int_e {
INT_ENC_L1 = IX_INTERRUPT(1),
INT_ENC_L2,
INT_ENC_R1,
INT_ENC_R2,
INT_NUM
};
enum kevin_pic_ana_e {
POT_ARM = IX_ANALOG(1),
POT_LIFT,
IR_FRONT_H = IX_ANALOG(8), /* High */
IR_SIDE_B,
IR_REAR,
IR_FRONT_L, /* Low */
ANA_LAST
};
# define ANA_NUM IX_ANALOG_INV(ANA_LAST)
enum kevin_pic_dig_e {
BUT_B = IX_DIGITAL(ANA_NUM + 1),
JUMP_CAL_MODE1,
JUMP_CAL_MODE2,
JUMP_CAL_MODE3,
SEN_NUM
}
# define ENC_PER_IN 100
# define ENC_PER_DEG 15
# elif defined(ARCH_CORTEX)
enum kevin_cortex_int_e {
INT_ENC_L1 = IX_INTERRUPT(1),
INT_ENC_L2,
INT_ENC_R1,
INT_ENC_R2,
INT_NUM
};
enum kevin_cortex_dig_e {
JUMP_CAL_MODE1 = INT_NUM,
JUMP_CAL_MODE2,
JUMP_CAL_MODE3,
SEN_NUM
};
enum kevin_cortex_ana_e {
POT_ARM = IX_ANALOG(1),
POT_LIFT,
IR_REAR,
ANA_NUM
};
# define ENC_PER_IN 150
# define ENC_PER_DEG 15
# endif /* ARCH_CORTEX */
/* Where to stop to successfully score. */
#define DUMP_DISTANCE_10IN 90
/* Lift potentiometer, used to measure the orientation of the lift. */
#define POT_LIFT_LOW 75
#define POT_LIFT_HIGH 945
#define LIFT_LT(_p1_, _p2_) ((_p1_) < (_p2_))
#define LIFT_GT(_p1_, _p2_) ((_p1_) > (_p2_))
/* Arm potentiometer, used to measure the orientation of the arm. */
#define POT_ARM_LOW 850
#define POT_ARM_HIGH 200
#define ARM_LT(_p1_, _p2_) ((_p1_) > (_p2_))
#define ARM_GT(_p1_, _p2_) ((_p1_) < (_p2_))
/* Robot dimensions, used to refine drive distances. */
#define ROB_WIDTH_IN 18
#define ROB_LENGTH_IN 18
#define ROB_HEIGHT_IN 24
#define ROB_ARM_IN 17
#define ARM_SPEEDMAX 85
#define LIFT_DEPLOY_VEL 50
/* !ROBOT_KEVIN */
#elif defined(ROBOT_NITISH)
# if defined(ARCH_PIC)
/* Digital and Analog IO */
enum nitish_pic_ana_e {
POT_ARM = 0,
POT_LIFT_L,
POT_LIFT_R,
ANA_NUM
};
enum nitish_pic_dig_e {
BUT_B_R = ANA_NUM,
BUT_B_L,
JUMP_CAL_MODE1,
JUMP_CAL_MODE2,
JUMP_CAL_MODE3,
SEN_NUM
};
/* Encoder Interrupts */
enum nitish_pic_int_e {
INT_ENC_L1 = 17,
INT_ENC_L2,
INT_ENC_R1,
INT_ENC_R2,
INT_NUM
};
# define ENC_PER_IN 100
# define ENC_PER_DEG 15
# elif defined(ARCH_CORTEX)
/* Encoder Interrupts */
enum nitish_cortex_int_e {
INT_ENC_L1 = 0,
INT_ENC_L2,
INT_ENC_R1,
INT_ENC_R2,
INT_NUM
};
/* Digital Inputs */
enum nitish_cortex_dig_e {
BUT_B_L = INT_NUM,
BUT_B_R,
JUMP_CAL_MODE1,
JUMP_CAL_MODE2,
JUMP_CAL_MODE3,
SEN_NUM
};
/* Analog Inputs */
enum nitish_cortex_ana_e {
POT_ARM = 0,
POT_LIFT_L,
POT_LIFT_R,
ANA_NUM
};
# define ENC_PER_IN 150
# define ENC_PER_DEG 15
# define ARM_SPEEDMAX 127
# endif /* ARCH_CORTEX */
/* Lift potentiometer, used to measure the orientation of the lift. */
# define POT_LIFT_L_LOW 430
# define POT_LIFT_L_HIGH 300
# define POT_LIFT_R_LOW 166
# define POT_LIFT_R_HIGH 276
# define LIFT_L_LT(_p1_, _p2_) ((_p1_) > (_p2_))
# define LIFT_L_GT(_p1_, _p2_) ((_p1_) < (_p2_))
# define LIFT_R_LT(_p1_, _p2_) ((_p1_) < (_p2_))
# define LIFT_R_GT(_p1_, _p2_) ((_p1_) > (_p2_))
/* Arm potentiometer, used to measure the orientation of the arm. */
# define POT_ARM_LOW 130
# define POT_ARM_HIGH 860
# define ARM_LT(_p1_, _p2_) ((_p1_) < (_p2_))
# define ARM_GT(_p1_, _p2_) ((_p1_) > (_p2_))
/* Robot dimensions, used to refine drive distances. */
# define ROB_WIDTH_IN 18
# define ROB_LENGTH_IN 24
# define ROB_HEIGHT_IN 18
# define ROB_ARM_IN 17
# define ARM_SPEEDMAX 127
#endif
#endif /* PORTS_COMP2010_H_ */