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 mbedConnectorInterface mbedEndpointNetwork
Revision 10:338191178cbf, committed 2015-05-18
- Comitter:
- coyotebush
- Date:
- Mon May 18 00:44:59 2015 +0000
- Parent:
- 9:16b63cd4aba8
- Commit message:
- max distance
Changed in this revision
--- a/hcsr04.cpp Thu May 07 04:14:57 2015 +0000
+++ b/hcsr04.cpp Mon May 18 00:44:59 2015 +0000
@@ -22,7 +22,7 @@
HCSR04::HCSR04(PinName TrigPin,PinName EchoPin):
- trigger(TrigPin), echo(EchoPin)
+ trigger(TrigPin), echo(EchoPin), maxpulse(-1)
{
pulsetime.stop();
pulsetime.reset();
@@ -42,7 +42,7 @@
}
void HCSR04::start(void)
{
- pulsedur = 0;
+ pulsedur = -1;
trigger=1;
wait_us(10);
@@ -53,6 +53,8 @@
{
pulsetime.stop();
pulsedur = pulsetime.read_us();
+ if (pulsedur > maxpulse && pulsedur < kBogusPulse)
+ maxpulse = pulsedur;
}
void HCSR04::rise (void (*fptr)(void))
@@ -66,11 +68,13 @@
double HCSR04::get_dist_cm()
{
- if (pulsedur == 0)
- return -1;
return pulsedur * kMicrosecondsToCentimeters;
}
-unsigned int HCSR04::get_pulse_us()
+double HCSR04::get_max_dist_cm()
+{
+ return maxpulse * kMicrosecondsToCentimeters;
+}
+int HCSR04::get_pulse_us()
{
return pulsedur;
}
--- a/hcsr04.h Thu May 07 04:14:57 2015 +0000
+++ b/hcsr04.h Mon May 18 00:44:59 2015 +0000
@@ -35,6 +35,7 @@
{
public:
static const double kMicrosecondsToCentimeters = 343.0 / 20000;
+ static const double kBogusPulse = 500 / kMicrosecondsToCentimeters;
/** Create a HCSR04 object connected to the specified pin
* @param pin i/o pin to connect to
@@ -46,10 +47,11 @@
* @param distance in cms and returns -1, in case of failure
*/
double get_dist_cm(void);
+ double get_max_dist_cm(void);
/** Return the pulse duration equal to sonic waves travelling to obstacle and back to receiver.
* @param pulse duration in microseconds.
*/
- unsigned int get_pulse_us(void);
+ int get_pulse_us(void);
/** Generates the trigger pulse of 10us on the trigger PIN.
*/
void start(void );
@@ -65,7 +67,8 @@
Timer pulsetime;
DigitalOut trigger;
InterruptIn echo;
- unsigned int pulsedur;
+ int pulsedur;
+ int maxpulse;
};
#endif
\ No newline at end of file
--- a/main.cpp Thu May 07 04:14:57 2015 +0000
+++ b/main.cpp Mon May 18 00:44:59 2015 +0000
@@ -7,9 +7,10 @@
#include "GroveTemp.h"
#include "StaticResource.h"
-#include "OnBoardLED.h"
+//#include "OnBoardLED.h"
#include "TemperatureResource.h"
#include "DistanceResource.h"
+#include "MaxDistanceResource.h"
/* Terminal connection */
RawSerial term(USBTX, USBRX);
@@ -28,9 +29,14 @@
StaticResource latitude(&logger, "6/0/0", "35.296");
StaticResource longitude(&logger, "6/0/1", "-120.677");
-DistanceResource distR(&logger, "3302/0/5600", &distS, true);
+DistanceResource distR(&logger, "3302/0/5700", &distS, true);
+MaxDistanceResource maxDistR(&logger, "3302/0/5602", &distS, true);
+StaticResource unitsDistR(&logger, "3302/0/5701", "cm");
+
TemperatureResource tempR(&logger, "3303/0/5700", &tempS, true);
-LEDResource led(&logger, "3311/1/5706");
+StaticResource unitsTempR(&logger, "3302/0/5701", "Cel");
+
+//LEDResource led(&logger, "3311/1/5706");
/* invoked through linker magic via Endpoint::start() */
Connector::Options *configure_endpoint(Connector::OptionsBuilder &config)
@@ -44,8 +50,11 @@
.addResource(&latitude)
.addResource(&longitude)
.addResource(&distR)
+ .addResource(&maxDistR)
+ .addResource(&unitsDistR)
.addResource(&tempR)
- .addResource(&led)
+ .addResource(&unitsTempR)
+ //.addResource(&led)
.build();
}
--- a/nsp_configuration.h Thu May 07 04:14:57 2015 +0000 +++ b/nsp_configuration.h Mon May 18 00:44:59 2015 +0000 @@ -25,7 +25,7 @@ // NSP node name #define NODE_NAME_LENGTH 24 - #define NODE_NAME "trashcan" + #define NODE_NAME "Throop" // NSP Address (4 bytes for IPV4, 16 bytes for IPV6) #define NSP_IP_ADDRESS_LENGTH 4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resource/MaxDistanceResource.h Mon May 18 00:44:59 2015 +0000
@@ -0,0 +1,23 @@
+#ifndef MAX_DISTANCE_RESOURCE_H
+#define MAX_DISTANCE_RESOURCE_H
+
+#include "DynamicResource.h"
+#include "hcsr04.h"
+
+class MaxDistanceResource : public DynamicResource {
+public:
+ MaxDistanceResource(const Logger *logger, const char *name, HCSR04 *sensor, const bool observable = false)
+ : DynamicResource(logger, name, "MaxDistanceResource", SN_GRS_GET_ALLOWED, observable), sensor(sensor)
+ {}
+
+ virtual string get()
+ {
+ char buf[10];
+ snprintf(buf, 10, "%0.2f", sensor->get_max_dist_cm());
+ return string(buf);
+ }
+private:
+ HCSR04 *sensor;
+};
+
+#endif
\ No newline at end of file
