059,062

Dependencies:   mbed

Revision:
0:681bc2aada6f
Child:
1:974e31e928ce
diff -r 000000000000 -r 681bc2aada6f main.cpp
--- /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;
+    }
+}