ultra sonic sensor

Dependents:   Func_Bertl_Ultra func_Bertl Bertl_Test ur_Bertl ... more

Committer:
bulmecisco
Date:
Thu Feb 05 12:37:20 2015 +0000
Revision:
0:92d1f0be3af4
Ultraschall Sensor added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bulmecisco 0:92d1f0be3af4 1 /* Copyright (c) 2013 Prabhu Desai
bulmecisco 0:92d1f0be3af4 2 * pdtechworld@gmail.com
bulmecisco 0:92d1f0be3af4 3 *
bulmecisco 0:92d1f0be3af4 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
bulmecisco 0:92d1f0be3af4 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
bulmecisco 0:92d1f0be3af4 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
bulmecisco 0:92d1f0be3af4 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
bulmecisco 0:92d1f0be3af4 8 * furnished to do so, subject to the following conditions:
bulmecisco 0:92d1f0be3af4 9 *
bulmecisco 0:92d1f0be3af4 10 * The above copyright notice and this permission notice shall be included in all copies or
bulmecisco 0:92d1f0be3af4 11 * substantial portions of the Software.
bulmecisco 0:92d1f0be3af4 12 *
bulmecisco 0:92d1f0be3af4 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
bulmecisco 0:92d1f0be3af4 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
bulmecisco 0:92d1f0be3af4 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
bulmecisco 0:92d1f0be3af4 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
bulmecisco 0:92d1f0be3af4 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
bulmecisco 0:92d1f0be3af4 18 */
bulmecisco 0:92d1f0be3af4 19
bulmecisco 0:92d1f0be3af4 20
bulmecisco 0:92d1f0be3af4 21 #include "hcsr04.h"
bulmecisco 0:92d1f0be3af4 22
bulmecisco 0:92d1f0be3af4 23
bulmecisco 0:92d1f0be3af4 24 HCSR04::HCSR04(PinName TrigPin,PinName EchoPin):
bulmecisco 0:92d1f0be3af4 25 trigger(TrigPin), echo(EchoPin)
bulmecisco 0:92d1f0be3af4 26 {
bulmecisco 0:92d1f0be3af4 27 pulsetime.stop();
bulmecisco 0:92d1f0be3af4 28 pulsetime.reset();
bulmecisco 0:92d1f0be3af4 29 echo.rise(this,&HCSR04::isr_rise);
bulmecisco 0:92d1f0be3af4 30 echo.fall(this,&HCSR04::isr_fall);
bulmecisco 0:92d1f0be3af4 31 trigger=0;
bulmecisco 0:92d1f0be3af4 32 }
bulmecisco 0:92d1f0be3af4 33
bulmecisco 0:92d1f0be3af4 34 HCSR04::~HCSR04()
bulmecisco 0:92d1f0be3af4 35 {
bulmecisco 0:92d1f0be3af4 36 }
bulmecisco 0:92d1f0be3af4 37
bulmecisco 0:92d1f0be3af4 38 void HCSR04::isr_rise(void)
bulmecisco 0:92d1f0be3af4 39 {
bulmecisco 0:92d1f0be3af4 40 pulsetime.start();
bulmecisco 0:92d1f0be3af4 41 }
bulmecisco 0:92d1f0be3af4 42 void HCSR04::start(void)
bulmecisco 0:92d1f0be3af4 43 {
bulmecisco 0:92d1f0be3af4 44 trigger=1;
bulmecisco 0:92d1f0be3af4 45 wait_us(10);
bulmecisco 0:92d1f0be3af4 46 trigger=0;
bulmecisco 0:92d1f0be3af4 47 }
bulmecisco 0:92d1f0be3af4 48
bulmecisco 0:92d1f0be3af4 49 void HCSR04::isr_fall(void)
bulmecisco 0:92d1f0be3af4 50 {
bulmecisco 0:92d1f0be3af4 51 pulsetime.stop();
bulmecisco 0:92d1f0be3af4 52 pulsedur = pulsetime.read_us();
bulmecisco 0:92d1f0be3af4 53 distance= (pulsedur*343)/20000;
bulmecisco 0:92d1f0be3af4 54 pulsetime.reset();
bulmecisco 0:92d1f0be3af4 55 }
bulmecisco 0:92d1f0be3af4 56
bulmecisco 0:92d1f0be3af4 57 void HCSR04::rise (void (*fptr)(void))
bulmecisco 0:92d1f0be3af4 58 {
bulmecisco 0:92d1f0be3af4 59 echo.rise(fptr);
bulmecisco 0:92d1f0be3af4 60 }
bulmecisco 0:92d1f0be3af4 61 void HCSR04::fall (void (*fptr)(void))
bulmecisco 0:92d1f0be3af4 62 {
bulmecisco 0:92d1f0be3af4 63 echo.fall(fptr);
bulmecisco 0:92d1f0be3af4 64 }
bulmecisco 0:92d1f0be3af4 65
bulmecisco 0:92d1f0be3af4 66 unsigned int HCSR04::get_dist_cm()
bulmecisco 0:92d1f0be3af4 67 {
bulmecisco 0:92d1f0be3af4 68 return distance;
bulmecisco 0:92d1f0be3af4 69 }
bulmecisco 0:92d1f0be3af4 70 unsigned int HCSR04::get_pulse_us()
bulmecisco 0:92d1f0be3af4 71 {
bulmecisco 0:92d1f0be3af4 72 return pulsedur;
bulmecisco 0:92d1f0be3af4 73 }
bulmecisco 0:92d1f0be3af4 74
bulmecisco 0:92d1f0be3af4 75 /* EXAMPLE MAIN
bulmecisco 0:92d1f0be3af4 76
bulmecisco 0:92d1f0be3af4 77 #include "mbed.h"
bulmecisco 0:92d1f0be3af4 78 #include "hcsr04.h"
bulmecisco 0:92d1f0be3af4 79 #include "config.h"
bulmecisco 0:92d1f0be3af4 80
bulmecisco 0:92d1f0be3af4 81 HCSR04 usensor(p21,p22);
bulmecisco 0:92d1f0be3af4 82
bulmecisco 0:92d1f0be3af4 83 int main()
bulmecisco 0:92d1f0be3af4 84 {
bulmecisco 0:92d1f0be3af4 85 int dist = 0;
bulmecisco 0:92d1f0be3af4 86 unsigned char count=0;
bulmecisco 0:92d1f0be3af4 87 while(count < 20) {
bulmecisco 0:92d1f0be3af4 88 usensor.start();
bulmecisco 0:92d1f0be3af4 89 wait_ms(500);
bulmecisco 0:92d1f0be3af4 90 dist=usensor.get_dist_cm();
bulmecisco 0:92d1f0be3af4 91 pc.printf("\r\nCount =%d",count);
bulmecisco 0:92d1f0be3af4 92 pc.printf("Distance: %d",dist );
bulmecisco 0:92d1f0be3af4 93 count++;
bulmecisco 0:92d1f0be3af4 94
bulmecisco 0:92d1f0be3af4 95 }
bulmecisco 0:92d1f0be3af4 96 }
bulmecisco 0:92d1f0be3af4 97 */