sdf

Dependencies:   mbed C12832 Servo RangeFinder Pulse

main.cpp

Committer:
asimelfadil
Date:
2022-03-01
Revision:
1:47dc87d326ed
Parent:
0:4db5f0f5faa0

File content as of revision 1:47dc87d326ed:

#include "mbed.h"
#include <MoistureSensor.h>
#include "RangeFinder.h"
#include <Motor_relay.h>
#include "Servo.h"
#include <C12832.h>

int dry = 0.61;
int wet = 0.37;
moisture_sensor grove(p17);
RangeFinder rf(p18, 10, 5800.0, 100000);
DigitalOut led(LED1);
MOTOR_RELAY motor_relay1(p22);
MOTOR_RELAY motor_relay2(p21);
Servo valve1(p23);
Servo valve2(p24);
C12832 mylcd(p5,p7,p6,p8,p11);
#define on  1
#define off 0
int main (void)
{

    float moisturevalue = 0.0f;
    float moisturepercentage = 0.0f;
    led = 1;
    float d;
    while (true) {

        moisturevalue = grove.read();
        moisturepercentage=(((moisturevalue- 0.37)/(0.61-0.37))*100);
        debug("Moisture reading is %2.2f percent dry\n\r",moisturepercentage);
        mylcd.locate(0,0);
        mylcd.printf("Moist: %.2f",moisturepercentage);

        wait(1.0f);

        d = rf.read_m();
        if (d == -1.0)  {
            printf("Timeout Error.\n\r");
        } else if (d > 5.0) {
            // Seeed's sensor has a maximum range of 4m, it returns
            // something like 7m if the ultrasound pulse isn't reflected.
            printf("No object within detection range.\n");
        } else  {
            printf("Distance = %f m.\n", d);
            mylcd.locate(0,10);
            mylcd.printf("Distance = %f m.\n", d);
        }
        wait(0.5);
        led = !led;


        if(moisturepercentage>80) {
            mylcd.locate(0,10);
            mylcd.printf("outletvalve:open pump:on");
            motor_relay1.SetMotor(1);
            valve1.position(0);
        }
        if(moisturepercentage<20) {
            mylcd.locate(0,10);
            mylcd.printf("outletvalve:close pump:off");
            motor_relay1.SetMotor(0);
            valve1.position(90);
        }
        if(20<moisturepercentage<80) {
            mylcd.locate(0,10);
            mylcd.printf("Moisture:ok pump:off");
            motor_relay1.SetMotor(0);
        }
        if (d>0.07 ) {
            mylcd.locate(0,20);
            mylcd.printf("inletvalve:open pump:on");
            motor_relay2.SetMotor(1);
            valve2.position(90);
        }
        if(d<0.02) {
            mylcd.locate(0,20);
            mylcd.printf("inletvalve:closed pump:off");
            motor_relay2.SetMotor(0);
            valve2.position(0);
        }
        if (0.02<d<0.07) {
            mylcd.locate(0,20);
            mylcd.printf("water level:ok pump:off");
            motor_relay2.SetMotor(0);
        }
    }
    return 0;
}