123
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Tue Jul 26 2022 18:16:12 by
1.7.2