Wireless and Multimedia final project mbed code

Dependencies:   ESP8266 mbed

Committer:
abdeokar23
Date:
Fri Feb 09 01:05:40 2024 +0000
Revision:
6:409e600bbd4e
Parent:
5:17a7d2402ed0
git update

Who changed what in which revision?

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