Use this repository for pilot an ultrasonic sensor
Fork of UltrasonicSensor by
UltrasonicSensor.cpp@1:9d56714c1119, 2018-01-15 (annotated)
- Committer:
- danky02
- Date:
- Mon Jan 15 21:12:25 2018 +0000
- Revision:
- 1:9d56714c1119
- Parent:
- 0:8ca9f71b386d
Use this library for pilot an ultrasonic sensor
Who changed what in which revision?
User | Revision | Line number | New 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 | } |