ok

Dependencies:   mbed

Fork of 00_01LAB_matrix8x8_fig_tetris by ferney alberto beltran molina

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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     }