Skip to content
Snippets Groups Projects
Commit b2bce55c authored by Hoop77's avatar Hoop77
Browse files

ultrasonic returns MAX_DISTANCE instance of 0

parent f8098262
No related merge requests found
...@@ -39,7 +39,7 @@ int main(int argc, char ** argv) ...@@ -39,7 +39,7 @@ int main(int argc, char ** argv)
while (running) while (running)
{ {
int distance = uss.getDistance(); int distance = uss.getDistance();;
if (distance > 20) if (distance > 20)
conn->setSpeed(0); conn->setSpeed(0);
......
...@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE; ...@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE;
constexpr int USS_SRF02::RESULT_LOW_BYTE; constexpr int USS_SRF02::RESULT_LOW_BYTE;
constexpr int USS_SRF02::RANGING_MODE_CM; constexpr int USS_SRF02::RANGING_MODE_CM;
constexpr int USS_SRF02::DELAY; constexpr int USS_SRF02::DELAY;
constexpr int USS_SRF02::MAX_DISTANCE;
USS_SRF02::USS_SRF02(int devId) USS_SRF02::USS_SRF02(int devId)
{ {
...@@ -28,5 +29,8 @@ int USS_SRF02::getDistance() ...@@ -28,5 +29,8 @@ int USS_SRF02::getDistance()
{ {
wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM); wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM);
usleep(DELAY * 1000); usleep(DELAY * 1000);
return wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE); int distance = wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
if (distance == 0) // 0 means distance too far
distance = 255;
return distance;
} }
...@@ -23,6 +23,8 @@ public: ...@@ -23,6 +23,8 @@ public:
static constexpr int DELAY = 70; //70 ms for ranging to finish static constexpr int DELAY = 70; //70 ms for ranging to finish
static constexpr int MAX_DISTANCE = 255;
explicit USS_SRF02(int devId); explicit USS_SRF02(int devId);
int getDistance(); int getDistance();
......
...@@ -23,6 +23,8 @@ public: ...@@ -23,6 +23,8 @@ public:
static constexpr int DELAY = 70; //70 ms for ranging to finish static constexpr int DELAY = 70; //70 ms for ranging to finish
static constexpr int MAX_DISTANCE = 255;
explicit USS_SRF02(int devId); explicit USS_SRF02(int devId);
int getDistance(); int getDistance();
......
#include "ultrasonic/USS_SRF02.h" #include "USS_SRF02.h"
#include "wiringPiI2C.h" #include "wiringPiI2C.h"
#include <iostream> #include <iostream>
...@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE; ...@@ -16,6 +16,7 @@ constexpr int USS_SRF02::RESULT_HIGH_BYTE;
constexpr int USS_SRF02::RESULT_LOW_BYTE; constexpr int USS_SRF02::RESULT_LOW_BYTE;
constexpr int USS_SRF02::RANGING_MODE_CM; constexpr int USS_SRF02::RANGING_MODE_CM;
constexpr int USS_SRF02::DELAY; constexpr int USS_SRF02::DELAY;
constexpr int USS_SRF02::MAX_DISTANCE;
USS_SRF02::USS_SRF02(int devId) USS_SRF02::USS_SRF02(int devId)
{ {
...@@ -28,5 +29,8 @@ int USS_SRF02::getDistance() ...@@ -28,5 +29,8 @@ int USS_SRF02::getDistance()
{ {
wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM); wiringPiI2CWriteReg8(fd, COMMAND_REGISTER, RANGING_MODE_CM);
usleep(DELAY * 1000); usleep(DELAY * 1000);
return wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE); int distance = wiringPiI2CReadReg16(fd, RESULT_LOW_BYTE);
if (distance == 0) // 0 means distance too far
distance = 255;
return distance;
} }
...@@ -16,8 +16,6 @@ Ultrasonic::Ultrasonic() ...@@ -16,8 +16,6 @@ Ultrasonic::Ultrasonic()
, messageOStream(nh, "Ultrasonic") , messageOStream(nh, "Ultrasonic")
{} {}
static std::size_t counter = 0;
void Ultrasonic::onInit() void Ultrasonic::onInit()
{ {
messageOStream.write("onInit", "START"); messageOStream.write("onInit", "START");
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment