@@ -96,110 +96,113 @@ void loop(){
9696 }
9797 if (packeter.checkPayload ()) {
9898 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+ }
131133 }
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+ }
147149 }
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){
203206 case ' X' :
204207 packeter.unpacketC1B (code, ack_code);
205208 if (ack_code == ' K' ) {
@@ -213,6 +216,9 @@ void loop(){
213216 case 1 :
214217 alvik.setBehaviour (LIFT_ILLUMINATOR, true );
215218 break ;
219+ case 2 :
220+ alvik.setBehaviour (BATTERY_ALERT, true );
221+ break ;
216222 default :
217223 alvik.setBehaviour (ALL_BEHAVIOURS, false );
218224 }
@@ -326,7 +332,7 @@ void loop(){
326332 if (millis ()-tbattery>1000 ){
327333 tbattery = millis ();
328334 alvik.updateBMS ();
329- msg_size = packeter.packetC1F (' p' , alvik.getBatteryChargePercentage ());
335+ msg_size = packeter.packetC1F (' p' , alvik.isBatteryCharging ()*alvik. getBatteryChargePercentage ());
330336 alvik.serial ->write (packeter.msg ,msg_size);
331337 }
332338}
0 commit comments