irrigation system for the ST Nucleo boards

Dependencies:   mbed

interface.cpp

Committer:
sheldon_holmes
Date:
2015-04-18
Revision:
4:9e223db481da

File content as of revision 4:9e223db481da:

#include "mbed.h"
#include "Keepad.h"
#include "LCDs.h"
//#include "Decoder.h"
#include "steps.h"
#include "interface.h"

interface::interface(){}

void interface::startup()
{
    LCDs lcd;    
    lcd.lcdcmd(0x01);  
    lcd.putString("   IRRIGATION    SYSTEM STARTED");
    wait_ms(2000);
    lcd.lcdcmd(0x01);  
}

char interface::scr1cnt()
{   
    int k1=0;
    char at = 'z';
    screen1();
    steps s;
    while(k1!=11 && k1!=21 && k1!=31)
    {
        k1 = keyInp();
    }
    int r = s.step1(k1);
    k1=0;
    while(k1==0)
    {
        k1 = keyInp();
        if( k1 == 33)
            screen1();
        else if( k1 == 21 && r==1)
            screenManual();
        else if( k1 == 11 && r==1)
        {
            at = screenAuto();
            if(at=='s')
                scr1cnt();
        }
        else
            k1=0;
    }
    return(at);
}

void interface::screen1()
{
    LCDs lcd2;
    lcd2.lcdcmd(0x01);
    lcd2.putString("PRESS: 1->MODES 2->TEMP 3->MOIST");    
}

void interface::screenManual()
{
    int k4=0;
    LCDs lcd3;
    lcd3.lcdcmd(0x01);
    lcd3.putString("Enter Irrigationtime (min): >>>");
    while( k4 != 41)
    {
        k4 = keyInp();
        if(k4==34)
            scr1cnt();
    }
    lcd3.lcdcmd(0x01);
    string k3 = convNum();
    lcd3.lcdcmd(0x01);
    lcd3.putString(k3);
}

int interface::screenAuto()
{
    int k3=0;
    LCDs lcd4;
    lcd4.lcdcmd(0x01);
    lcd4.putString("Enter crop :");
    lcd4.lcdcmd(0xC0);
    lcd4.putString(">Press Right Key");        
    while( k3 != 41)
    {
        k3 = keyInp();
        if(k3==34)
            scr1cnt();
    }
    lcd4.lcdcmd(0x01);
    lcd4.putString("1.Wheat  2.Maize");
    lcd4.lcdcmd(0xC0);
    lcd4.putString("3.Onion 4.Potato");
    k3=0;
    while(k3==0)
    {
        k3 = keyInp();
        if( k3 == 11)
        {
            //Wheat();
            return('w');
        }
        else if( k3 == 21)
        {
            //Maize();
            return('m');
        }
        else if( k3 == 31)
        {
            //Onion();
            return('o');
        }
        else if( k3 == 12)
        {
            //Potato();
            return('p');
        }
        else if( k3 == 34)        
            return('s');
        else
            k3=0;
    }
    return('z');
}

int interface::keyInp()
{
    int kp=0;
    Keepad kpd;
    while(kp==0){
        kp=0;
        kp=kpd.keypad();
    }
    return(kp);
}

string interface::convNum()
{
    int cv[10];
    int i = 0, j = 0, sum = 0;    
    while(j != 34)
    {
        j = keyInp();        
        switch(j)
        {
            case 11:
                cv[i] = 1;
                break;
            case 21:
                cv[i] = 2;
                break;
            case 31:
                cv[i] = 3;
                break;
            case 12:
                cv[i] = 4;
                break;
            case 22:
                cv[i] = 5;
                break;
            case 32:
                cv[i] = 6;
                break;
            case 13:
                cv[i] = 7;
                break;
            case 23:
                cv[i] = 8;
                break;
            case 24:
                cv[i] = 9;
                break;
            case 14:
                cv[i] = 0;
                break;
            default:
                break;
        }
        i++;
    }
    j=1;
    i=i-2;
    sum = cv[i];
    for(int t = 1; t <= i; t++)
    {
        j=j*10;
    }
    
    for(int tv = 0; tv <i; tv++)
    {
        sum = sum + (cv[tv]*j);
        j=j/10;
    }
    
    char dis[16];
    sprintf(dis,"%d",sum);
    return(dis);
}