Skip to content

Commit 457f2b1

Browse files
authored
Merge pull request #10 from arduino-libraries/devel
0.3.4
2 parents 2b62bdc + afc8518 commit 457f2b1

File tree

7 files changed

+100
-21
lines changed

7 files changed

+100
-21
lines changed

examples/blink/blink.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void setup(){
2424

2525
void loop(){
2626
alvik.setLedBuiltin(HIGH);
27-
delay(100);
27+
delay(1000);
2828
alvik.setLedBuiltin(LOW);
2929
delay(1000);
3030
}

examples/firmware/firmware.ino

+13
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ unsigned long tsensor = 0;
3939
unsigned long timu = 0;
4040
unsigned long tack = 0;
4141
unsigned long tbehaviours = 0;
42+
unsigned long tbattery = 0;
4243

4344

4445
float left, right, value;
@@ -73,6 +74,10 @@ void setup(){
7374
msg_size = packeter.packetC3B(0x7E, version[0], version[1], version[2]);
7475
alvik.serial->write(packeter.msg,msg_size);
7576

77+
alvik.updateBMS();
78+
msg_size = packeter.packetC1F('p', alvik.getBatteryChargePercentage());
79+
alvik.serial->write(packeter.msg,msg_size);
80+
7681
alvik.setLedBuiltin(LOW);
7782
alvik.setLeds(COLOR_BLACK);
7883

@@ -300,4 +305,12 @@ void loop(){
300305
msg_size = packeter.packetC6F('i', alvik.getAccelerationX(), alvik.getAccelerationY(), alvik.getAccelerationZ(), alvik.getAngularVelocityX(), alvik.getAngularVelocityY(), alvik.getAngularVelocityZ());
301306
alvik.serial->write(packeter.msg,msg_size);
302307
}
308+
309+
// battery update
310+
if (millis()-tbattery>1000){
311+
tbattery = millis();
312+
alvik.updateBMS();
313+
msg_size = packeter.packetC1F('p', alvik.getBatteryChargePercentage());
314+
alvik.serial->write(packeter.msg,msg_size);
315+
}
303316
}

library.properties

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

src/Arduino_AlvikCarrier.cpp

+67-10
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ Arduino_AlvikCarrier::Arduino_AlvikCarrier(){
8585

8686
int Arduino_AlvikCarrier::begin(){
8787
beginLeds();
88+
pinMode(NANO_CHK,INPUT_PULLDOWN);
8889

8990
serial->begin(UART_BAUD);
9091
serial->flush();
@@ -254,6 +255,7 @@ void Arduino_AlvikCarrier::disconnectExternalI2C(){
254255
/******************************************************************************************************/
255256

256257
int Arduino_AlvikCarrier::beginBMS(){
258+
while(digitalRead(NANO_CHK)==HIGH){}
257259
bms->begin();
258260
return 0;
259261
}
@@ -432,17 +434,55 @@ bool Arduino_AlvikCarrier::getTouchKey(const uint8_t key){
432434
return false;
433435
}
434436

435-
uint8_t Arduino_AlvikCarrier::getTouchKeys(){
437+
uint8_t Arduino_AlvikCarrier::getTouchKeys(const bool single_touch){
436438
touch_value=0;
437439
if (getAnyTouchPressed()){
438440
touch_value|=1;
439-
touch_value|=getTouchOk()<<1;
440-
touch_value|=getTouchDelete()<<2;
441-
touch_value|=getTouchCenter()<<3;
442-
touch_value|=getTouchUp()<<4;
443-
touch_value|=getTouchLeft()<<5;
444-
touch_value|=getTouchDown()<<6;
445-
touch_value|=getTouchRight()<<7;
441+
if (!single_touch){
442+
touch_value|=getTouchOk()<<1;
443+
touch_value|=getTouchDelete()<<2;
444+
touch_value|=getTouchCenter()<<3;
445+
touch_value|=getTouchUp()<<4;
446+
touch_value|=getTouchLeft()<<5;
447+
touch_value|=getTouchDown()<<6;
448+
touch_value|=getTouchRight()<<7;
449+
}
450+
else{
451+
if (getTouchOk()){
452+
touch_value|=1<<1;
453+
}else{
454+
if (getTouchDelete()){
455+
touch_value|=1<<2;
456+
}
457+
else{
458+
if (getTouchCenter()){
459+
touch_value|=1<<3;
460+
}
461+
else{
462+
if (getTouchLeft()){
463+
touch_value|=1<<5;
464+
}
465+
else{
466+
if (getTouchDown()){
467+
touch_value|=1<<6;
468+
}
469+
else{
470+
if (getTouchRight()){
471+
touch_value|=1<<7;
472+
}
473+
else{
474+
if (getTouchUp()){
475+
touch_value|=1<<4;
476+
}
477+
}
478+
}
479+
480+
}
481+
}
482+
}
483+
}
484+
}
485+
446486
}
447487
return touch_value;
448488
}
@@ -693,7 +733,7 @@ void Arduino_AlvikCarrier::updateKinematics(){
693733
if (kinematics_movement==MOVEMENT_ROTATE){
694734
rotate_pid->update(kinematics->getTheta());
695735
drive(0, round(rotate_pid->getControlOutput()/10.0)*10);
696-
if (abs(rotate_pid->getError())<ROTATE_THREASHOLD){
736+
if (abs(rotate_pid->getError())<ROTATE_THRESHOLD){
697737
kinematics_achieved=true;
698738
disableKinematicsMovement();
699739
drive(0,0);
@@ -702,7 +742,7 @@ void Arduino_AlvikCarrier::updateKinematics(){
702742
if (kinematics_movement==MOVEMENT_MOVE){
703743
move_pid->update((kinematics->getTravel()-previous_travel)*move_direction);
704744
drive(round(move_pid->getControlOutput()/10.0)*10, 0);
705-
if (abs(move_pid->getError())<MOVE_THREADSHOLD){
745+
if (abs(move_pid->getError())<MOVE_THRESHOLD){
706746
kinematics_achieved=true;
707747
disableKinematicsMovement();
708748
drive(0,0);
@@ -892,4 +932,21 @@ bool Arduino_AlvikCarrier::isLifted(){
892932
else{
893933
return false;
894934
}
935+
}
936+
937+
938+
939+
/******************************************************************************************************/
940+
/* Utilities */
941+
/******************************************************************************************************/
942+
943+
void Arduino_AlvikCarrier::getSerialNumber(char * sn){
944+
uint32_t id[3];
945+
id[0] = HAL_GetUIDw0();
946+
id[1] = HAL_GetUIDw1();
947+
id[2] = HAL_GetUIDw2();
948+
uint32_t top = id[0]+id[2];
949+
uint16_t bottom = (id[1]&0xFFFF0000)>>16;
950+
sprintf(sn,"%08lx", top);
951+
sprintf(sn+8,"%x",bottom);
895952
}

src/Arduino_AlvikCarrier.h

+12-5
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ class Arduino_AlvikCarrier{
179179
void updateTouch(); // update touch status
180180
bool getAnyTouchPressed(); // get any touch pressed
181181
bool getTouchKey(const uint8_t key); // return true if key touch is pressed
182-
uint8_t getTouchKeys(); // return touched pads as byte
182+
uint8_t getTouchKeys(const bool single_touch = true); // return touched pads as byte
183183
bool getTouchUp(); // get nav pad up
184184
bool getTouchRight(); // get nav pad right
185185
bool getTouchDown(); // get nav pad down
@@ -245,10 +245,17 @@ class Arduino_AlvikCarrier{
245245
bool isTargetReached(); // get true if a movement is accomplished
246246
uint8_t getKinematicsMovement(); // get which kind of motion is running in kinematic control
247247

248-
void beginBehaviours();
249-
void updateBehaviours();
250-
void setBehaviour(const uint8_t behaviour, const bool enable);
251-
bool isLifted();
248+
249+
// Behaviours
250+
void beginBehaviours(); // internal behaviours of the robot
251+
void updateBehaviours(); // updated internal behaviours
252+
void setBehaviour(const uint8_t behaviour, const bool enable); // set a behaviour
253+
bool isLifted(); // is robot lifted?
254+
255+
256+
// Utilities
257+
void getSerialNumber(char * sn); // get STM32 serial number
258+
252259
};
253260

254261
#endif

src/definitions/pinout_definitions.h

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@
6969
#define I2C_2_SCL PB10
7070
#define ARDUINO_ROBOT_ADDRESS 0x2B
7171

72+
// Check
73+
#define NANO_CHK PC0
7274

7375
// Touch
7476
#define TOUCH_PAD_UP 7

src/definitions/robot_definitions.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ const float MOTOR_RATIO = MOTOR_CPR*MOTOR_GEAR_RATIO;
4646
#define ROTATE_KD_DEFAULT 0.001
4747
#define ROTATE_CONTROL_PERIOD 0.02
4848
#define ROTATE_MAX_SPEED 45.0
49-
#define ROTATE_THREASHOLD 1
49+
#define ROTATE_THRESHOLD 1
5050

5151
#define MOVE_KP_DEFAULT 5.0
5252
#define MOVE_KI_DEFAULT 0.0
5353
#define MOVE_KD_DEFAULT 0.001
5454
#define MOVE_CONTROL_PERIOD 0.02
5555
#define MOVE_MAX_SPEED 45.0
56-
#define MOVE_THREADSHOLD 3
56+
#define MOVE_THRESHOLD 3
5757

5858
#define MOVEMENT_DISABLED 0
5959
#define MOVEMENT_ROTATE 1
@@ -87,8 +87,8 @@ const float MOTION_FX_PERIOD = (1000U / MOTION_FX_FREQ);
8787

8888
// Library version
8989
#define VERSION_BYTE_HIGH 0
90-
#define VERSION_BYTE_MID 2
91-
#define VERSION_BYTE_LOW 1
90+
#define VERSION_BYTE_MID 3
91+
#define VERSION_BYTE_LOW 4
9292

9393

9494

0 commit comments

Comments
 (0)