Use this repository for pilot an ultrasonic sensor

Fork of UltrasonicSensor by Daniele Briguglio

Revision:
0:8ca9f71b386d
diff -r 000000000000 -r 8ca9f71b386d UltrasonicSensor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UltrasonicSensor.cpp	Mon Jan 15 20:35:11 2018 +0000
@@ -0,0 +1,62 @@
+/*
+  UltrasonicSensor.cpp - drive a distance sensor- Version 1.0.0
+  Copyright (c) 2018 Daniele Briguglio.  All right reserved.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+*/
+
+/*
+  The methods are:
+
+   UltrasonicSensor - Class for manipulating Ultrasonic Sensor
+
+   attach(echo, trigger)  - Attaches a Ultrasonic Sensor to an i/o pin,
+   default pins are D9 for echo and D8 for trigger.
+ 
+   read()  - Read distance measured by the sensor. 
+ */
+
+#include <mbed.h>
+#include <UltrasonicSensor.h>
+
+UltrasonicSensor::UltrasonicSensor(PinName echo, PinName trigger) : _echo(echo), _trigger(trigger) {  // _pin(pin) means pass pin to the DigitalOut constructor
+    _echo = D9;                                    // default the output to LED2
+    _trigger = D8;
+    corr = 0;
+}
+
+void UltrasonicSensor::begin(float correction = 0){
+    corr = correction;
+    UltrasonicSensor::begin2();
+}
+
+void UltrasonicSensor::begin(void){
+    corr = 0;
+    UltrasonicSensor::begin2();
+}
+
+void UltrasonicSensor::begin2(void){
+    distance = 0;
+    sonar.reset();
+    sonar.start();
+    while (_echo == 2){};
+    sonar.stop();
+    corr = sonar.read_us();
+}
+
+float UltrasonicSensor::read(void){
+    _trigger = 1;
+    sonar.reset();
+    wait_us(10.0);
+    _trigger = 0;
+    while(_echo == 0){};
+    sonar.start();
+    while(_echo ==1 ){};
+    sonar.stop();
+    return (sonar.read_us()-corr)/58.0;
+    //distance = (sonar.read_us()-corr)/58.0;
+    //return distance;
+}
\ No newline at end of file