Water Level Monitoring over IoT for ECE 4180 in Spring 2020 at Gatech
Dependencies: mbed Servo 4DGL-uLCD-SE Ultrasonic HCSR04 Seed_Ultrasonic_Range
main.cpp
- Committer:
- angadmakes
- Date:
- 2020-04-30
- Revision:
- 0:12f7ba5bc6c2
File content as of revision 0:12f7ba5bc6c2:
/* ECE 4180 Final Project: Rainwater Harvesting System with IoT SAMPLE DATA: There's a lot of noise specially in the beginning when water just bounces around the empty tank reading the sensor at longer intervals of time might help reduce the noise but the data in general looks like this with bounds (~empty : ~full) => (~192mm : ~ 34mm) */ //adding the libraries #include "mbed.h" #include "ultrasonic.h" #include "uLCD_4DGL.h" #include "Servo.h" //defining the pinouts uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; //ultrasonic mu(p6, p7, .1, 1, &dist); //I2C rangefinder(p9, p10); //sda, sc1 Serial pc(USBTX, USBRX); //tx, rx //Servo myservo(p21); //defining arbitrary variables int height; //bool LidClosed = false; //bool empty; //float p = 0; //sensor function for height void dist(int distance) { height = distance; //height = mu.getCurrentDistance(void); printf("DISTANC %d mm\r\n", distance); } ultrasonic mu(p6, p7, .5, 1, &dist); //pass on the height return volume int Volume(int h) { double pi = 3.14; double radius = 6.5; return(pi*radius*radius*h); } //Displays the water level and volume on LCD void Display() { int V = height/3; volatile int level = 27 + V; uLCD.baudrate(BAUD_3000000); uLCD.background_color(BLACK); uLCD.cls(); //replace with a black retangle instead oc clear screen uLCD.locate(3,12); uLCD.printf("VOLUME= %d",Volume(height)); //uLCD.printf("Volume = "); //void rectangle(int, int, int, int, int); //uLCD.locate(1,1); uLCD.rectangle(50, 25, 102, 92, 0x0FFFFF); // dynamic rectangle size -> second argument of rectangle should be based on the sonar reading level. uLCD.filled_rectangle(52, level, 100, 90, 0x00FF00); // fill rectangle based on current volume levels wait(0.5); } //void tankLid() //{ // //check is tank is empty and lid is closed then opens // if(( empty == 1) && (LidClosed == true)) // { // for(p=0; p<=10; p++) // { // myservo = p/10.0; // // } // LidClosed = false; // // } // // //checks if tank is full and lid is open then closes // else if((empty == 0) &&(LidClosed == false)) // { // for(p=10; p>=0; p--) // { // myservo = p/10.0; // // } // LidClosed = true; // } // } int main() { mu.startUpdates(); while (1) { //tank empty == 1 open lid mu.checkDistance(); //checks height value fro sonar //height = mu.getCurrentDistance(); wait(0.5); Display(); //computes volume and display volume level wait(0.5); //stream current level value to SDcard repeat //pc.printf("DISTANCE %d mm\r\n", height);// //pc.printf("TEST\n"); } }