l

Dependencies:   mbed

Fork of Nucleo_serial_sf by PuG

main.cpp

Committer:
NamSom
Date:
2015-10-26
Revision:
4:eae42fe39107
Parent:
3:a46061896235

File content as of revision 4:eae42fe39107:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #include "mbed.h"

//------------------------------------
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//------------------------------------
int pattern1();
int pattern2();
int checkState();
Serial pc(SERIAL_TX, SERIAL_RX);

DigitalOut myled0(D15);
DigitalOut myled1(D14);
DigitalOut myled2(D13);
DigitalOut myled3(D12);
DigitalOut myled4(D11);
DigitalOut myled5(D10);
DigitalOut myled6(D9);
DigitalOut myled7(D8);

DigitalIn inbutton(D3);
char data;

int checkState()
{
    if(pc.readable()==1){
    data = pc.getc();
    if(data=='s'||data=='S') {return 1;}
    else if(data=='a'||data=='A') {return 2;}
    else if(data=='d'||data=='D') {return 3;}
    else return 0;}
}

int pattern1()
{
    int check;
    while(1){
        myled0=1;
        wait(1);
        myled0=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled1=1;
        wait(1);
        myled1=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled2=1;
        wait(1);
        myled2=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled3=1;
        wait(1);
        myled3=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled4=1;
        wait(1);
        myled4=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled5=1;
        wait(1);
        myled5=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled6=1;
        wait(1);
        myled6=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled7=1;
        wait(1);
        myled7=0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
    }
    pattern2();
    return 0;
}

int pattern2()
{
    uint8_t check;
    while(1) {
        myled0 =1;
        myled1 =1;
        myled4 =1;
        myled5 =1;
        wait(1);
        myled0 =0;
        myled1 =0;
        myled4 =0;
        myled5 =0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        myled2 =1;
        myled3 =1;
        myled6 =1;
        myled7 =1;
        wait(1);
        myled2 =0;
        myled3 =0;
        myled6 =0;
        myled7 =0;
        check=checkState();
        if(check==1) {return 1;}
        else if(check==3) break;
        }
        pattern1();
        return 0;
}


int main()
{

    uint8_t state_menu=0;
    uint8_t state_show=0;
    uint8_t state_exit =0;
    uint8_t state_LED =0;
    
    myled0 = 0;
    myled1 = 0;
    myled2 = 0;
    myled3 = 0;
    myled4 = 0;
    myled5 = 0;
    myled6 = 0;
    myled7 = 0;
    pc.printf("Select Mode\n");
    while(1) {
        if(state_show == 0) {
            pc.printf("Menu\n");
            pc.printf("1.Choose LED pattern\n");
            pc.printf("2.Print status\n");
            state_show =1;
        }
        if(pc.readable()) {
            data = pc.getc();
            pc.printf("\n");
            state_show =0;
            state_exit =0;

            switch(data) {
                case '1':
                    do {
                        if(state_menu == 0) {
                            pc.printf("Choose LED pattern\n");
                            pc.printf("a.Pattern1\n");
                            pc.printf("d.Pattern2\n");
                            pc.printf("s.Exit\n");
                            state_menu = 1;
                        }
                        if(pc.readable()) {
                            data = pc.getc();
                            pc.printf("\n");
                            state_menu=0;

                            if(data=='a'||data=='A') {
                                pattern1();
                            }
                            if(data=='d'||data=='D') {
                                pattern2();
                            }
                            if(data=='s'||data=='S') {
                                state_exit = 1;
                            }
                        }

                    } while(state_exit ==0);
                    pc.printf("\n");
                    break;

                case '2':

                    if(state_menu == 0) {
                        pc.printf("LED status\n");
                        state_menu = 1;
                    }
                    if(inbutton == 0) {
                        pc.printf("OFF\n");
                        state_menu=1;
                    }
                    if(inbutton == 1) {
                        pc.printf("ON\n");
                        state_menu=1;
                    }

                    pc.printf("\n\n");
                    break;

                default:
                    pc.printf("plz select 1 or 2 only\n");
                    pc.printf("\n\n");
                    break;
            }
        }

    }
}