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: mbed URF MD_MDDS30_oit_ ros_lib_melodic
Diff: URF.cpp
- Revision:
- 0:450a7208c682
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/URF.cpp Tue May 03 08:02:58 2022 +0000
@@ -0,0 +1,74 @@
+#include "URF.h"
+
+#include "mbed.h"
+
+URF::URF(PinName URF_PIN)
+ : _event(URF_PIN)
+ , _cmd(URF_PIN)
+ , _timer()
+{
+ _event.rise(callback(this, &URF::_start));
+ _event.fall(callback(this, &URF::_stop));
+ _METER_PER_SECOND = 334.0; // m/s
+
+ _Busy = false;
+
+ _cmd.output();
+ _cmd.write(0);
+
+ _timer.stop();
+ _timer.reset();
+}
+
+void URF::_start(void)
+{
+// _Valid = false; // start the timere, and invalidate the current time.
+ _Busy = true;
+ _timer.reset();
+ _timer.start();
+}
+
+void URF::_stop(void)
+{
+// _Valid = true; // When it stops, update the time
+ _Busy = false;
+ _timer.stop();
+ _Time = _timer.read_us();
+}
+
+void URF::send(void)
+{
+ if(_Busy){
+ _timer.stop();
+ _Time = _timer.read_us();
+ return ;
+ }
+ _cmd.output();
+ _cmd.write(1);
+ wait_us(10);
+ _cmd.write(0);
+ _cmd.input();
+}
+
+void URF::Set_MpS(float MpS)
+{
+ _METER_PER_SECOND = MpS;
+}
+
+int URF::read(int scale)
+// -1 means not valid.
+{
+// if(_Valid && ~_Busy)
+ return int(((_Time*(_METER_PER_SECOND / float(scale)))/2.0f) + 0.5f);
+// else
+// return -1;
+}
+
+int URF::read(void)
+// -1 means not valid.
+{
+// if(_Valid && ~_Busy)
+ return int(((_Time*(_METER_PER_SECOND / 1000.0f))/2.0f) + 0.5f);
+// else
+// return -1;
+}
\ No newline at end of file