ok
Fork of 00_01LAB_matrix8x8_fig_tetris by
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 00002 #include "mbed.h" 00003 #include "figuras.h" 00004 00005 SPI deviceM(PB_15, PB_14, PB_13); 00006 DigitalOut ssel (PB_12); 00007 Serial command(USBTX, USBRX); 00008 00009 #define DEBUG 1 00010 #define VELOCITY 1000 // ms 00011 00012 00013 00014 uint8_t matrix_act[8]={0,0,0,0,0,0,0,0}; 00015 uint8_t matrix_tmp[11]={0b00000000,0b00000000,0b00000000,0,0,0,0,0,0,0}; 00016 00017 00018 void sendSPI(uint8_t d1, uint8_t d2) 00019 { 00020 deviceM.unlock(); 00021 ssel=0; 00022 deviceM.write(d1); 00023 deviceM.write(d2); 00024 ssel=1; 00025 deviceM.lock(); 00026 }; 00027 00028 00029 00030 00031 void debug_m(char *s , ... ){ 00032 #if DEBUG 00033 command.printf(s); 00034 #endif 00035 } 00036 00037 void printMatrix(uint8_t* vC) 00038 00039 { 00040 uint8_t i =0; 00041 for (i=1;i<9;i++){ 00042 sendSPI(i,*(vC+i-1)); 00043 } 00044 00045 } 00046 00047 00048 void init_display(){ 00049 sendSPI(0x0c,1); 00050 sendSPI(0x0b,7); 00051 sendSPI(0x09,0); 00052 sendSPI(0x0A,0x0E); 00053 printMatrix(matrix_act); 00054 int i; 00055 for (i=0;i<4;i++){ 00056 sendSPI(0x0F,1); 00057 wait (0.2); 00058 sendSPI(0x0f,0); 00059 wait (0.2); 00060 } 00061 } 00062 00063 00064 00065 00066 void act_matrix(uint8_t* mascara){ 00067 for (int i=0; i<8;i++) 00068 matrix_act[i]= ( *(mascara+i)); 00069 00070 } 00071 void copy_matrix(uint8_t* m2, char col){ 00072 00073 for (int i=0; i<11;i++){ 00074 matrix_tmp[i]= (*(m2+i)>>col); 00075 } 00076 } 00077 00078 00079 void new_read(){ 00080 00081 char ini=command.getc(); 00082 char tf=command.getc(); 00083 char ang=command.getc(); 00084 char col=command.getc(); 00085 char fin=command.getc(); 00086 if(ini==0x3C && fin==0x3E) 00087 { 00088 switch (tf) { 00089 case L_TYPE: 00090 switch (ang) 00091 { case NOVEN: 00092 copy_matrix(FIG_L1); 00093 break; 00094 case ZERO: 00095 copy_matrix(FIG_L); 00096 break ; 00097 case PII: 00098 copy_matrix(FIG_L2); 00099 break; 00100 case DOSSE: 00101 copy_matrix(FIG_L3); 00102 break; 00103 } 00104 break ; 00105 case S_TYPE: 00106 switch (ang) 00107 { case NOVEN: 00108 copy_matrix(FIG_S1); 00109 break; 00110 case ZERO: 00111 copy_matrix(FIG_S); 00112 break ; 00113 case PII: 00114 copy_matrix(FIG_S2); 00115 break; 00116 case DOSSE: 00117 copy_matrix(FIG_S3); 00118 break; 00119 } 00120 break ; 00121 case I_TYPE: 00122 switch (ang) 00123 { case NOVEN: 00124 copy_matrix(FIG_I1); 00125 break; 00126 case ZERO: 00127 copy_matrix(FIG_I); 00128 break ; 00129 case PII: 00130 copy_matrix(FIG_I2); 00131 break; 00132 case DOSSE: 00133 copy_matrix(FIG_I3); 00134 break; 00135 } 00136 break ; 00137 case C_TYPE: 00138 copy_matrix(FIG_C); 00139 break ; 00140 case T_TYPE: 00141 switch (ang) 00142 { case NOVEN: 00143 copy_matrix(FIG_T1); 00144 break; 00145 case ZERO: 00146 copy_matrix(FIG_T); 00147 break ; 00148 case PII: 00149 copy_matrix(FIG_T2); 00150 break; 00151 case DOSSE: 00152 copy_matrix(FIG_T3); 00153 break; 00154 } 00155 break; 00156 default: 00157 copy_matrix(FIG_NULL); 00158 break; 00159 } 00160 } 00161 else 00162 {} 00163 } 00164 //desplazamiento horizontal 00165 void desplazar_fila(){ 00166 for (int i=0; i<8;i++) 00167 matrix_tmp[i]= matrix_tmp[i]>>1; 00168 00169 } 00170 00171 00172 int main() { 00173 init_display(); 00174 while(1){ 00175 new_read(); 00176 for(int i=0;i<8;i++){ 00177 desplazar_fila(); 00178 act_matrix(matrix_tmp); 00179 printMatrix(matrix_act); 00180 wait_ms(VELOCITY); 00181 } 00182 } 00183 }
Generated on Sat Aug 6 2022 17:19:59 by
1.7.2
