059,062
Dependencies: mbed
main.cpp
00001 #include "mbed.h" 00002 #include <math.h> 00003 00004 00005 SPI My_SPI(D11,D12,D13); 00006 DigitalOut cs(D10); 00007 00008 00009 AnalogIn Analog_in(A5); 00010 00011 Serial pc(PA_11,PA_12); 00012 //Serial pc(PA_2,PA_3); 00013 00014 void Point_Smile(int); 00015 00016 int main() 00017 { 00018 My_SPI.frequency(100000); 00019 My_SPI.format(8,0); 00020 00021 uint8_t state_show=0; 00022 uint8_t data_a[5]={ '0','0','0','0','0' },data='0'; 00023 int Colum[4]={0x00,0x00,0x00,0x00},Colum_level[4]={0x00,0x00,0x00,0x00},i=0,point=0; 00024 int data_level[4]={ 0,0,0,0 },data_b[4]={ 0,0,0,0 }; 00025 float data_point[4],data_poi=0,analog_read=0; 00026 cs=0; 00027 My_SPI.write(0xFF); //R 00028 My_SPI.write(0xFF); //G 00029 My_SPI.write(0xFF); //B 00030 My_SPI.write(0x00); //row 00031 cs=1; 00032 00033 while (1) 00034 { 00035 if (state_show==0) 00036 { 00037 pc.printf("Menu\n"); 00038 pc.printf("1.Set Colum 1\n"); 00039 pc.printf("2.Set Colum 2\n"); 00040 pc.printf("3.Set Colum 3\n"); 00041 pc.printf("4.Set Colum 4\n"); 00042 pc.printf("5.Send command\n"); 00043 state_show=1; 00044 } 00045 00046 if(pc.readable()) 00047 { 00048 data = pc.getc(); 00049 pc.printf("\n"); 00050 if (data=='1') 00051 { 00052 pc.printf("Select level sound Put 1-4\n"); 00053 while (data == '1') 00054 { 00055 data_a[0] = pc.getc(); 00056 00057 if( data_a[0]=='1' || data_a[0]=='2' || data_a[0]=='3' || data_a[0]=='4' ) 00058 { 00059 data = '0'; 00060 state_show=0; 00061 } 00062 else 00063 { 00064 pc.printf("Error Please Put 1-4\n"); 00065 } 00066 } 00067 } 00068 00069 else if (data=='2') 00070 { 00071 pc.printf("Select level sound Put 1-4\n"); 00072 while (data == '2') 00073 { 00074 data_a[1] = pc.getc(); 00075 00076 if( data_a[1]=='1' || data_a[1]=='2' || data_a[1]=='3' || data_a[1]=='4' ) 00077 { 00078 data = '0'; 00079 state_show=0; 00080 } 00081 else 00082 { 00083 pc.printf("Error Please Put 1-4\n"); 00084 } 00085 } 00086 } 00087 00088 else if (data=='3') 00089 { 00090 pc.printf("Select level sound Put 1-4\n"); 00091 while (data == '3') 00092 { 00093 data_a[2] = pc.getc(); 00094 00095 if( data_a[2]=='1' || data_a[2]=='2' || data_a[2]=='3' || data_a[2]=='4' ) 00096 { 00097 data = '0'; 00098 state_show=0; 00099 } 00100 else 00101 { 00102 pc.printf("Error Please Put 1-4\n"); 00103 } 00104 } 00105 } 00106 00107 else if (data=='4') 00108 { 00109 pc.printf("Select level sound Put 1-4\n"); 00110 while (data == '4') 00111 { 00112 data_a[3] = pc.getc(); 00113 00114 if( data_a[3]=='1' || data_a[3]=='2' || data_a[3]=='3' || data_a[3]=='4' ) 00115 { 00116 data = '0'; 00117 state_show=0; 00118 } 00119 else 00120 { 00121 pc.printf("Error Please Put 1-4\n"); 00122 } 00123 } 00124 } 00125 00126 else if (data=='5') 00127 { 00128 00129 if ( data_a[0]=='0' || data_a[1]=='0' || data_a[2]=='0' || data_a[3]=='0') 00130 { 00131 pc.printf("Please Set All Colum \n"); 00132 data = '0'; 00133 state_show=0; 00134 } 00135 00136 else 00137 { 00138 //แสดงไฟตามค่า(ส่งค่าไป) 00139 00140 for(i=0;i<4;i++) 00141 { 00142 if (data_a[i]=='1') 00143 { Colum[i]=0xC0; 00144 data_b[i]=1; 00145 } 00146 else if (data_a[i]=='2') 00147 { 00148 Colum[i]=0xF0; 00149 data_b[i]=2; 00150 } 00151 else if (data_a[i]=='3') 00152 { 00153 Colum[i]=0xFC; 00154 data_b[i]=3; 00155 } 00156 else if (data_a[i]=='4') 00157 { 00158 Colum[i]=0xFF; 00159 data_b[i]=4; 00160 } 00161 } 00162 00163 for( i=0; i<10000; i++) 00164 { 00165 cs=0; 00166 My_SPI.write(0xFC); //R 00167 My_SPI.write(0xFF); //G 00168 My_SPI.write(0xFF); //B 00169 My_SPI.write(Colum[0]); //row 00170 cs=1; 00171 00172 cs=0; 00173 My_SPI.write(0xF3); //R 00174 My_SPI.write(0xFF); //G 00175 My_SPI.write(0xFF); //B 00176 My_SPI.write(Colum[1]); //row 00177 cs=1; 00178 00179 cs=0; 00180 My_SPI.write(0xCF); //R 00181 My_SPI.write(0xFF); //G 00182 My_SPI.write(0xFF); //B 00183 My_SPI.write(Colum[2]); //row 00184 cs=1; 00185 00186 cs=0; 00187 My_SPI.write(0x3F); //R 00188 My_SPI.write(0xFF); //G 00189 My_SPI.write(0xFF); //B 00190 My_SPI.write(Colum[3]); //row 00191 cs=1; 00192 00193 wait(0.0001f); 00194 } 00195 cs=0; 00196 My_SPI.write(0xFF); //R 00197 My_SPI.write(0xFF); //G 00198 My_SPI.write(0xFF); //B 00199 My_SPI.write(0x00); //row 00200 cs=1; 00201 00202 //การเก็บค่าและคำนวนคะแนน เสียง 3วิ7500 00203 for( i=0; i<1500; i++) 00204 { 00205 cs=0; 00206 My_SPI.write(0xFC); //R 00207 My_SPI.write(0xFF); //G 00208 My_SPI.write(0xFF); //B 00209 My_SPI.write(Colum[0]); //row 00210 cs=1; 00211 //เก็บค่าเสียง 00212 if(i==1000) 00213 { 00214 analog_read=Analog_in.read(); 00215 analog_read=analog_read*4; 00216 } 00217 wait(0.001); 00218 } 00219 //คำนวนคะแนนว่าได้ระดับไหน(1-4) 00220 if(analog_read>0.1 && analog_read<=1.2) 00221 data_level[0]=1; 00222 else if(analog_read>1.2 && analog_read<=2.3) 00223 data_level[0]=2; 00224 else if(analog_read>2.3 && analog_read<=3.6) 00225 data_level[0]=3; 00226 else if(analog_read>3.6 && analog_read<=4) 00227 data_level[0]=4; 00228 00229 cs=0; 00230 My_SPI.write(0xFF); //R 00231 My_SPI.write(0xFF); //G 00232 My_SPI.write(0xFF); //B 00233 My_SPI.write(0x00); //row 00234 cs=1; 00235 00236 for( i=0; i<1500; i++) 00237 { 00238 cs=0; 00239 My_SPI.write(0xF3); //R 00240 My_SPI.write(0xFF); //G 00241 My_SPI.write(0xFF); //B 00242 My_SPI.write(Colum[1]); //row 00243 cs=1; 00244 //เก็บค่าเสียง 00245 if(i==1000) 00246 { 00247 analog_read=Analog_in.read(); 00248 analog_read=analog_read*4; 00249 } 00250 wait(0.001); 00251 } 00252 //คำนวนคะแนนว่าได้ระดับไหน(1-4) 00253 if(analog_read>0.1 && analog_read<=1.2) 00254 data_level[1]=1; 00255 else if(analog_read>1.2 && analog_read<=2.3) 00256 data_level[1]=2; 00257 else if(analog_read>2.3 && analog_read<=3.6) 00258 data_level[1]=3; 00259 else if(analog_read>3.6 && analog_read<=4) 00260 data_level[1]=4; 00261 00262 cs=0; 00263 My_SPI.write(0xFF); //R 00264 My_SPI.write(0xFF); //G 00265 My_SPI.write(0xFF); //B 00266 My_SPI.write(0x00); //row 00267 cs=1; 00268 00269 for( i=0; i<1500; i++) 00270 { 00271 cs=0; 00272 My_SPI.write(0xCF); //R 00273 My_SPI.write(0xFF); //G 00274 My_SPI.write(0xFF); //B 00275 My_SPI.write(Colum[2]); //row 00276 cs=1; 00277 //เก็บค่าเสียง 00278 if(i==1000) 00279 { 00280 analog_read=Analog_in.read(); 00281 analog_read=analog_read*4; 00282 } 00283 wait(0.001); 00284 } 00285 //คำนวนคะแนนว่าได้ระดับไหน(1-4) 00286 if(analog_read>0.1 && analog_read<=1.2) 00287 data_level[2]=1; 00288 else if(analog_read>1.2 && analog_read<=2.3) 00289 data_level[2]=2; 00290 else if(analog_read>2.3 && analog_read<=3.6) 00291 data_level[2]=3; 00292 else if(analog_read>3.6 && analog_read<=4) 00293 data_level[2]=4; 00294 00295 cs=0; 00296 My_SPI.write(0xFF); //R 00297 My_SPI.write(0xFF); //G 00298 My_SPI.write(0xFF); //B 00299 My_SPI.write(0x00); //row 00300 cs=1; 00301 00302 for( i=0; i<1500; i++) 00303 { 00304 cs=0; 00305 My_SPI.write(0x3F); //R 00306 My_SPI.write(0xFF); //G 00307 My_SPI.write(0xFF); //B 00308 My_SPI.write(Colum[3]); //row 00309 cs=1; 00310 //เก็บค่าเสียง 00311 if(i==1000) 00312 { 00313 analog_read=Analog_in.read(); 00314 analog_read=analog_read*4; 00315 } 00316 wait(0.001); 00317 } 00318 //คำนวนคะแนนว่าได้ระดับไหน(1-4) 00319 if(analog_read>0.1 && analog_read<=1.2) 00320 data_level[3]=1; 00321 else if(analog_read>1.2 && analog_read<=2.3) 00322 data_level[3]=2; 00323 else if(analog_read>2.3 && analog_read<=3.6) 00324 data_level[3]=3; 00325 else if(analog_read>3.6 && analog_read<=4) 00326 data_level[3]=4; 00327 00328 cs=0; 00329 My_SPI.write(0xFF); //R 00330 My_SPI.write(0xFF); //G 00331 My_SPI.write(0xFF); //B 00332 My_SPI.write(0x00); //row 00333 cs=1; 00334 00335 00336 00337 00338 00339 00340 00341 00342 //เรียกฟังชันแสดงค่าไฟตามคะแนนที่ได้ 00343 00344 for(i=0;i<4;i++) 00345 { 00346 if (data_level[i]==1) 00347 {Colum_level[i]=0xC0;} 00348 else if (data_level[i]==2) 00349 {Colum_level[i]=0xF0;} 00350 else if (data_level[i]==3) 00351 {Colum_level[i]=0xFC;} 00352 else if (data_level[i]==4) 00353 {Colum_level[i]=0xFF;} 00354 } 00355 00356 for( i=0; i<10000; i++) 00357 { 00358 cs=0; 00359 My_SPI.write(0xFC); //R 00360 My_SPI.write(0xFF); //G 00361 My_SPI.write(0xFF); //B 00362 My_SPI.write(Colum_level[0]); //row 00363 cs=1; 00364 00365 cs=0; 00366 My_SPI.write(0xF3); //R 00367 My_SPI.write(0xFF); //G 00368 My_SPI.write(0xFF); //B 00369 My_SPI.write(Colum_level[1]); //row 00370 cs=1; 00371 00372 cs=0; 00373 My_SPI.write(0xCF); //R 00374 My_SPI.write(0xFF); //G 00375 My_SPI.write(0xFF); //B 00376 My_SPI.write(Colum_level[2]); //row 00377 cs=1; 00378 00379 cs=0; 00380 My_SPI.write(0x3F); //R 00381 My_SPI.write(0xFF); //G 00382 My_SPI.write(0xFF); //B 00383 My_SPI.write(Colum_level[3]); //row 00384 cs=1; 00385 00386 wait(0.0001f); 00387 } 00388 cs=0; 00389 My_SPI.write(0xFF); //R 00390 My_SPI.write(0xFF); //G 00391 My_SPI.write(0xFF); //B 00392 My_SPI.write(0x00); //row 00393 cs=1; 00394 00395 00396 00397 //คำนวนคะแนนรวม 00398 for(i=0;i<4;i++) 00399 { 00400 if(data_level[i]<=data_b[i]) 00401 { 00402 data_point[i]=(data_level[i]*100)/data_b[i]; 00403 } 00404 else if(data_level[i]>data_b[i]) 00405 { 00406 data_point[i]=((data_b[i]-(data_level[i]-data_b[i]))*100)/data_b[i]; 00407 } 00408 data_poi=data_poi+data_point[i]; 00409 } 00410 point=((data_poi/4)*5)/100; 00411 Point_Smile(point); 00412 00413 //ฟังก์ชันแสดงหน้ายิ้มจากคะแนรวม 00414 data_poi=0; 00415 data = '0'; 00416 state_show=0; 00417 } 00418 00419 00420 00421 00422 00423 } 00424 00425 00426 } 00427 00428 00429 } 00430 } 00431 00432 00433 00434 00435 void Point_Smile(int point) 00436 { 00437 if(point==0 || point<0) 00438 { 00439 for(int i=0; i<15000; i++) 00440 { 00441 cs=0; 00442 My_SPI.write(0xDB); //R 00443 My_SPI.write(0xFF); //G 00444 My_SPI.write(0xFF); //B 00445 My_SPI.write(0x04); //row 00446 cs=1; 00447 00448 cs=0; 00449 My_SPI.write(0xBD); //R 00450 My_SPI.write(0xBD); //G 00451 My_SPI.write(0xBD); //B 00452 My_SPI.write(0x08); //row 00453 cs=1; 00454 00455 cs=0; 00456 My_SPI.write(0xC3); //R 00457 My_SPI.write(0xFF); //G 00458 My_SPI.write(0xFF); //B 00459 My_SPI.write(0x20); //row 00460 cs=1; 00461 00462 cs=0; 00463 My_SPI.write(0xBD); //R 00464 My_SPI.write(0xFF); //G 00465 My_SPI.write(0xFF); //B 00466 My_SPI.write(0x40); //row 00467 cs=1; 00468 00469 wait(0.0001f); 00470 } 00471 cs=0; 00472 My_SPI.write(0xFF); //R 00473 My_SPI.write(0xFF); //G 00474 My_SPI.write(0xFF); //B 00475 My_SPI.write(0x00); //row 00476 cs=1; 00477 } 00478 00479 else if(point==1) 00480 { 00481 for(int i=0; i<15000; i++) 00482 { 00483 cs=0; 00484 My_SPI.write(0xDB); //R 00485 My_SPI.write(0xFF); //G 00486 My_SPI.write(0xFF); //B 00487 My_SPI.write(0x04); //row 00488 cs=1; 00489 00490 cs=0; 00491 My_SPI.write(0xBD); //R 00492 My_SPI.write(0xBD); //G 00493 My_SPI.write(0xBD); //B 00494 My_SPI.write(0x08); //row 00495 cs=1; 00496 00497 cs=0; 00498 My_SPI.write(0xC3); //R 00499 My_SPI.write(0xFF); //G 00500 My_SPI.write(0xFF); //B 00501 My_SPI.write(0x20); //row 00502 cs=1; 00503 00504 cs=0; 00505 My_SPI.write(0xBD); //R 00506 My_SPI.write(0xFF); //G 00507 My_SPI.write(0xFF); //B 00508 My_SPI.write(0x40); //row 00509 cs=1; 00510 00511 wait(0.0001f); 00512 } 00513 cs=0; 00514 My_SPI.write(0xFF); //R 00515 My_SPI.write(0xFF); //G 00516 My_SPI.write(0xFF); //B 00517 My_SPI.write(0x00); //row 00518 cs=1; 00519 } 00520 00521 00522 else if(point==2) 00523 { 00524 for(int i=0; i<15000; i++) 00525 { 00526 cs=0; 00527 My_SPI.write(0xDB); //R 00528 My_SPI.write(0xDB); //G 00529 My_SPI.write(0xFF); //B 00530 My_SPI.write(0x04); //row 00531 cs=1; 00532 00533 cs=0; 00534 My_SPI.write(0xC3); //R 00535 My_SPI.write(0xC3); //G 00536 My_SPI.write(0xFF); //B 00537 My_SPI.write(0x20); //row 00538 cs=1; 00539 00540 cs=0; 00541 My_SPI.write(0xBD); //R 00542 My_SPI.write(0xBD); //G 00543 My_SPI.write(0xFF); //B 00544 My_SPI.write(0x40); //row 00545 cs=1; 00546 00547 wait(0.0001f); 00548 } 00549 cs=0; 00550 My_SPI.write(0xFF); //R 00551 My_SPI.write(0xFF); //G 00552 My_SPI.write(0xFF); //B 00553 My_SPI.write(0x00); //row 00554 cs=1; 00555 } 00556 00557 00558 else if(point==3) 00559 { 00560 for(int i=0; i<15000; i++) 00561 { 00562 cs=0; 00563 My_SPI.write(0xFF); //R 00564 My_SPI.write(0xFF); //G 00565 My_SPI.write(0xDB); //B 00566 My_SPI.write(0x04); //row 00567 cs=1; 00568 00569 cs=0; 00570 My_SPI.write(0xFF); //R 00571 My_SPI.write(0xFF); //G 00572 My_SPI.write(0x81); //B 00573 My_SPI.write(0x20); //row 00574 cs=1; 00575 00576 00577 00578 wait(0.0001f); 00579 } 00580 cs=0; 00581 My_SPI.write(0xFF); //R 00582 My_SPI.write(0xFF); //G 00583 My_SPI.write(0xFF); //B 00584 My_SPI.write(0x00); //row 00585 cs=1; 00586 } 00587 00588 else if(point==4) 00589 { 00590 for(int i=0; i<15000; i++) 00591 { 00592 cs=0; 00593 My_SPI.write(0xFF); //R 00594 My_SPI.write(0xDB); //G 00595 My_SPI.write(0xDB); //B 00596 My_SPI.write(0x04); //row 00597 cs=1; 00598 00599 cs=0; 00600 My_SPI.write(0xFF); //R 00601 My_SPI.write(0xBD); //G 00602 My_SPI.write(0xBD); //B 00603 My_SPI.write(0x20); //row 00604 cs=1; 00605 00606 cs=0; 00607 My_SPI.write(0xFF); //R 00608 My_SPI.write(0xC3); //G 00609 My_SPI.write(0xC3); //B 00610 My_SPI.write(0x40); //row 00611 cs=1; 00612 00613 wait(0.0001f); 00614 } 00615 cs=0; 00616 My_SPI.write(0xFF); //R 00617 My_SPI.write(0xFF); //G 00618 My_SPI.write(0xFF); //B 00619 My_SPI.write(0x00); //row 00620 cs=1; 00621 } 00622 00623 else if(point==5) 00624 { 00625 for(int i=0; i<15000; i++) 00626 { 00627 cs=0; 00628 My_SPI.write(0xFF); //R 00629 My_SPI.write(0xDB); //G 00630 My_SPI.write(0xFF); //B 00631 My_SPI.write(0x04); //row 00632 cs=1; 00633 00634 cs=0; 00635 My_SPI.write(0xFF); //R 00636 My_SPI.write(0x81); //G 00637 My_SPI.write(0xFF); //B 00638 My_SPI.write(0x20); //row 00639 cs=1; 00640 00641 cs=0; 00642 My_SPI.write(0xFF); //R 00643 My_SPI.write(0xC3); //G 00644 My_SPI.write(0xFF); //B 00645 My_SPI.write(0x40); //row 00646 cs=1; 00647 00648 wait(0.0001f); 00649 } 00650 cs=0; 00651 My_SPI.write(0xFF); //R 00652 My_SPI.write(0xFF); //G 00653 My_SPI.write(0xFF); //B 00654 My_SPI.write(0x00); //row 00655 cs=1; 00656 } 00657 }
Generated on Sat Jul 16 2022 23:51:37 by 1.7.2