not mine

Dependents:   EE3023DistanceSensor EE3023DistanceSensor3 EE3023CarSafetySystem EE3023CarSafetySystem

Committer:
fiachra
Date:
Wed Dec 16 17:17:42 2020 +0000
Revision:
0:68251ad692dd
libraries created;

Who changed what in which revision?

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