123

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LAB3.cpp Source File

LAB3.cpp

00001 #include "mbed.h"
00002 Serial pc(D8, D2); // change to D8, D2 for BT  คำสั่งเลือก port ให้เป็น tx rx ถ้าไม่กำหนด แปลว่าใช้ baudrate 9600
00003 Serial ser(D1, D0);
00004 //for 7 segment digit 1
00005 DigitalOut sd(PC_0);
00006 DigitalOut sc(PC_1);
00007 DigitalOut sb(PB_0);
00008 DigitalOut sa(PA_4);
00009 DigitalOut sdo(PA_1);
00010 
00011 AnalogIn analog_value(A1);
00012 
00013 
00014 void m1(int x)
00015 {
00016     BusOut a(PA_4,PB_0,PC_1,PC_0);
00017     a=x;
00018 }
00019 int main()
00020 {
00021     uint8_t state_menu=0; //ให้ตัวแปลเหล่านี้เก็บในรูป 8บิต
00022     uint8_t state_show=0;
00023     uint8_t state_exit =0;
00024     uint8_t state_ser=0;
00025     uint8_t data;
00026     uint8_t data1;
00027     while(1) {
00028         if(state_show == 0) {
00029             pc.printf("************\n");
00030             pc.printf("   Menu   \n");
00031             pc.printf("************\n");
00032             pc.printf("1.Show number in 7segment\n");
00033             pc.printf("2.Read VR");
00034             state_show =1;
00035         }
00036 
00037 
00038         if(pc.readable()) { // คำสั่งดูว่ามีอะไรส่งมาไหม ถ้ามีก็จะเริ่มเข้าคำสั่ง
00039             data = pc.getc(); // pc.getc คือรับค่าที่เราพิมพ์ใน serial monitor
00040             pc.printf("***************\n");
00041             state_show =0;
00042             state_exit =0;
00043 
00044             switch(data) {
00045                 case '1':
00046                     do {
00047                         if(state_menu == 0) {
00048                             pc.printf("Plz Enter number 0-9\n");
00049                             pc.printf("x.Exit\n");
00050                             state_menu = 1;
00051                         }
00052 
00053                         if(pc.readable()) {
00054 
00055                             if(state_ser==0) {
00056                                 ser.printf("Request 1 accept? \n");
00057                                 ser.printf("accept : y \n ");
00058                                 state_ser=1;
00059                             }
00060 
00061                             if(ser.readable()) {
00062                                 data1 = ser.getc();
00063                                 if(data1=='y') {
00064                                     data = pc.getc();
00065                                     switch(data) {
00066                                         case '0':
00067                                             ser.printf("Show number 0 in 7segment \n");
00068                                             m1(0);
00069                                             state_ser=0;
00070                                             break;
00071 
00072                                         case '1':
00073                                             ser.printf("Show number 1 in 7segment \n");
00074                                             m1(1);
00075                                             state_ser=0;
00076                                             break;
00077 
00078                                         case '2':
00079                                             ser.printf("Show number 2 in 7segment \n");
00080                                             m1(2);
00081                                             state_ser=0;
00082                                             break;
00083 
00084                                         case '3':
00085                                             ser.printf("Show number 3 in 7segment \n");
00086                                             m1(3);
00087                                             state_ser=0;
00088                                             break;
00089 
00090                                         case '4':
00091                                             ser.printf("Show number 4 in 7segment \n");
00092                                             m1(4);
00093                                             state_ser=0;
00094                                             break;
00095 
00096                                         case '5':
00097                                             ser.printf("Show number 5 in 7segment \n");
00098                                             m1(5);
00099                                             state_ser=0;
00100                                             break;
00101 
00102                                         case '6':
00103                                             ser.printf("Show number 6 in 7segment \n");
00104                                             m1(6);
00105                                             state_ser=0;
00106                                             break;
00107 
00108                                         case '7':
00109                                             ser.printf("Show number 7 in 7segment \n");
00110                                             m1(7);
00111                                             state_ser=0;
00112                                             break;
00113 
00114                                         case '8':
00115                                             ser.printf("Show number 8 in 7segment \n");
00116                                             m1(8);
00117                                             state_ser=0;
00118                                             break;
00119 
00120                                         case '9':
00121                                             ser.printf("Show number 9 in 7segment \n");
00122                                             m1(9);
00123                                             state_ser=0;
00124                                             break;
00125 
00126                                         case 'x':
00127                                             pc.printf("*****************\n back to menu \n");
00128                                             state_exit =1;
00129                                             state_ser=0;
00130                                             break;
00131 
00132                                         default:
00133                                             pc.printf("plz select number 0-9  or x\n");
00134                                             pc.printf("\n");
00135                                             state_ser=0;
00136                                             break;
00137                                     }
00138                                 } else {
00139                                     state_menu=0;
00140                                     state_ser=0;
00141                                 }
00142                             }
00143                         }
00144                     } while(state_exit ==0);
00145                     pc.printf("\n");
00146                     break;
00147                 case '2':
00148                     do {
00149                         if(state_menu == 0) {
00150                             pc.printf("a.Show analog input\n");
00151                             pc.printf("x.Exit\n");
00152                             state_menu = 1;
00153                         }
00154                         if(pc.readable()) {
00155 
00156                             if(state_ser==0) {
00157                                 ser.printf("Request 2 accept? \n");
00158                                 ser.printf("accept : y \n ");
00159                                 state_ser=1;
00160                             }
00161 
00162                             if(ser.readable()) {
00163                                 data1 = ser.getc();
00164                                 if(data1=='y') {
00165                                     data=pc.getc();
00166                                     switch(data) {
00167                                         case 'a':
00168                                             float meas_r = analog_value.read();
00169                                             meas_r*=3.3;
00170                                             pc.printf("%0.2f\n",meas_r);
00171                                             state_ser=0;
00172                                             break;
00173                                         case 'x':
00174                                             ser.printf("back to menu \n");
00175                                             state_exit =1;
00176                                             state_ser=0;
00177                                             break;
00178                                         default:
00179                                             pc.printf("plz select a or x\n");
00180                                             pc.printf("\n");
00181                                             state_ser=0;
00182                                             break;
00183                                     }
00184                                 } else {
00185                                     state_menu=0;
00186                                     state_ser=0;
00187                                 }
00188                             }
00189                         }
00190                     } while(state_exit ==0);
00191                     pc.printf("\n");
00192                     break;
00193 
00194 
00195 
00196                     /*                            switch(data) {
00197 
00198                                                     case 'a': {
00199                                                         ser.printf("Request 2 accept? \n");
00200                                                         if(ser.readable()) {
00201                                                             data1=ser.getc();
00202                                                             if(data1=='y') {
00203                                                                 float meas_r = analog_value.read();
00204                                                                 meas_r*=3.3;
00205                                                                 pc.printf("%0.2f\n",meas_r);
00206                                                                 break;
00207                                                             } else {
00208                                                                 break;
00209                                                             }
00210                                                         }
00211 
00212                                                         break;
00213 
00214                                                     }
00215                                                     case 'x': {
00216                                                         state_exit =1;
00217                                                         break;
00218                                                     }
00219                                                     default: {
00220                                                         pc.printf("plz select a or x \n");
00221                                                         pc.printf("\n");
00222                                                         break;
00223                                                     }
00224                                                 }*/
00225 
00226                     // pc.printf("kkkkk\n");
00227 
00228                 default:
00229                     pc.printf("plz select 1 or 2 \n");
00230                     pc.printf("\n");
00231                     state_ser=0;
00232                     break;
00233             }
00234 
00235 
00236         }
00237 
00238     }
00239 
00240 }
00241 
00242