059,062
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:681bc2aada6f
- Child:
- 1:974e31e928ce
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Dec 08 09:44:44 2015 +0000 @@ -0,0 +1,657 @@ +#include "mbed.h" +#include <math.h> + + +SPI My_SPI(D11,D12,D13); +DigitalOut cs(D10); + + +AnalogIn Analog_in(A5); + +//Serial pc(PA_11,PA_12); +Serial pc(PA_2,PA_3); + +void Point_Smile(int); + +int main() +{ + My_SPI.frequency(100000); + My_SPI.format(8,0); + + uint8_t state_show=0; + uint8_t data_a[5]={ '0','0','0','0','0' },data='0'; + int Colum[4]={0x00,0x00,0x00,0x00},Colum_level[4]={0x00,0x00,0x00,0x00},i=0,point=0; + int data_level[4]={ 0,0,0,0 },data_b[4]={ 0,0,0,0 }; + float data_point[4],data_poi=0,analog_read=0; + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + while (1) + { + if (state_show==0) + { + pc.printf("Menu\n"); + pc.printf("1.Set Colum 1\n"); + pc.printf("2.Set Colum 2\n"); + pc.printf("3.Set Colum 3\n"); + pc.printf("4.Set Colum 4\n"); + pc.printf("5.Send command\n"); + state_show=1; + } + + if(pc.readable()) + { + data = pc.getc(); + pc.printf("\n"); + if (data=='1') + { + pc.printf("Select level sound Put 1-4\n"); + while (data == '1') + { + data_a[0] = pc.getc(); + + if( data_a[0]=='1' || data_a[0]=='2' || data_a[0]=='3' || data_a[0]=='4' ) + { + data = '0'; + state_show=0; + } + else + { + pc.printf("Error Please Put 1-4\n"); + } + } + } + + else if (data=='2') + { + pc.printf("Select level sound Put 1-4\n"); + while (data == '2') + { + data_a[1] = pc.getc(); + + if( data_a[1]=='1' || data_a[1]=='2' || data_a[1]=='3' || data_a[1]=='4' ) + { + data = '0'; + state_show=0; + } + else + { + pc.printf("Error Please Put 1-4\n"); + } + } + } + + else if (data=='3') + { + pc.printf("Select level sound Put 1-4\n"); + while (data == '3') + { + data_a[2] = pc.getc(); + + if( data_a[2]=='1' || data_a[2]=='2' || data_a[2]=='3' || data_a[2]=='4' ) + { + data = '0'; + state_show=0; + } + else + { + pc.printf("Error Please Put 1-4\n"); + } + } + } + + else if (data=='4') + { + pc.printf("Select level sound Put 1-4\n"); + while (data == '4') + { + data_a[3] = pc.getc(); + + if( data_a[3]=='1' || data_a[3]=='2' || data_a[3]=='3' || data_a[3]=='4' ) + { + data = '0'; + state_show=0; + } + else + { + pc.printf("Error Please Put 1-4\n"); + } + } + } + + else if (data=='5') + { + + if ( data_a[0]=='0' || data_a[1]=='0' || data_a[2]=='0' || data_a[3]=='0') + { + pc.printf("Please Set All Colum \n"); + data = '0'; + state_show=0; + } + + else + { + //แสดงไฟตามค่า(ส่งค่าไป) + + for(i=0;i<4;i++) + { + if (data_a[i]=='1') + { Colum[i]=0xC0; + data_b[i]=1; + } + else if (data_a[i]=='2') + { + Colum[i]=0xF0; + data_b[i]=2; + } + else if (data_a[i]=='3') + { + Colum[i]=0xFC; + data_b[i]=3; + } + else if (data_a[i]=='4') + { + Colum[i]=0xFF; + data_b[i]=4; + } + } + + for( i=0; i<10000; i++) + { + cs=0; + My_SPI.write(0xFC); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[0]); //row + cs=1; + + cs=0; + My_SPI.write(0xF3); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[1]); //row + cs=1; + + cs=0; + My_SPI.write(0xCF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[2]); //row + cs=1; + + cs=0; + My_SPI.write(0x3F); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[3]); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + //การเก็บค่าและคำนวนคะแนน เสียง 3วิ7500 + for( i=0; i<1500; i++) + { + cs=0; + My_SPI.write(0xFC); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[0]); //row + cs=1; + //เก็บค่าเสียง + if(i==1000) + { + analog_read=Analog_in.read(); + analog_read=analog_read*4; + } + wait(0.001); + } + //คำนวนคะแนนว่าได้ระดับไหน(1-4) + if(analog_read>0.1 && analog_read<=1.2) + data_level[0]=1; + else if(analog_read>1.2 && analog_read<=2.3) + data_level[0]=2; + else if(analog_read>2.3 && analog_read<=3.6) + data_level[0]=3; + else if(analog_read>3.6 && analog_read<=4) + data_level[0]=4; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + for( i=0; i<1500; i++) + { + cs=0; + My_SPI.write(0xF3); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[1]); //row + cs=1; + //เก็บค่าเสียง + if(i==1000) + { + analog_read=Analog_in.read(); + analog_read=analog_read*4; + } + wait(0.001); + } + //คำนวนคะแนนว่าได้ระดับไหน(1-4) + if(analog_read>0.1 && analog_read<=1.2) + data_level[1]=1; + else if(analog_read>1.2 && analog_read<=2.3) + data_level[1]=2; + else if(analog_read>2.3 && analog_read<=3.6) + data_level[1]=3; + else if(analog_read>3.6 && analog_read<=4) + data_level[1]=4; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + for( i=0; i<1500; i++) + { + cs=0; + My_SPI.write(0xCF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[2]); //row + cs=1; + //เก็บค่าเสียง + if(i==1000) + { + analog_read=Analog_in.read(); + analog_read=analog_read*4; + } + wait(0.001); + } + //คำนวนคะแนนว่าได้ระดับไหน(1-4) + if(analog_read>0.1 && analog_read<=1.2) + data_level[2]=1; + else if(analog_read>1.2 && analog_read<=2.3) + data_level[2]=2; + else if(analog_read>2.3 && analog_read<=3.6) + data_level[2]=3; + else if(analog_read>3.6 && analog_read<=4) + data_level[2]=4; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + for( i=0; i<1500; i++) + { + cs=0; + My_SPI.write(0x3F); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum[3]); //row + cs=1; + //เก็บค่าเสียง + if(i==1000) + { + analog_read=Analog_in.read(); + analog_read=analog_read*4; + } + wait(0.001); + } + //คำนวนคะแนนว่าได้ระดับไหน(1-4) + if(analog_read>0.1 && analog_read<=1.2) + data_level[3]=1; + else if(analog_read>1.2 && analog_read<=2.3) + data_level[3]=2; + else if(analog_read>2.3 && analog_read<=3.6) + data_level[3]=3; + else if(analog_read>3.6 && analog_read<=4) + data_level[3]=4; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + + + + + + + + //เรียกฟังชันแสดงค่าไฟตามคะแนนที่ได้ + + for(i=0;i<4;i++) + { + if (data_level[i]==1) + {Colum_level[i]=0xC0;} + else if (data_level[i]==2) + {Colum_level[i]=0xF0;} + else if (data_level[i]==3) + {Colum_level[i]=0xFC;} + else if (data_level[i]==4) + {Colum_level[i]=0xFF;} + } + + for( i=0; i<10000; i++) + { + cs=0; + My_SPI.write(0xFC); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum_level[0]); //row + cs=1; + + cs=0; + My_SPI.write(0xF3); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum_level[1]); //row + cs=1; + + cs=0; + My_SPI.write(0xCF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum_level[2]); //row + cs=1; + + cs=0; + My_SPI.write(0x3F); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(Colum_level[3]); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + + + + //คำนวนคะแนนรวม + for(i=0;i<4;i++) + { + if(data_level[i]<=data_b[i]) + { + data_point[i]=(data_level[i]*100)/data_b[i]; + } + else if(data_level[i]>data_b[i]) + { + data_point[i]=((data_b[i]-(data_level[i]-data_b[i]))*100)/data_b[i]; + } + data_poi=data_poi+data_point[i]; + } + point=((data_poi/4)*5)/100; + Point_Smile(point); + + //ฟังก์ชันแสดงหน้ายิ้มจากคะแนรวม + data_poi=0; + data = '0'; + state_show=0; + } + + + + + + } + + + } + + + } +} + + + + +void Point_Smile(int point) +{ + if(point==0 || point<0) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xDB); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xBD); //R + My_SPI.write(0xBD); //G + My_SPI.write(0xBD); //B + My_SPI.write(0x08); //row + cs=1; + + cs=0; + My_SPI.write(0xC3); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x20); //row + cs=1; + + cs=0; + My_SPI.write(0xBD); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x40); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } + + else if(point==1) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xDB); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xBD); //R + My_SPI.write(0xBD); //G + My_SPI.write(0xBD); //B + My_SPI.write(0x08); //row + cs=1; + + cs=0; + My_SPI.write(0xC3); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x20); //row + cs=1; + + cs=0; + My_SPI.write(0xBD); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x40); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } + + + else if(point==2) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xDB); //R + My_SPI.write(0xDB); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xC3); //R + My_SPI.write(0xC3); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x20); //row + cs=1; + + cs=0; + My_SPI.write(0xBD); //R + My_SPI.write(0xBD); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x40); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } + + + else if(point==3) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xDB); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0x81); //B + My_SPI.write(0x20); //row + cs=1; + + + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } + + else if(point==4) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xDB); //G + My_SPI.write(0xDB); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xBD); //G + My_SPI.write(0xBD); //B + My_SPI.write(0x20); //row + cs=1; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xC3); //G + My_SPI.write(0xC3); //B + My_SPI.write(0x40); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } + + else if(point==5) + { + for(int i=0; i<15000; i++) + { + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xDB); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x04); //row + cs=1; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0x81); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x20); //row + cs=1; + + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xC3); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x40); //row + cs=1; + + wait(0.0001f); + } + cs=0; + My_SPI.write(0xFF); //R + My_SPI.write(0xFF); //G + My_SPI.write(0xFF); //B + My_SPI.write(0x00); //row + cs=1; + } +}