Example project for the Line Follower robot.

Dependencies:   PM2_Libary Eigen

Revision:
34:702246639f02
Parent:
33:cff70742569d
Child:
38:6d11788e14c0
--- a/main.cpp	Thu May 05 07:41:46 2022 +0000
+++ b/main.cpp	Thu May 05 11:08:20 2022 +0200
@@ -3,7 +3,7 @@
 
 #include "PM2_Libary.h"
 
-# define M_PI 3.14159265358979323846  /* pi */
+# define M_PI 3.14159265358979323846  // number pi
 
 // logical variable main task
 bool do_execute_main_task = false;  // this variable will be toggled via the user button (blue button) to or not to execute the main task
@@ -15,7 +15,7 @@
 void user_button_released_fcn();
 
 // while loop gets executed every main_task_period_ms milliseconds
-int main_task_period_ms = 200;   // define main task period time in ms e.g. 50 ms -> main task runns 20 times per second
+int main_task_period_ms = 10;   // define main task period time in ms e.g. 50 ms -> main task runns 20 times per second
 Timer main_task_timer;          // create Timer object which we use to run the main task every main task period time in ms
 
 // led on nucleo board
@@ -23,9 +23,6 @@
 
 I2C i2c(PB_9, PB_8); // I2C (PinName sda, PinName scl)
 SensorBar sensor_bar(i2c, 0.1175f);
-// PinName sda = PB_9;
-// PinName scl = PB_8;
-// SensorBar sensor_bar = SensorBar(0.1175f);
 
 int main()
 {
@@ -45,31 +42,34 @@
 
         main_task_timer.reset();
 
-        /*
         if (do_execute_main_task) {
+
+            /*
+            uint8_t sensor_bar_raw_value = sensor_bar.getRaw();
+            for( int i = 7; i >= 0; i-- ) {
+                printf("%d", (sensor_bar_raw_value >> i) & 0x01);
+            }
+            printf(", ");
+            */
+
+            int8_t sensor_bar_binaryPosition = sensor_bar.getBinaryPosition();       
+            printf("%d, ", sensor_bar_binaryPosition);
+
+            uint8_t sensor_bar_nrOfLedsActive = sensor_bar.getNrOfLedsActive();
+            printf("%d, ", sensor_bar_nrOfLedsActive);
+            
+            float sensor_bar_angleRad = 0.0f;
+            float sensor_bar_avgAngleRad = 0.0f;
+            if (sensor_bar.isAnyLedActive()) {
+                sensor_bar_angleRad = sensor_bar.getAngleRad();
+                sensor_bar_avgAngleRad = sensor_bar.getAvgAngleRad();
+            }
+            printf("%f, ", sensor_bar_angleRad * 180.0f / M_PI);
+            printf("%f\r\n", sensor_bar_avgAngleRad * 180.0f / M_PI);
+
         } else {
 
         }
-        */
-
-        // sensor_bar.update();
-
-        printf("---\r\n");
-
-        uint8_t sensor_bar_raw_value = sensor_bar.getRaw();
-        for( int i = 7; i >= 0; i-- ) {
-            printf("%d", (sensor_bar_raw_value >> i) & 0x01);
-        }
-        printf("\r\n");
-
-        int8_t sensor_bar_binaryPosition = sensor_bar.getBinaryPosition();       
-        printf("%d\r\n", sensor_bar_binaryPosition);
-
-        uint8_t sensor_bar_nrOfLedsActive = sensor_bar.getNrofLedsActive();
-        printf("%d\r\n", sensor_bar_nrOfLedsActive);
-        
-        float sensor_bar_angleRad = sensor_bar.getAngleRad();
-        printf("%f\r\n", sensor_bar_angleRad * 180.0f / M_PI);
 
         user_led = !user_led;