[226] | 1 | /*
|
---|
| 2 | * Ultrasonic.cpp
|
---|
| 3 | * A library for ultrasonic ranger
|
---|
| 4 | *
|
---|
| 5 | * Copyright (c) 2012 seeed technology inc.
|
---|
| 6 | * Website : www.seeed.cc
|
---|
| 7 | * Author : LG, FrankieChu
|
---|
| 8 | * Create Time: Jan 17,2013
|
---|
| 9 | * Change Log :
|
---|
| 10 | *
|
---|
| 11 | * The MIT License (MIT)
|
---|
| 12 | *
|
---|
| 13 | * Permission is hereby granted, free of charge, to any person obtaining a copy
|
---|
| 14 | * of this software and associated documentation files (the "Software"), to deal
|
---|
| 15 | * in the Software without restriction, including without limitation the rights
|
---|
| 16 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
---|
| 17 | * copies of the Software, and to permit persons to whom the Software is
|
---|
| 18 | * furnished to do so, subject to the following conditions:
|
---|
| 19 | *
|
---|
| 20 | * The above copyright notice and this permission notice shall be included in
|
---|
| 21 | * all copies or substantial portions of the Software.
|
---|
| 22 | *
|
---|
| 23 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
---|
| 24 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
| 25 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
---|
| 26 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
---|
| 27 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
---|
| 28 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
---|
| 29 | * THE SOFTWARE.
|
---|
| 30 | */
|
---|
| 31 | #include <stdio.h>
|
---|
| 32 | #include <string.h>
|
---|
| 33 | #include <inttypes.h>
|
---|
| 34 | #include "Arduino.h"
|
---|
| 35 | #include "Ultrasonic.h"
|
---|
| 36 |
|
---|
| 37 | Ultrasonic::Ultrasonic(int pin)
|
---|
| 38 | {
|
---|
| 39 | _pin = pin;
|
---|
| 40 | }
|
---|
| 41 | /*The measured distance from the range 0 to 400 Centimeters*/
|
---|
| 42 | long Ultrasonic::MeasureInCentimeters(void)
|
---|
| 43 | {
|
---|
| 44 | pinMode(_pin, OUTPUT);
|
---|
| 45 | digitalWrite(_pin, LOW);
|
---|
| 46 | delayMicroseconds(2);
|
---|
| 47 | digitalWrite(_pin, HIGH);
|
---|
| 48 | delayMicroseconds(5);
|
---|
| 49 | digitalWrite(_pin,LOW);
|
---|
| 50 | pinMode(_pin,INPUT);
|
---|
| 51 | long duration;
|
---|
| 52 | duration = pulseIn(_pin,HIGH);
|
---|
| 53 | long RangeInCentimeters;
|
---|
| 54 | RangeInCentimeters = duration/29/2;
|
---|
| 55 | return RangeInCentimeters;
|
---|
| 56 | }
|
---|
| 57 | /*The measured distance from the range 0 to 157 Inches*/
|
---|
| 58 | long Ultrasonic::MeasureInInches(void)
|
---|
| 59 | {
|
---|
| 60 | pinMode(_pin, OUTPUT);
|
---|
| 61 | digitalWrite(_pin, LOW);
|
---|
| 62 | delayMicroseconds(2);
|
---|
| 63 | digitalWrite(_pin, HIGH);
|
---|
| 64 | delayMicroseconds(5);
|
---|
| 65 | digitalWrite(_pin,LOW);
|
---|
| 66 | pinMode(_pin,INPUT);
|
---|
| 67 | long duration;
|
---|
| 68 | duration = pulseIn(_pin,HIGH);
|
---|
| 69 | long RangeInInches;
|
---|
| 70 | RangeInInches = duration/74/2;
|
---|
| 71 | return RangeInInches;
|
---|
| 72 | }
|
---|