99
1010*/
1111
12- // WIP
12+ // This example shows how to implement kinematics commands and retrieve odometry data from Arduino_AlvikCarrier class
1313
1414#include " Arduino_AlvikCarrier.h"
1515
1616Arduino_AlvikCarrier alvik;
1717
1818unsigned long tmotor=0 ;
1919unsigned long ttask=0 ;
20+ unsigned long tled=0 ;
2021uint8_t task=0 ;
22+ bool led_value = false ;
2123
2224void setup () {
2325 Serial.begin (115200 );
2426 alvik.begin ();
2527 ttask=millis ();
2628 tmotor=millis ();
29+ tled=millis ();
2730 task=0 ;
2831}
2932
@@ -33,19 +36,19 @@ void loop() {
3336 alvik.updateMotors ();
3437 alvik.updateKinematics ();
3538 Serial.print (" \t " );
36- Serial.print (alvik.kinematics -> getLinearVelocity ());
39+ Serial.print (alvik.getLinearVelocity ());
3740 Serial.print (" \t " );
38- Serial.print (alvik.kinematics -> getAngularVelocity ());
41+ Serial.print (alvik.getAngularVelocity ());
3942 Serial.print (" \t " );
40- Serial.print (alvik.kinematics -> getX ());
43+ Serial.print (alvik.getX ());
4144 Serial.print (" \t " );
42- Serial.print (alvik.kinematics -> getY ());
45+ Serial.print (alvik.getY ());
4346 Serial.print (" \t " );
44- Serial.print (alvik.kinematics -> getTheta ());
47+ Serial.print (alvik.getTheta ());
4548 Serial.print (" \n " );
4649 }
4750
48- if (millis ()-ttask>5000 ){
51+ if (( millis ()-ttask>5000 )||alvik. isTargetReached () ){
4952 ttask=millis ();
5053 switch (task){
5154 case 0 :
@@ -56,7 +59,7 @@ void loop() {
5659 alvik.drive (0 ,0 );
5760 break ;
5861 case 2 :
59- alvik.rotate (- 90 );
62+ alvik.move ( 100 );
6063 break ;
6164 case 3 :
6265 alvik.disableKinematicsMovement ();
@@ -68,4 +71,17 @@ void loop() {
6871 task=0 ;
6972 }
7073 }
74+
75+ if (millis ()-tled>200 ){
76+ tled=millis ();
77+ led_value=!led_value;
78+ if (task==1 ){
79+ alvik.setLedLeftGreen (false );
80+ alvik.setLedLeftRed (led_value);
81+ }
82+ if (task==3 ){
83+ alvik.setLedLeftRed (false );
84+ alvik.setLedLeftGreen (led_value);
85+ }
86+ }
7187}
0 commit comments