Emmanuel DE LEON / Matricre
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Matrice.cpp Source File

Matrice.cpp

00001 #include "Matrice.h"
00002 
00003 Matrice ::~Matrice(){
00004    if (_spi) delete _spi; // destruction de l'objet SPI
00005    if (_cs) delete _cs;
00006    // delete les carres while matrice
00007 }
00008 
00009 Matrice::Matrice()
00010 {
00011 _spi=NULL;
00012 _cs=NULL;
00013 state=false;
00014  for ( int i =0; i<=64;i++)
00015       {
00016           buffer[i]= 0x00;
00017       } 
00018       
00019 for (int row = 0; row <= 3; row++)
00020     {
00021         for (int col=0; col <= 3; col++)
00022         {
00023           matrice1[row][col]=NULL;
00024         }
00025     }
00026 }
00027 
00028 Matrice::Matrice(SPI * spi,DigitalOut *cs ){ // Constructeur avec la liason SPI 
00029    for ( int i =0; i<=64;i++)
00030       {
00031           buffer[i]= 0x00;
00032       } 
00033       
00034 for (int row = 0; row <= 3; row++)
00035     {
00036         for (int col=0; col <= 3; col++)
00037         {
00038           matrice1[row][col]=NULL;
00039         }
00040     }
00041   beginSPI(spi, cs);
00042   
00043 }
00044 
00045 
00046  void Matrice::ajoutCarre(char x, char y, int couleur)
00047 {
00048  if (x<=3 || y<=3)
00049   {
00050       if ( matrice1[x][y]) delete (matrice1[x][y]);
00051       matrice1[x][y] =  new Carre(couleur); 
00052   }
00053 }
00054 
00055 void Matrice::supprimerCarre(char x, char y)
00056 {
00057   if (matrice1[x][y]!=NULL)
00058   {
00059   delete (matrice1[x][y]);
00060   matrice1[x][y] = NULL;
00061   }
00062 }
00063 
00064 void Matrice::setDispo()
00065 {
00066  for (int row = 0; row <= 3; row++)
00067     {
00068         for (int col=0; col <= 3; col++)
00069         {
00070           if (matrice1 [row][col]==NULL) matricedispo[row][col] = 0;
00071           else matricedispo[row][col] = 1;
00072         }
00073     }
00074 
00075 }
00076 
00077 
00078 void Matrice::ajoutCarreAleatroire()
00079 {
00080   int y;
00081   int x;
00082   int couleur;
00083   couleur = rand()%1;
00084 
00085 do {
00086   y=rand()%3;
00087   x=rand()%3;
00088  }
00089  while(matrice1[x][y]!= NULL);
00090  
00091  matrice1[x][y] = new Carre(couleur); 
00092 }
00093 
00094 void Matrice::matricetobuffer()
00095 {
00096 int position=0; 
00097                
00098 for (int row = 0; row <= 3; row++)
00099     {
00100         for (int col=0; col <= 3; col++)
00101         {
00102           if (matrice1[row][col]!=NULL)
00103           {
00104              ajoutCarretobuffer(position,matrice1[row][col]->getCouleur()) ;
00105           }
00106           position=position+1;
00107         }
00108     }
00109 
00110     
00111 }
00112 
00113 
00114 void Matrice::beginSPI( SPI * spi, DigitalOut *cs){
00115        state=false;
00116        if (_spi) delete _spi; // on verifie qu'une liason spi n'existe pas déja 
00117        _spi=spi;  
00118        if (_cs)delete _cs;//Creation du Chip Select/ 
00119         _cs=cs;      
00120        if (_spi && _cs)
00121        { 
00122         state = true; // Etat de la liason SPI
00123         _spi->format(8); // 8 bits de données 
00124         _spi->frequency(100000); // frequence 10khz -> Max 125khz
00125         _cs->write(1); // CS/ a 1)
00126         }
00127     
00128    }
00129   
00130 void Matrice::ecrireMatrice()
00131 {
00132     matricetobuffer();
00133     if (state == true)
00134     {
00135     // Select the device by seting chip select low
00136        _cs->write(0);
00137 
00138     wait_ms(1);
00139     //Ecriture des 64 leds
00140     for ( int i =0; i<=64;i++)
00141     {
00142        _spi->write(buffer[i]);
00143      }
00144    wait_ms(1);
00145     // Remontee de CS/
00146     _cs->write(1);
00147     }   
00148 }
00149 
00150 void Matrice::ajoutCarretobuffer (int position,int couleur)
00151 {
00152   switch(position) {
00153     case 0 : 
00154             // dessin du carre
00155             buffer[0]= couleur;
00156             buffer[1]= couleur;
00157             buffer[8]= couleur;
00158             buffer[9]= couleur;          
00159              break;       
00160     case 1 :  
00161             buffer[2]= couleur;
00162             buffer[3]= couleur;
00163             buffer[10]= couleur;
00164             buffer[11]= couleur;                 
00165             break;     
00166               
00167     case 2 : 
00168             buffer[4]= couleur;
00169             buffer[5]= couleur;
00170             buffer[12]= couleur;
00171             buffer[13]= couleur;
00172              break;    
00173        
00174     case 3 : 
00175             buffer[6]= couleur;
00176             buffer[7]= couleur;
00177             buffer[14]= couleur;
00178             buffer[15]= couleur;
00179              break;        
00180              
00181      case 4 : 
00182             buffer[16]= couleur;
00183             buffer[17]= couleur;
00184             buffer[24]= couleur;
00185             buffer[25]= couleur;
00186              break; 
00187      case 5 : 
00188             buffer[18]= couleur;
00189             buffer[19]= couleur;
00190             buffer[26]= couleur;
00191             buffer[27]= couleur;
00192              break; 
00193      
00194      case 6 : 
00195             buffer[20]= couleur;
00196             buffer[21]= couleur;
00197             buffer[28]= couleur;
00198             buffer[29]= couleur;
00199              break; 
00200              
00201      case 7 :    
00202             buffer[22]= couleur;
00203             buffer[23]= couleur;
00204             buffer[30]= couleur;
00205             buffer[31]= couleur;
00206              break; 
00207              
00208     case 8 :    
00209             buffer[32]= couleur;
00210             buffer[33]= couleur;
00211             buffer[40]= couleur;
00212             buffer[41]= couleur;
00213              break;         
00214     
00215      
00216        case 9 :  
00217             buffer[34]= couleur;
00218             buffer[35]= couleur;
00219             buffer[42]= couleur;
00220             buffer[43]= couleur;
00221              break;         
00222     
00223      
00224       
00225       case 10 :   
00226             buffer[36]= couleur;
00227             buffer[37]= couleur;
00228             buffer[44]= couleur;
00229             buffer[45]= couleur;
00230              break;         
00231     
00232      
00233        case 11 :     
00234             buffer[38]= couleur;
00235             buffer[39]= couleur;
00236             buffer[46]= couleur;
00237             buffer[47]= couleur;
00238              break;    
00239              
00240          case 12 : 
00241             buffer[48]= couleur;
00242             buffer[49]= couleur;
00243             buffer[56]= couleur;
00244             buffer[57]= couleur;
00245              break;  
00246              
00247          case 13 :     
00248             buffer[50]= couleur;
00249             buffer[51]= couleur;
00250             buffer[58]= couleur;
00251             buffer[59]= couleur;
00252              break;  
00253                   
00254          case 14 :   
00255             buffer[52]= couleur;
00256             buffer[53]= couleur;
00257             buffer[60]= couleur;
00258             buffer[61]= couleur;
00259              break;            
00260      
00261        case 15 :     
00262             buffer[54]= couleur;
00263             buffer[55]= couleur;
00264             buffer[62]= couleur;
00265             buffer[63]= couleur;
00266              break;            
00267      
00268  }
00269     
00270 
00271 }