Skip to content

Commit 28fb1d2

Browse files
authored
Merge pull request #25 from arduino-libraries/devel
1.1.0 - major update
2 parents 1dc4029 + 430f130 commit 28fb1d2

File tree

7 files changed

+321
-131
lines changed

7 files changed

+321
-131
lines changed

examples/firmware/firmware.ino

Lines changed: 121 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -96,104 +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-
break;
126-
case 'Z':
127-
alvik.resetPositionLeft(value);
128-
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+
}
129133
}
130-
}
131-
if (label=='R'){
132-
switch (control_type){
133-
case 'V':
134-
alvik.disablePositionControlRight();
135-
alvik.setRpmRight(value);
136-
break;
137-
case 'P':
138-
alvik.setPositionRight(value);
139-
break;
140-
case 'Z':
141-
alvik.resetPositionRight(value);
142-
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+
}
143149
}
144-
}
145-
break;
146-
147-
148-
case 'A':
149-
packeter.unpacketC2F(code,position_left, position_right);
150-
alvik.disableKinematicsMovement();
151-
alvik.setPosition(position_left, position_right);
152-
break;
153-
154-
155-
case 'S':
156-
packeter.unpacketC2B(code,servo_A,servo_B);
157-
alvik.setServoA(servo_A);
158-
alvik.setServoB(servo_B);
159-
break;
160-
161-
case 'L':
162-
packeter.unpacketC1B(code,leds);
163-
alvik.setAllLeds(leds);
164-
break;
165-
166-
case 'P':
167-
packeter.unpacketC1B3F(code,pid,kp,ki,kd);
168-
if (pid=='L'){
169-
alvik.setKPidLeft(kp,ki,kd);
170-
}
171-
if (pid=='R'){
172-
alvik.setKPidRight(kp,ki,kd);
173-
}
174-
break;
175-
176-
case 'R':
177-
packeter.unpacketC1F(code, value);
178-
alvik.disablePositionControl();
179-
alvik.rotate(value);
180-
ack_required=MOVEMENT_ROTATE;
181-
ack_check=true;
182-
break;
183-
184-
case 'G':
185-
packeter.unpacketC1F(code, value);
186-
alvik.disablePositionControl();
187-
alvik.move(value);
188-
ack_required=MOVEMENT_MOVE;
189-
ack_check=true;
190-
break;
191-
192-
case 'Z':
193-
packeter.unpacketC3F(code, x, y, theta);
194-
alvik.resetPose(x, y, theta);
195-
break;
196-
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){
197206
case 'X':
198207
packeter.unpacketC1B(code, ack_code);
199208
if (ack_code == 'K') {
@@ -207,6 +216,9 @@ void loop(){
207216
case 1:
208217
alvik.setBehaviour(LIFT_ILLUMINATOR, true);
209218
break;
219+
case 2:
220+
alvik.setBehaviour(BATTERY_ALERT, true);
221+
break;
210222
default:
211223
alvik.setBehaviour(ALL_BEHAVIOURS, false);
212224
}
@@ -227,6 +239,8 @@ void loop(){
227239
alvik.updateTouch();
228240
msg_size = packeter.packetC1B('t', alvik.getTouchKeys());
229241
alvik.serial->write(packeter.msg,msg_size);
242+
msg_size = packeter.packetC1B('m', alvik.getMotion());
243+
alvik.serial->write(packeter.msg,msg_size);
230244
break;
231245
case 2:
232246
alvik.updateAPDS();
@@ -278,13 +292,22 @@ void loop(){
278292
msg_size = packeter.packetC3B(0x7E, version[0], version[1], version[2]);
279293
alvik.serial->write(packeter.msg,msg_size);
280294
}
281-
if (ack_check && alvik.isTargetReached()){
295+
if (ack_check && (alvik.isTargetReached() || alvik.isPositionReached() || alvik.isPositionLeftReached() || alvik.isPositionRightReached())){
282296
if (ack_required == MOVEMENT_ROTATE){
283297
msg_size = packeter.packetC1B('x', 'R');
284298
}
285299
if (ack_required == MOVEMENT_MOVE){
286300
msg_size = packeter.packetC1B('x', 'M');
287301
}
302+
if (ack_required == MOVEMENT_POSITION){
303+
msg_size = packeter.packetC1B('x', 'P');
304+
}
305+
if (ack_required == MOVEMENT_LEFT){
306+
msg_size = packeter.packetC1B('x', 'P');
307+
}
308+
if (ack_required == MOVEMENT_RIGHT){
309+
msg_size = packeter.packetC1B('x', 'P');
310+
}
288311
}
289312
else{
290313
msg_size = packeter.packetC1B('x', 0);
@@ -309,7 +332,7 @@ void loop(){
309332
if (millis()-tbattery>1000){
310333
tbattery = millis();
311334
alvik.updateBMS();
312-
msg_size = packeter.packetC1F('p', alvik.getBatteryChargePercentage());
335+
msg_size = packeter.packetC1F('p', alvik.isBatteryCharging()*alvik.getBatteryChargePercentage());
313336
alvik.serial->write(packeter.msg,msg_size);
314337
}
315338
}

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Arduino_AlvikCarrier
2-
version=1.0.1
2+
version=1.1.0
33
author=Arduino, Giovanni di Dio Bruno, Lucio Rossi
44
maintainer=Arduino <[email protected]>
55
sentence=Library and firmware for Arduino Alvik Carrier board

0 commit comments

Comments
 (0)