Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 }
Generated on Tue Aug 2 2022 07:35:24 by
1.7.2