Michael Ernst Peter / PM2_Libary

Dependencies:   LSM9DS1 RangeFinder FastPWM

Dependents:   PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board ... more

Revision:
32:bb074bb17d39
Parent:
28:6b30640c9e2e
diff -r f62a64ffb273 -r bb074bb17d39 SensorBar.cpp
--- a/SensorBar.cpp	Fri May 20 07:19:46 2022 +0000
+++ b/SensorBar.cpp	Wed Jun 22 14:05:13 2022 +0000
@@ -3,29 +3,34 @@
 const float SensorBar::TS = 0.004f;                       // period of 1 ms
 
 const char REG_I_ON[16] = {REG_I_ON_0, REG_I_ON_1, REG_I_ON_2, REG_I_ON_3,
-                    REG_I_ON_4, REG_I_ON_5, REG_I_ON_6, REG_I_ON_7,
-                    REG_I_ON_8, REG_I_ON_9, REG_I_ON_10, REG_I_ON_11,
-                    REG_I_ON_12, REG_I_ON_13, REG_I_ON_14, REG_I_ON_15};
-                    
+                           REG_I_ON_4, REG_I_ON_5, REG_I_ON_6, REG_I_ON_7,
+                           REG_I_ON_8, REG_I_ON_9, REG_I_ON_10, REG_I_ON_11,
+                           REG_I_ON_12, REG_I_ON_13, REG_I_ON_14, REG_I_ON_15
+                          };
+
 const char REG_T_ON[16] = {REG_T_ON_0, REG_T_ON_1, REG_T_ON_2, REG_T_ON_3,
-                    REG_T_ON_4, REG_T_ON_5, REG_T_ON_6, REG_T_ON_7,
-                    REG_T_ON_8, REG_T_ON_9, REG_T_ON_10, REG_T_ON_11,
-                    REG_T_ON_12, REG_T_ON_13, REG_T_ON_14, REG_T_ON_15};
-                    
+                           REG_T_ON_4, REG_T_ON_5, REG_T_ON_6, REG_T_ON_7,
+                           REG_T_ON_8, REG_T_ON_9, REG_T_ON_10, REG_T_ON_11,
+                           REG_T_ON_12, REG_T_ON_13, REG_T_ON_14, REG_T_ON_15
+                          };
+
 const char REG_OFF[16] = {REG_OFF_0, REG_OFF_1, REG_OFF_2, REG_OFF_3,
-                    REG_OFF_4, REG_OFF_5, REG_OFF_6, REG_OFF_7,
-                    REG_OFF_8, REG_OFF_9, REG_OFF_10, REG_OFF_11,
-                    REG_OFF_12, REG_OFF_13, REG_OFF_14, REG_OFF_15};
+                          REG_OFF_4, REG_OFF_5, REG_OFF_6, REG_OFF_7,
+                          REG_OFF_8, REG_OFF_9, REG_OFF_10, REG_OFF_11,
+                          REG_OFF_12, REG_OFF_13, REG_OFF_14, REG_OFF_15
+                         };
 
 const char REG_T_RISE[16] = {0xFF, 0xFF, 0xFF, 0xFF,
-                    REG_T_RISE_4, REG_T_RISE_5, REG_T_RISE_6, REG_T_RISE_7,
-                    0xFF, 0xFF, 0xFF, 0xFF,
-                    REG_T_RISE_12, REG_T_RISE_13, REG_T_RISE_14, REG_T_RISE_15};
-                    
+                             REG_T_RISE_4, REG_T_RISE_5, REG_T_RISE_6, REG_T_RISE_7,
+                             0xFF, 0xFF, 0xFF, 0xFF,
+                             REG_T_RISE_12, REG_T_RISE_13, REG_T_RISE_14, REG_T_RISE_15
+                            };
+
 const char REG_T_FALL[16] = {0xFF, 0xFF, 0xFF, 0xFF,
-                    REG_T_FALL_4, REG_T_FALL_5, REG_T_FALL_6, REG_T_FALL_7,
-                    0xFF, 0xFF, 0xFF, 0xFF,
-                    REG_T_FALL_12, REG_T_FALL_13, REG_T_FALL_14, REG_T_FALL_15};
+                             REG_T_FALL_4, REG_T_FALL_5, REG_T_FALL_6, REG_T_FALL_7,
+                             0xFF, 0xFF, 0xFF, 0xFF,
+                             REG_T_FALL_12, REG_T_FALL_13, REG_T_FALL_14, REG_T_FALL_15
+                            };
 
 SensorBar::SensorBar(I2C& i2c, float distAxisToSensor) : i2c(i2c), thread(osPriorityAboveNormal, 4096)
 {
@@ -47,11 +52,12 @@
 
     clearBarStrobe();  // to illuminate all the time
     clearInvertBits(); // to make the bar look for a dark line on a reflective surface
-    begin();
 
     // set up thread
-    thread.start(callback(this, &SensorBar::update));
-    ticker.attach(callback(this, &SensorBar::sendThreadFlag), std::chrono::microseconds{static_cast<long int>(1.0e6f * TS)});
+    if (begin()) {
+        thread.start(callback(this, &SensorBar::update));
+        ticker.attach(callback(this, &SensorBar::sendThreadFlag), std::chrono::microseconds{static_cast<long int>(1.0e6f * TS)});
+    }
 }
 
 SensorBar::~SensorBar()
@@ -191,9 +197,9 @@
 
 //Run this once during initialization to configure the SX1509 as a sensor bar
 //Returns 1 for success
-uint8_t SensorBar::begin(void)
+bool SensorBar::begin(void)
 {
-    uint8_t returnVar = 0;
+    bool returnVar = false;
 
     // Reset the SX1509
     reset();
@@ -209,9 +215,7 @@
         writeByte(REG_DIR_B, 0xFC);
         writeByte(REG_DATA_B, 0x01);
 
-        returnVar = 1;
-    } else {
-        returnVar = 0;
+        returnVar = true;
     }
 
     return returnVar;
@@ -385,7 +389,7 @@
             if(is_first_avg) {
                 is_first_avg = false;
                 avg_filter.reset(angle);
-            } 
+            }
             avg_angle = avg_filter.update(angle);
         }
     }