poyecto

Committer:
agat
Date:
Tue Dec 14 10:50:46 2021 +0000
Revision:
0:cf20365296f5
lol

Who changed what in which revision?

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