Dependencies:   mbed

LAB3.cpp

Committer:
sunninety1
Date:
2018-11-16
Revision:
0:7359a54eb056

File content as of revision 0:7359a54eb056:

#include "mbed.h"
Serial pc(D8, D2); // change to D8, D2 for BT  คำสั่งเลือก port ให้เป็น tx rx ถ้าไม่กำหนด แปลว่าใช้ baudrate 9600
Serial ser(D1, D0);
//for 7 segment digit 1
DigitalOut sd(PC_0);
DigitalOut sc(PC_1);
DigitalOut sb(PB_0);
DigitalOut sa(PA_4);
DigitalOut sdo(PA_1);

AnalogIn analog_value(A1);


void m1(int x)
{
    BusOut a(PA_4,PB_0,PC_1,PC_0);
    a=x;
}
int main()
{
    uint8_t state_menu=0; //ให้ตัวแปลเหล่านี้เก็บในรูป 8บิต
    uint8_t state_show=0;
    uint8_t state_exit =0;
    uint8_t state_ser=0;
    uint8_t data;
    uint8_t data1;
    while(1) {
        if(state_show == 0) {
            pc.printf("************\n");
            pc.printf("   Menu   \n");
            pc.printf("************\n");
            pc.printf("1.Show number in 7segment\n");
            pc.printf("2.Read VR");
            state_show =1;
        }


        if(pc.readable()) { // คำสั่งดูว่ามีอะไรส่งมาไหม ถ้ามีก็จะเริ่มเข้าคำสั่ง
            data = pc.getc(); // pc.getc คือรับค่าที่เราพิมพ์ใน serial monitor
            pc.printf("***************\n");
            state_show =0;
            state_exit =0;

            switch(data) {
                case '1':
                    do {
                        if(state_menu == 0) {
                            pc.printf("Plz Enter number 0-9\n");
                            pc.printf("x.Exit\n");
                            state_menu = 1;
                        }

                        if(pc.readable()) {

                            if(state_ser==0) {
                                ser.printf("Request 1 accept? \n");
                                ser.printf("accept : y \n ");
                                state_ser=1;
                            }

                            if(ser.readable()) {
                                data1 = ser.getc();
                                if(data1=='y') {
                                    data = pc.getc();
                                    switch(data) {
                                        case '0':
                                            ser.printf("Show number 0 in 7segment \n");
                                            m1(0);
                                            state_ser=0;
                                            break;

                                        case '1':
                                            ser.printf("Show number 1 in 7segment \n");
                                            m1(1);
                                            state_ser=0;
                                            break;

                                        case '2':
                                            ser.printf("Show number 2 in 7segment \n");
                                            m1(2);
                                            state_ser=0;
                                            break;

                                        case '3':
                                            ser.printf("Show number 3 in 7segment \n");
                                            m1(3);
                                            state_ser=0;
                                            break;

                                        case '4':
                                            ser.printf("Show number 4 in 7segment \n");
                                            m1(4);
                                            state_ser=0;
                                            break;

                                        case '5':
                                            ser.printf("Show number 5 in 7segment \n");
                                            m1(5);
                                            state_ser=0;
                                            break;

                                        case '6':
                                            ser.printf("Show number 6 in 7segment \n");
                                            m1(6);
                                            state_ser=0;
                                            break;

                                        case '7':
                                            ser.printf("Show number 7 in 7segment \n");
                                            m1(7);
                                            state_ser=0;
                                            break;

                                        case '8':
                                            ser.printf("Show number 8 in 7segment \n");
                                            m1(8);
                                            state_ser=0;
                                            break;

                                        case '9':
                                            ser.printf("Show number 9 in 7segment \n");
                                            m1(9);
                                            state_ser=0;
                                            break;

                                        case 'x':
                                            pc.printf("*****************\n back to menu \n");
                                            state_exit =1;
                                            state_ser=0;
                                            break;

                                        default:
                                            pc.printf("plz select number 0-9  or x\n");
                                            pc.printf("\n");
                                            state_ser=0;
                                            break;
                                    }
                                } else {
                                    state_menu=0;
                                    state_ser=0;
                                }
                            }
                        }
                    } while(state_exit ==0);
                    pc.printf("\n");
                    break;
                case '2':
                    do {
                        if(state_menu == 0) {
                            pc.printf("a.Show analog input\n");
                            pc.printf("x.Exit\n");
                            state_menu = 1;
                        }
                        if(pc.readable()) {

                            if(state_ser==0) {
                                ser.printf("Request 2 accept? \n");
                                ser.printf("accept : y \n ");
                                state_ser=1;
                            }

                            if(ser.readable()) {
                                data1 = ser.getc();
                                if(data1=='y') {
                                    data=pc.getc();
                                    switch(data) {
                                        case 'a':
                                            float meas_r = analog_value.read();
                                            meas_r*=3.3;
                                            pc.printf("%0.2f\n",meas_r);
                                            state_ser=0;
                                            break;
                                        case 'x':
                                            ser.printf("back to menu \n");
                                            state_exit =1;
                                            state_ser=0;
                                            break;
                                        default:
                                            pc.printf("plz select a or x\n");
                                            pc.printf("\n");
                                            state_ser=0;
                                            break;
                                    }
                                } else {
                                    state_menu=0;
                                    state_ser=0;
                                }
                            }
                        }
                    } while(state_exit ==0);
                    pc.printf("\n");
                    break;



                    /*                            switch(data) {

                                                    case 'a': {
                                                        ser.printf("Request 2 accept? \n");
                                                        if(ser.readable()) {
                                                            data1=ser.getc();
                                                            if(data1=='y') {
                                                                float meas_r = analog_value.read();
                                                                meas_r*=3.3;
                                                                pc.printf("%0.2f\n",meas_r);
                                                                break;
                                                            } else {
                                                                break;
                                                            }
                                                        }

                                                        break;

                                                    }
                                                    case 'x': {
                                                        state_exit =1;
                                                        break;
                                                    }
                                                    default: {
                                                        pc.printf("plz select a or x \n");
                                                        pc.printf("\n");
                                                        break;
                                                    }
                                                }*/

                    // pc.printf("kkkkk\n");

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


        }

    }

}