Gebruik ping_median

This commit is contained in:
Ard Kuijpers
2020-03-01 19:44:29 +01:00
parent e2d48efec1
commit 82c7029e57

View File

@@ -11,7 +11,7 @@ const float minDistance = 0.01;
const float maxDistance = 4.0; const float maxDistance = 4.0;
const float minimumChange = 0.2; const float minimumChange = 0.2;
#define MEASURE_INTERVAL 500 // ms #define MEASURE_INTERVAL 1000 // ms
#define PUBLISH_INTERVAL 5000 // ms #define PUBLISH_INTERVAL 5000 // ms
NewPing sonar(trigPin,echoPin,maxDistance*100.0); NewPing sonar(trigPin,echoPin,maxDistance*100.0);
@@ -31,7 +31,7 @@ void setup() {
pinMode(ledPin, OUTPUT); pinMode(ledPin, OUTPUT);
Homie_setBrand("EtxeanIoT"); Homie_setBrand("EtxeanIoT");
Homie_setFirmware("etxean-distancesensor", "1.0.3"); Homie_setFirmware("etxean-distancesensor", "1.0.4");
Homie.setLoopFunction(loopHandler); Homie.setLoopFunction(loopHandler);
obstacleNode obstacleNode
.advertise("distance").setName("Distance").setDatatype("float").setUnit("m"); .advertise("distance").setName("Distance").setDatatype("float").setUnit("m");
@@ -70,7 +70,7 @@ void loopHandler() {
//float distance = random(5,400)/100.0; //float distance = random(5,400)/100.0;
Homie.getLogger() << "Distance: " << distance << " m"; Homie.getLogger() << "Distance: " << distance << " m";
bool valid = checkBounds(distance,minDistance,maxDistance); bool valid = checkBounds(distance,minDistance,maxDistance);
Serial << ", valid = " << toPayload(valid) << endl; Homie.getLogger() << ", valid = " << toPayload(valid) << endl;
if (valid) if (valid)
validDistance = distance; validDistance = distance;
lastMeasurement = millis(); lastMeasurement = millis();
@@ -89,7 +89,7 @@ void loopHandler() {
if (changed) if (changed)
{ {
signal_led(); signal_led();
Serial << ", changed" << endl; Homie.getLogger() << ", changed" << endl;
} }
lastDistance = validDistance; lastDistance = validDistance;
validDistance = -1; validDistance = -1;
@@ -114,7 +114,7 @@ float getEchoTime() {
float readDistance() { float readDistance() {
//auto ping_us = getEchoTime(); //auto ping_us = getEchoTime();
auto ping_us = sonar.ping(); auto ping_us = sonar.ping_median();
// Calculating the distance @ 10 °C from d = t_ping /2 * c => t_ping /2 * 337 [m/s] => t_ping_us / 1e-6 * 1/2 * 337 // Calculating the distance @ 10 °C from d = t_ping /2 * c => t_ping /2 * 337 [m/s] => t_ping_us / 1e-6 * 1/2 * 337
auto computedDistance = ping_us*0.0001685; auto computedDistance = ping_us*0.0001685;
return computedDistance; return computedDistance;