IoT based Smart Garbage Monitoring System-Debjyoti, Avinash, Seeta Ram

Dependents:   frdm_group2P1

Committer:
seetarampandey
Date:
Thu Dec 06 15:32:07 2018 +0000
Revision:
0:1ad2b17e0f45
IoT based Smart Garbage Monitoring System- Debjyoti, Avinash, Seeta Ram

Who changed what in which revision?

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