sdf

Dependencies:   mbed C12832 Servo RangeFinder Pulse

Committer:
asimelfadil
Date:
Tue Mar 01 13:49:18 2022 +0000
Revision:
1:47dc87d326ed
Parent:
0:4db5f0f5faa0
Group 66 Course Work 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asimelfadil 0:4db5f0f5faa0 1 #include "mbed.h"
asimelfadil 0:4db5f0f5faa0 2 #include <MoistureSensor.h>
asimelfadil 0:4db5f0f5faa0 3 #include "RangeFinder.h"
asimelfadil 0:4db5f0f5faa0 4 #include <Motor_relay.h>
asimelfadil 0:4db5f0f5faa0 5 #include "Servo.h"
asimelfadil 1:47dc87d326ed 6 #include <C12832.h>
asimelfadil 0:4db5f0f5faa0 7
asimelfadil 0:4db5f0f5faa0 8 int dry = 0.61;
asimelfadil 0:4db5f0f5faa0 9 int wet = 0.37;
asimelfadil 0:4db5f0f5faa0 10 moisture_sensor grove(p17);
asimelfadil 0:4db5f0f5faa0 11 RangeFinder rf(p18, 10, 5800.0, 100000);
asimelfadil 0:4db5f0f5faa0 12 DigitalOut led(LED1);
asimelfadil 0:4db5f0f5faa0 13 MOTOR_RELAY motor_relay1(p22);
asimelfadil 0:4db5f0f5faa0 14 MOTOR_RELAY motor_relay2(p21);
asimelfadil 0:4db5f0f5faa0 15 Servo valve1(p23);
asimelfadil 0:4db5f0f5faa0 16 Servo valve2(p24);
asimelfadil 1:47dc87d326ed 17 C12832 mylcd(p5,p7,p6,p8,p11);
asimelfadil 0:4db5f0f5faa0 18 #define on 1
asimelfadil 0:4db5f0f5faa0 19 #define off 0
asimelfadil 0:4db5f0f5faa0 20 int main (void)
asimelfadil 0:4db5f0f5faa0 21 {
asimelfadil 0:4db5f0f5faa0 22
asimelfadil 0:4db5f0f5faa0 23 float moisturevalue = 0.0f;
asimelfadil 0:4db5f0f5faa0 24 float moisturepercentage = 0.0f;
asimelfadil 0:4db5f0f5faa0 25 led = 1;
asimelfadil 0:4db5f0f5faa0 26 float d;
asimelfadil 0:4db5f0f5faa0 27 while (true) {
asimelfadil 0:4db5f0f5faa0 28
asimelfadil 0:4db5f0f5faa0 29 moisturevalue = grove.read();
asimelfadil 0:4db5f0f5faa0 30 moisturepercentage=(((moisturevalue- 0.37)/(0.61-0.37))*100);
asimelfadil 0:4db5f0f5faa0 31 debug("Moisture reading is %2.2f percent dry\n\r",moisturepercentage);
asimelfadil 1:47dc87d326ed 32 mylcd.locate(0,0);
asimelfadil 1:47dc87d326ed 33 mylcd.printf("Moist: %.2f",moisturepercentage);
asimelfadil 1:47dc87d326ed 34
asimelfadil 0:4db5f0f5faa0 35 wait(1.0f);
asimelfadil 0:4db5f0f5faa0 36
asimelfadil 0:4db5f0f5faa0 37 d = rf.read_m();
asimelfadil 0:4db5f0f5faa0 38 if (d == -1.0) {
asimelfadil 0:4db5f0f5faa0 39 printf("Timeout Error.\n\r");
asimelfadil 0:4db5f0f5faa0 40 } else if (d > 5.0) {
asimelfadil 0:4db5f0f5faa0 41 // Seeed's sensor has a maximum range of 4m, it returns
asimelfadil 0:4db5f0f5faa0 42 // something like 7m if the ultrasound pulse isn't reflected.
asimelfadil 0:4db5f0f5faa0 43 printf("No object within detection range.\n");
asimelfadil 0:4db5f0f5faa0 44 } else {
asimelfadil 0:4db5f0f5faa0 45 printf("Distance = %f m.\n", d);
asimelfadil 1:47dc87d326ed 46 mylcd.locate(0,10);
asimelfadil 1:47dc87d326ed 47 mylcd.printf("Distance = %f m.\n", d);
asimelfadil 0:4db5f0f5faa0 48 }
asimelfadil 0:4db5f0f5faa0 49 wait(0.5);
asimelfadil 0:4db5f0f5faa0 50 led = !led;
asimelfadil 1:47dc87d326ed 51
asimelfadil 1:47dc87d326ed 52
asimelfadil 1:47dc87d326ed 53 if(moisturepercentage>80) {
asimelfadil 1:47dc87d326ed 54 mylcd.locate(0,10);
asimelfadil 1:47dc87d326ed 55 mylcd.printf("outletvalve:open pump:on");
asimelfadil 0:4db5f0f5faa0 56 motor_relay1.SetMotor(1);
asimelfadil 0:4db5f0f5faa0 57 valve1.position(0);
asimelfadil 1:47dc87d326ed 58 }
asimelfadil 1:47dc87d326ed 59 if(moisturepercentage<20) {
asimelfadil 1:47dc87d326ed 60 mylcd.locate(0,10);
asimelfadil 1:47dc87d326ed 61 mylcd.printf("outletvalve:close pump:off");
asimelfadil 0:4db5f0f5faa0 62 motor_relay1.SetMotor(0);
asimelfadil 1:47dc87d326ed 63 valve1.position(90);
asimelfadil 1:47dc87d326ed 64 }
asimelfadil 1:47dc87d326ed 65 if(20<moisturepercentage<80) {
asimelfadil 1:47dc87d326ed 66 mylcd.locate(0,10);
asimelfadil 1:47dc87d326ed 67 mylcd.printf("Moisture:ok pump:off");
asimelfadil 1:47dc87d326ed 68 motor_relay1.SetMotor(0);
asimelfadil 1:47dc87d326ed 69 }
asimelfadil 0:4db5f0f5faa0 70 if (d>0.07 ) {
asimelfadil 1:47dc87d326ed 71 mylcd.locate(0,20);
asimelfadil 1:47dc87d326ed 72 mylcd.printf("inletvalve:open pump:on");
asimelfadil 0:4db5f0f5faa0 73 motor_relay2.SetMotor(1);
asimelfadil 0:4db5f0f5faa0 74 valve2.position(90);
asimelfadil 0:4db5f0f5faa0 75 }
asimelfadil 0:4db5f0f5faa0 76 if(d<0.02) {
asimelfadil 1:47dc87d326ed 77 mylcd.locate(0,20);
asimelfadil 1:47dc87d326ed 78 mylcd.printf("inletvalve:closed pump:off");
asimelfadil 0:4db5f0f5faa0 79 motor_relay2.SetMotor(0);
asimelfadil 0:4db5f0f5faa0 80 valve2.position(0);
asimelfadil 0:4db5f0f5faa0 81 }
asimelfadil 1:47dc87d326ed 82 if (0.02<d<0.07) {
asimelfadil 1:47dc87d326ed 83 mylcd.locate(0,20);
asimelfadil 1:47dc87d326ed 84 mylcd.printf("water level:ok pump:off");
asimelfadil 1:47dc87d326ed 85 motor_relay2.SetMotor(0);
asimelfadil 1:47dc87d326ed 86 }
asimelfadil 0:4db5f0f5faa0 87 }
asimelfadil 0:4db5f0f5faa0 88 return 0;
asimelfadil 0:4db5f0f5faa0 89 }
asimelfadil 0:4db5f0f5faa0 90
asimelfadil 0:4db5f0f5faa0 91