@@ -96,110 +96,113 @@ void loop(){
96
96
}
97
97
if (packeter.checkPayload ()) {
98
98
code = packeter.payloadTop ();
99
- switch (code){
100
- case ' J' :
101
- packeter.unpacketC2F (code,left,right);
102
- alvik.disableKinematicsMovement ();
103
- alvik.disablePositionControl ();
104
- alvik.setRpm (left, right);
105
- break ;
106
-
107
- case ' V' :
108
- packeter.unpacketC2F (code,linear,angular);
109
- alvik.disableKinematicsMovement ();
110
- alvik.disablePositionControl ();
111
- alvik.drive (linear,angular);
112
- break ;
113
-
114
- case ' W' :
115
- packeter.unpacketC2B1F (code,label,control_type,value);
116
- alvik.disableKinematicsMovement ();
117
- if (label==' L' ){
118
- switch (control_type){
119
- case ' V' :
120
- alvik.disablePositionControlLeft ();
121
- alvik.setRpmLeft (value);
122
- break ;
123
- case ' P' :
124
- alvik.setPositionLeft (value);
125
- ack_required=MOVEMENT_LEFT;
126
- ack_check=true ;
127
- break ;
128
- case ' Z' :
129
- alvik.resetPositionLeft (value);
130
- break ;
99
+ if (!alvik.isBatteryAlert ()){
100
+ switch (code){
101
+ case ' J' :
102
+ packeter.unpacketC2F (code,left,right);
103
+ alvik.disableKinematicsMovement ();
104
+ alvik.disablePositionControl ();
105
+ alvik.setRpm (left, right);
106
+ break ;
107
+
108
+ case ' V' :
109
+ packeter.unpacketC2F (code,linear,angular);
110
+ alvik.disableKinematicsMovement ();
111
+ alvik.disablePositionControl ();
112
+ alvik.drive (linear,angular);
113
+ break ;
114
+
115
+ case ' W' :
116
+ packeter.unpacketC2B1F (code,label,control_type,value);
117
+ alvik.disableKinematicsMovement ();
118
+ if (label==' L' ){
119
+ switch (control_type){
120
+ case ' V' :
121
+ alvik.disablePositionControlLeft ();
122
+ alvik.setRpmLeft (value);
123
+ break ;
124
+ case ' P' :
125
+ alvik.setPositionLeft (value);
126
+ ack_required=MOVEMENT_LEFT;
127
+ ack_check=true ;
128
+ break ;
129
+ case ' Z' :
130
+ alvik.resetPositionLeft (value);
131
+ break ;
132
+ }
131
133
}
132
- }
133
- if (label== ' R ' ){
134
- switch (control_type){
135
- case ' V ' :
136
- alvik.disablePositionControlRight ( );
137
- alvik. setRpmRight (value) ;
138
- break ;
139
- case ' P ' :
140
- alvik. setPositionRight (value) ;
141
- ack_required=MOVEMENT_RIGHT ;
142
- ack_check= true ;
143
- break ;
144
- case ' Z ' :
145
- alvik. resetPositionRight (value) ;
146
- break ;
134
+ if (label== ' R ' ){
135
+ switch (control_type ){
136
+ case ' V ' :
137
+ alvik. disablePositionControlRight ();
138
+ alvik.setRpmRight (value );
139
+ break ;
140
+ case ' P ' :
141
+ alvik. setPositionRight (value);
142
+ ack_required=MOVEMENT_RIGHT ;
143
+ ack_check= true ;
144
+ break ;
145
+ case ' Z ' :
146
+ alvik. resetPositionRight (value);
147
+ break ;
148
+ }
147
149
}
148
- }
149
- break ;
150
-
151
-
152
- case ' A' :
153
- packeter.unpacketC2F (code,position_left, position_right);
154
- alvik.disableKinematicsMovement ();
155
- alvik.setPosition (position_left, position_right);
156
- ack_required=MOVEMENT_POSITION;
157
- ack_check=true ;
158
- break ;
159
-
160
-
161
- case ' S' :
162
- packeter.unpacketC2B (code,servo_A,servo_B);
163
- alvik.setServoA (servo_A);
164
- alvik.setServoB (servo_B);
165
- break ;
166
-
167
- case ' L' :
168
- packeter.unpacketC1B (code,leds);
169
- alvik.setAllLeds (leds);
170
- break ;
171
-
172
- case ' P' :
173
- packeter.unpacketC1B3F (code,pid,kp,ki,kd);
174
- if (pid==' L' ){
175
- alvik.setKPidLeft (kp,ki,kd);
176
- }
177
- if (pid==' R' ){
178
- alvik.setKPidRight (kp,ki,kd);
179
- }
180
- break ;
181
-
182
- case ' R' :
183
- packeter.unpacketC1F (code, value);
184
- alvik.disablePositionControl ();
185
- alvik.rotate (value);
186
- ack_required=MOVEMENT_ROTATE;
187
- ack_check=true ;
188
- break ;
189
-
190
- case ' G' :
191
- packeter.unpacketC1F (code, value);
192
- alvik.disablePositionControl ();
193
- alvik.move (value);
194
- ack_required=MOVEMENT_MOVE;
195
- ack_check=true ;
196
- break ;
197
-
198
- case ' Z' :
199
- packeter.unpacketC3F (code, x, y, theta);
200
- alvik.resetPose (x, y, theta);
201
- break ;
202
-
150
+ break ;
151
+
152
+
153
+ case ' A' :
154
+ packeter.unpacketC2F (code,position_left, position_right);
155
+ alvik.disableKinematicsMovement ();
156
+ alvik.setPosition (position_left, position_right);
157
+ ack_required=MOVEMENT_POSITION;
158
+ ack_check=true ;
159
+ break ;
160
+
161
+
162
+ case ' S' :
163
+ packeter.unpacketC2B (code,servo_A,servo_B);
164
+ alvik.setServoA (servo_A);
165
+ alvik.setServoB (servo_B);
166
+ break ;
167
+
168
+ case ' L' :
169
+ packeter.unpacketC1B (code,leds);
170
+ alvik.setAllLeds (leds);
171
+ break ;
172
+
173
+ case ' P' :
174
+ packeter.unpacketC1B3F (code,pid,kp,ki,kd);
175
+ if (pid==' L' ){
176
+ alvik.setKPidLeft (kp,ki,kd);
177
+ }
178
+ if (pid==' R' ){
179
+ alvik.setKPidRight (kp,ki,kd);
180
+ }
181
+ break ;
182
+
183
+ case ' R' :
184
+ packeter.unpacketC1F (code, value);
185
+ alvik.disablePositionControl ();
186
+ alvik.rotate (value);
187
+ ack_required=MOVEMENT_ROTATE;
188
+ ack_check=true ;
189
+ break ;
190
+
191
+ case ' G' :
192
+ packeter.unpacketC1F (code, value);
193
+ alvik.disablePositionControl ();
194
+ alvik.move (value);
195
+ ack_required=MOVEMENT_MOVE;
196
+ ack_check=true ;
197
+ break ;
198
+
199
+ case ' Z' :
200
+ packeter.unpacketC3F (code, x, y, theta);
201
+ alvik.resetPose (x, y, theta);
202
+ break ;
203
+ }
204
+ }
205
+ switch (code){
203
206
case ' X' :
204
207
packeter.unpacketC1B (code, ack_code);
205
208
if (ack_code == ' K' ) {
@@ -213,6 +216,9 @@ void loop(){
213
216
case 1 :
214
217
alvik.setBehaviour (LIFT_ILLUMINATOR, true );
215
218
break ;
219
+ case 2 :
220
+ alvik.setBehaviour (BATTERY_ALERT, true );
221
+ break ;
216
222
default :
217
223
alvik.setBehaviour (ALL_BEHAVIOURS, false );
218
224
}
@@ -326,7 +332,7 @@ void loop(){
326
332
if (millis ()-tbattery>1000 ){
327
333
tbattery = millis ();
328
334
alvik.updateBMS ();
329
- msg_size = packeter.packetC1F (' p' , alvik.getBatteryChargePercentage ());
335
+ msg_size = packeter.packetC1F (' p' , alvik.isBatteryCharging ()*alvik. getBatteryChargePercentage ());
330
336
alvik.serial ->write (packeter.msg ,msg_size);
331
337
}
332
338
}
0 commit comments