Use this repository for pilot an ultrasonic sensor

Fork of UltrasonicSensor by Daniele Briguglio

Committer:
danky02
Date:
Mon Jan 15 20:35:11 2018 +0000
Revision:
0:8ca9f71b386d
prova

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danky02 0:8ca9f71b386d 1 /*
danky02 0:8ca9f71b386d 2 UltrasonicSensor.cpp - drive a distance sensor- Version 1.0.0
danky02 0:8ca9f71b386d 3 Copyright (c) 2018 Daniele Briguglio. All right reserved.
danky02 0:8ca9f71b386d 4
danky02 0:8ca9f71b386d 5 This library is free software; you can redistribute it and/or
danky02 0:8ca9f71b386d 6 modify it under the terms of the GNU Lesser General Public
danky02 0:8ca9f71b386d 7 License as published by the Free Software Foundation; either
danky02 0:8ca9f71b386d 8 version 2.1 of the License, or (at your option) any later version.
danky02 0:8ca9f71b386d 9 */
danky02 0:8ca9f71b386d 10
danky02 0:8ca9f71b386d 11 /*
danky02 0:8ca9f71b386d 12 The methods are:
danky02 0:8ca9f71b386d 13
danky02 0:8ca9f71b386d 14 UltrasonicSensor - Class for manipulating Ultrasonic Sensor
danky02 0:8ca9f71b386d 15
danky02 0:8ca9f71b386d 16 attach(echo, trigger) - Attaches a Ultrasonic Sensor to an i/o pin,
danky02 0:8ca9f71b386d 17 default pins are D9 for echo and D8 for trigger.
danky02 0:8ca9f71b386d 18
danky02 0:8ca9f71b386d 19 read() - Read distance measured by the sensor.
danky02 0:8ca9f71b386d 20 */
danky02 0:8ca9f71b386d 21
danky02 0:8ca9f71b386d 22 #include <mbed.h>
danky02 0:8ca9f71b386d 23 #include <UltrasonicSensor.h>
danky02 0:8ca9f71b386d 24
danky02 0:8ca9f71b386d 25 UltrasonicSensor::UltrasonicSensor(PinName echo, PinName trigger) : _echo(echo), _trigger(trigger) { // _pin(pin) means pass pin to the DigitalOut constructor
danky02 0:8ca9f71b386d 26 _echo = D9; // default the output to LED2
danky02 0:8ca9f71b386d 27 _trigger = D8;
danky02 0:8ca9f71b386d 28 corr = 0;
danky02 0:8ca9f71b386d 29 }
danky02 0:8ca9f71b386d 30
danky02 0:8ca9f71b386d 31 void UltrasonicSensor::begin(float correction = 0){
danky02 0:8ca9f71b386d 32 corr = correction;
danky02 0:8ca9f71b386d 33 UltrasonicSensor::begin2();
danky02 0:8ca9f71b386d 34 }
danky02 0:8ca9f71b386d 35
danky02 0:8ca9f71b386d 36 void UltrasonicSensor::begin(void){
danky02 0:8ca9f71b386d 37 corr = 0;
danky02 0:8ca9f71b386d 38 UltrasonicSensor::begin2();
danky02 0:8ca9f71b386d 39 }
danky02 0:8ca9f71b386d 40
danky02 0:8ca9f71b386d 41 void UltrasonicSensor::begin2(void){
danky02 0:8ca9f71b386d 42 distance = 0;
danky02 0:8ca9f71b386d 43 sonar.reset();
danky02 0:8ca9f71b386d 44 sonar.start();
danky02 0:8ca9f71b386d 45 while (_echo == 2){};
danky02 0:8ca9f71b386d 46 sonar.stop();
danky02 0:8ca9f71b386d 47 corr = sonar.read_us();
danky02 0:8ca9f71b386d 48 }
danky02 0:8ca9f71b386d 49
danky02 0:8ca9f71b386d 50 float UltrasonicSensor::read(void){
danky02 0:8ca9f71b386d 51 _trigger = 1;
danky02 0:8ca9f71b386d 52 sonar.reset();
danky02 0:8ca9f71b386d 53 wait_us(10.0);
danky02 0:8ca9f71b386d 54 _trigger = 0;
danky02 0:8ca9f71b386d 55 while(_echo == 0){};
danky02 0:8ca9f71b386d 56 sonar.start();
danky02 0:8ca9f71b386d 57 while(_echo ==1 ){};
danky02 0:8ca9f71b386d 58 sonar.stop();
danky02 0:8ca9f71b386d 59 return (sonar.read_us()-corr)/58.0;
danky02 0:8ca9f71b386d 60 //distance = (sonar.read_us()-corr)/58.0;
danky02 0:8ca9f71b386d 61 //return distance;
danky02 0:8ca9f71b386d 62 }