Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LSM9DS1 RangeFinder FastPWM
Dependents: PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board ... more
Diff: SensorBar.cpp
- 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);
}
}
