Strawberry Greenhouse V3
Dependencies: mbed C12832 Servo HCSR04 DHT DHT11
Diff: main.cpp
- Revision:
- 0:c48b28944702
- Child:
- 1:81cec44cec2e
diff -r 000000000000 -r c48b28944702 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 12 19:23:55 2021 +0000 @@ -0,0 +1,106 @@ +#include "mbed.h" + +#include "C12832.h" + +#include "tank.h" + +#include "HCSR04.h" + + +C12832 lcd(p5, p7, p6, p8, p11); // LCD screen +PwmOut r (p23); // r = red LED +PwmOut g (p24); // g = green LED + + +int main() + +{ + +//welcome message on LCD + + lcd.cls(); + + lcd.locate(25,5); + + lcd.printf("Tank Water Level"); + + lcd.locate(2,15); + + lcd.printf("Greenhouse Control System"); + + wait(2.5); + + lcd.cls(); //clear LCD + + Timer timer; + + { + + HCSR04 sensor(p9, p20); + sensor.setRanges(0, 500); // water tank level 500mm + + + + lcd.print_bm(bitmEmptyTank,80,0); // print Empty Tank at location x=85, y=0 + lcd.copy_to_lcd(); + //if needed: lcd.locate(0,10); + //if needed: lcd.printf("Min. range = %g cm\n\rMax. range = %g cm\n\r", + //If needed: sensor.getMinRange(), sensor.getMaxRange()); + + while(true) { + timer.reset(); + timer.start(); + sensor.startMeasurement(); + while(!sensor.isNewDataReady()) { + // wait for new data + // waiting time depends on the distance + } + lcd.locate(20,5); + lcd.printf("Distance:"); + lcd.locate(20,17); + lcd.printf ("%5.1f mm\r", sensor.getDistance_mm()); + timer.stop(); + wait_ms(500 - timer.read_ms()); // time the loop + + //turn RGB LED red if distance >400mm + if( sensor.getDistance_mm()< 400) r=1; //red light on + else r = 0; + + if( sensor.getDistance_mm()> 400) g=1; //green light on + else g=0; //green light off + + + if( sensor.getDistance_mm() < 40 ) lcd.print_bm(bitmTank,80,0); //full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 80 ) lcd.print_bm(bitmNinetyTank,80,0); //90% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 120 ) lcd.print_bm(bitmEightyTank,80,0); //80% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 160 ) lcd.print_bm(bitmSeventyTank,80,0); //70% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 200 ) lcd.print_bm(bitmSixtyTank,80,0); //60% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 240 ) lcd.print_bm(bitmFiftyTank,80,0); //50% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 280 ) lcd.print_bm(bitmFourtyTank,80,0); //40% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 320 ) lcd.print_bm(bitmThirtyTank,80,0); //30% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 360 ) lcd.print_bm(bitmTwentyTank,80,0); //20% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 400 ) lcd.print_bm(bitmTenTank,80,0); //10% full tank + lcd.copy_to_lcd(); + if( sensor.getDistance_mm() > 440 ) lcd.print_bm(bitmEmptyTank,80,0); //empty tank + lcd.copy_to_lcd(); + + } + } + + +// https://os.mbed.com/media/uploads/Njbuch/wiley_publishing_-_c_for_dummies_2nd.edition_-2004-.pdf + + + + +} +