
Programa de MIP
Dependencies: bloques ball mbed WS2812 PixelArray tsi_sensor TSI bloque MMA8451Q
main.cpp@21:88d30cb63bc1, 2021-05-27 (annotated)
- Committer:
- aarmdlr
- Date:
- Thu May 27 18:45:43 2021 +0000
- Revision:
- 21:88d30cb63bc1
- Parent:
- 20:6f5f486bd5c3
- Child:
- 22:5743b7c91da4
color changed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
anna_dot | 0:eb102efc70ff | 1 | #include "mbed.h" |
anna_dot | 0:eb102efc70ff | 2 | #include "WS2812.h" |
anna_dot | 0:eb102efc70ff | 3 | #include "PixelArray.h" |
anna_dot | 0:eb102efc70ff | 4 | #include "TSISensor.h" |
anna_dot | 0:eb102efc70ff | 5 | #include "MMA8451Q.h" |
anna_dot | 9:777b0535d3bb | 6 | #include "ball.h" |
anna_dot | 13:3d207bd7f387 | 7 | #include "bloques.h" |
anna_dot | 0:eb102efc70ff | 8 | |
anna_dot | 0:eb102efc70ff | 9 | #define WS2812_BUF 256 |
anna_dot | 0:eb102efc70ff | 10 | #define NUM_COLORS 6 |
anna_dot | 0:eb102efc70ff | 11 | #define NUM_LEDS_PER_COLOR 10 |
anna_dot | 0:eb102efc70ff | 12 | #define NUM_LEDS_BARRA 4 |
anna_dot | 0:eb102efc70ff | 13 | #define ACCEL_ADRESS_I2C (0X1D<<1) |
anna_dot | 19:e57116ff4c59 | 14 | |
anna_dot | 19:e57116ff4c59 | 15 | |
anna_dot | 0:eb102efc70ff | 16 | |
anna_dot | 0:eb102efc70ff | 17 | PixelArray px(WS2812_BUF); |
anna_dot | 0:eb102efc70ff | 18 | |
anna_dot | 0:eb102efc70ff | 19 | // See the program page for information on the timing numbers |
anna_dot | 0:eb102efc70ff | 20 | // The given numbers are for the K64F |
anna_dot | 19:e57116ff4c59 | 21 | WS2812 wsLEDS(D9, WS2812_BUF, 0, 5, 5, 0); |
anna_dot | 4:3f515bbfd20c | 22 | MMA8451Q acc(PTE25, PTE24, ACCEL_ADRESS_I2C ); |
anna_dot | 4:3f515bbfd20c | 23 | |
anna_dot | 4:3f515bbfd20c | 24 | /////// |
anna_dot | 4:3f515bbfd20c | 25 | Serial pc(USBTX, USBRX); |
anna_dot | 4:3f515bbfd20c | 26 | ////// |
anna_dot | 0:eb102efc70ff | 27 | |
anna_dot | 0:eb102efc70ff | 28 | TSISensor tsi; |
anna_dot | 0:eb102efc70ff | 29 | int barra[NUM_LEDS_BARRA]={6,7,8,9}; |
anna_dot | 0:eb102efc70ff | 30 | float tsi_oldRead=0; |
anna_dot | 0:eb102efc70ff | 31 | int counter_tsi=0; |
anna_dot | 4:3f515bbfd20c | 32 | int posAcelerometerTemp, posAcelerometer=0, posAcelerometerOLD=0, posAcelerometerOLD1=0, contadorReboteA=0; |
aarmdlr | 7:59efb2d370b3 | 33 | int posSliderTouchTemp, posSliderTouch=0, posSliderTouchOLD=0, posSliderTouchOLD1=0, contadorRebote=0; |
anna_dot | 9:777b0535d3bb | 34 | ball m_ball; |
anna_dot | 10:dccb2be41fbd | 35 | bool direct_ball=0; |
anna_dot | 10:dccb2be41fbd | 36 | Ticker refresh_ball; |
anna_dot | 13:3d207bd7f387 | 37 | bloques Bloques; |
anna_dot | 19:e57116ff4c59 | 38 | Ticker refresh_bloques; |
aarmdlr | 20:6f5f486bd5c3 | 39 | Ticker refresh_InfoMode; |
anna_dot | 19:e57116ff4c59 | 40 | int cont_ball_rebote=0; |
aarmdlr | 20:6f5f486bd5c3 | 41 | bool settedMode=false; |
aarmdlr | 12:f9060e568ff9 | 42 | int angle=1; |
aarmdlr | 12:f9060e568ff9 | 43 | bool lose=false; |
aarmdlr | 20:6f5f486bd5c3 | 44 | int sel_opcio=0; |
aarmdlr | 20:6f5f486bd5c3 | 45 | int contModePrintInfo=0; |
anna_dot | 9:777b0535d3bb | 46 | |
anna_dot | 0:eb102efc70ff | 47 | void update_barra(int led_apagar, int led_encender, int act_barra ); |
anna_dot | 0:eb102efc70ff | 48 | void tsi_ctr_modeBtn(float tsi_newRead); |
aarmdlr | 7:59efb2d370b3 | 49 | void tsi_ctr_modeSlider(float tsi_newRead); |
anna_dot | 4:3f515bbfd20c | 50 | void accel_ctr(); |
anna_dot | 13:3d207bd7f387 | 51 | void print_pixel(uint8_t valR, uint8_t valG, uint8_t valB, int numPixelMatrix_i, int numPixelMatrix_j, int numPixelMatrixOLD_i, int numPixelMatrixOLD_j, uint8_t size=1); |
anna_dot | 9:777b0535d3bb | 52 | void setPixelColor(int numPixelMatrix, int r, int g, int b); |
anna_dot | 10:dccb2be41fbd | 53 | void ctr_ball(); |
anna_dot | 19:e57116ff4c59 | 54 | void clear_matrix(int offset); |
anna_dot | 13:3d207bd7f387 | 55 | void angle_rebote(); |
anna_dot | 19:e57116ff4c59 | 56 | bool addLineOfBloques(); |
aarmdlr | 20:6f5f486bd5c3 | 57 | void printBtnMode(); |
aarmdlr | 20:6f5f486bd5c3 | 58 | void printSliderMode(); |
aarmdlr | 20:6f5f486bd5c3 | 59 | void printAccelMode(); |
aarmdlr | 20:6f5f486bd5c3 | 60 | void cyclePrintModeInfo(); |
aarmdlr | 20:6f5f486bd5c3 | 61 | |
anna_dot | 0:eb102efc70ff | 62 | |
anna_dot | 0:eb102efc70ff | 63 | int main() |
aarmdlr | 12:f9060e568ff9 | 64 | { |
aarmdlr | 20:6f5f486bd5c3 | 65 | |
anna_dot | 4:3f515bbfd20c | 66 | pc.baud(115200); |
anna_dot | 4:3f515bbfd20c | 67 | pc.printf("\r\n\r\nHola!\r\ncompilado el " __DATE__ ", " __TIME__ "\r\n"); |
anna_dot | 4:3f515bbfd20c | 68 | |
anna_dot | 19:e57116ff4c59 | 69 | wsLEDS.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling |
aarmdlr | 20:6f5f486bd5c3 | 70 | |
aarmdlr | 21:88d30cb63bc1 | 71 | cyclePrintModeInfo(); |
aarmdlr | 20:6f5f486bd5c3 | 72 | refresh_InfoMode.attach(&cyclePrintModeInfo,4.0); |
aarmdlr | 20:6f5f486bd5c3 | 73 | |
aarmdlr | 20:6f5f486bd5c3 | 74 | while(settedMode==false){ |
aarmdlr | 20:6f5f486bd5c3 | 75 | float tsi_readTemp=tsi.readPercentage(); |
aarmdlr | 20:6f5f486bd5c3 | 76 | pc.printf("\r\n Touch %d", tsi_readTemp); |
aarmdlr | 20:6f5f486bd5c3 | 77 | if(tsi_readTemp!=0.0){ |
aarmdlr | 20:6f5f486bd5c3 | 78 | if(tsi_readTemp>0.01 and tsi_readTemp<0.33){ |
aarmdlr | 20:6f5f486bd5c3 | 79 | sel_opcio=0; |
aarmdlr | 20:6f5f486bd5c3 | 80 | settedMode=true; |
aarmdlr | 20:6f5f486bd5c3 | 81 | }else if(tsi_readTemp>=0.33 and tsi_readTemp<=0.66){ |
aarmdlr | 20:6f5f486bd5c3 | 82 | sel_opcio=1; |
aarmdlr | 20:6f5f486bd5c3 | 83 | settedMode=true; |
aarmdlr | 20:6f5f486bd5c3 | 84 | }else if(tsi_readTemp>0.66 and tsi_readTemp<=1.00){ |
aarmdlr | 20:6f5f486bd5c3 | 85 | sel_opcio=2; |
aarmdlr | 20:6f5f486bd5c3 | 86 | settedMode=true; |
aarmdlr | 20:6f5f486bd5c3 | 87 | } |
aarmdlr | 20:6f5f486bd5c3 | 88 | } |
aarmdlr | 20:6f5f486bd5c3 | 89 | } |
aarmdlr | 20:6f5f486bd5c3 | 90 | |
aarmdlr | 20:6f5f486bd5c3 | 91 | refresh_InfoMode.detach(); |
aarmdlr | 20:6f5f486bd5c3 | 92 | clear_matrix(0); |
aarmdlr | 20:6f5f486bd5c3 | 93 | |
aarmdlr | 20:6f5f486bd5c3 | 94 | |
anna_dot | 13:3d207bd7f387 | 95 | for(int i=0; i<Bloques.getNumBloques(); i++){ |
anna_dot | 13:3d207bd7f387 | 96 | bloque temp_blq=Bloques.getBloque(i); |
anna_dot | 13:3d207bd7f387 | 97 | print_pixel(temp_blq.getColR(),temp_blq.getColG(),temp_blq.getColB(), temp_blq.getCoordX(),temp_blq.getCoordY(), -1, -1, temp_blq.getSize()); |
anna_dot | 13:3d207bd7f387 | 98 | } |
anna_dot | 19:e57116ff4c59 | 99 | |
anna_dot | 0:eb102efc70ff | 100 | for(int i=0; i<NUM_LEDS_BARRA; i++){ |
anna_dot | 0:eb102efc70ff | 101 | px.Set(barra[i], 0x2f0000); |
anna_dot | 0:eb102efc70ff | 102 | } |
anna_dot | 9:777b0535d3bb | 103 | |
anna_dot | 0:eb102efc70ff | 104 | for(int i=0; i<NUM_LEDS_BARRA; i++){ |
anna_dot | 8:9e69e576d1be | 105 | px.SetI(barra[i]%WS2812_BUF, 255); //0xff |
anna_dot | 8:9e69e576d1be | 106 | } |
anna_dot | 0:eb102efc70ff | 107 | |
anna_dot | 9:777b0535d3bb | 108 | print_pixel(255, 255, 255, m_ball.getCoordX(), m_ball.getCoordY(),-1,-1); |
anna_dot | 19:e57116ff4c59 | 109 | wsLEDS.write(px.getBuf()); |
anna_dot | 10:dccb2be41fbd | 110 | |
anna_dot | 19:e57116ff4c59 | 111 | refresh_ball.attach(&ctr_ball, 0.1); |
anna_dot | 19:e57116ff4c59 | 112 | //refresh_bloques.attach(&addLineOfBloques, 7); |
aarmdlr | 20:6f5f486bd5c3 | 113 | |
aarmdlr | 20:6f5f486bd5c3 | 114 | |
aarmdlr | 20:6f5f486bd5c3 | 115 | |
aarmdlr | 20:6f5f486bd5c3 | 116 | |
aarmdlr | 20:6f5f486bd5c3 | 117 | while (settedMode==true) { |
anna_dot | 6:0004357c1faa | 118 | if(sel_opcio==0){ |
anna_dot | 6:0004357c1faa | 119 | tsi_ctr_modeBtn(tsi.readPercentage()); |
anna_dot | 6:0004357c1faa | 120 | } |
anna_dot | 6:0004357c1faa | 121 | else{ |
anna_dot | 6:0004357c1faa | 122 | if(sel_opcio==1){ |
aarmdlr | 7:59efb2d370b3 | 123 | tsi_ctr_modeSlider(tsi.readPercentage()); |
anna_dot | 6:0004357c1faa | 124 | } |
anna_dot | 6:0004357c1faa | 125 | else if(sel_opcio==2){ |
anna_dot | 6:0004357c1faa | 126 | accel_ctr(); |
anna_dot | 6:0004357c1faa | 127 | } |
anna_dot | 6:0004357c1faa | 128 | } |
anna_dot | 10:dccb2be41fbd | 129 | //pc.printf("\r\n Touch %d", (rand()%(9-6 + 1) + 6)); |
anna_dot | 9:777b0535d3bb | 130 | |
anna_dot | 0:eb102efc70ff | 131 | } |
anna_dot | 10:dccb2be41fbd | 132 | |
anna_dot | 0:eb102efc70ff | 133 | } |
anna_dot | 0:eb102efc70ff | 134 | |
anna_dot | 0:eb102efc70ff | 135 | void tsi_ctr_modeBtn(float tsi_newRead){ |
anna_dot | 0:eb102efc70ff | 136 | |
anna_dot | 0:eb102efc70ff | 137 | if(tsi_newRead!=0.0){ |
anna_dot | 0:eb102efc70ff | 138 | if(tsi_newRead>0.6 and tsi_oldRead>0.6){ |
anna_dot | 0:eb102efc70ff | 139 | counter_tsi++; |
anna_dot | 0:eb102efc70ff | 140 | } |
anna_dot | 0:eb102efc70ff | 141 | else { |
anna_dot | 0:eb102efc70ff | 142 | if(tsi_newRead<0.4 and tsi_oldRead<0.4){ |
anna_dot | 0:eb102efc70ff | 143 | counter_tsi++; |
anna_dot | 0:eb102efc70ff | 144 | } |
anna_dot | 0:eb102efc70ff | 145 | else{ |
anna_dot | 0:eb102efc70ff | 146 | counter_tsi=0; |
anna_dot | 0:eb102efc70ff | 147 | } |
anna_dot | 0:eb102efc70ff | 148 | } |
anna_dot | 0:eb102efc70ff | 149 | tsi_oldRead=tsi_newRead; |
anna_dot | 0:eb102efc70ff | 150 | |
anna_dot | 0:eb102efc70ff | 151 | |
aarmdlr | 12:f9060e568ff9 | 152 | if(counter_tsi == 10450){ |
anna_dot | 0:eb102efc70ff | 153 | if( (tsi_newRead < 0.4) && tsi_newRead!=0 ){ //if left |
anna_dot | 0:eb102efc70ff | 154 | if(barra[0]>0){ |
anna_dot | 0:eb102efc70ff | 155 | update_barra((NUM_LEDS_BARRA-1),0, -1 ); |
anna_dot | 0:eb102efc70ff | 156 | } |
anna_dot | 0:eb102efc70ff | 157 | } |
anna_dot | 0:eb102efc70ff | 158 | else{ |
anna_dot | 0:eb102efc70ff | 159 | if(tsi_newRead > 0.6){ //if right |
anna_dot | 0:eb102efc70ff | 160 | if(barra[NUM_LEDS_BARRA-1]<15){ |
anna_dot | 0:eb102efc70ff | 161 | update_barra(0,(NUM_LEDS_BARRA-1), 1 ); |
anna_dot | 0:eb102efc70ff | 162 | } |
anna_dot | 0:eb102efc70ff | 163 | } |
anna_dot | 0:eb102efc70ff | 164 | } |
anna_dot | 0:eb102efc70ff | 165 | //control_tsi(tsi_newRead); |
anna_dot | 19:e57116ff4c59 | 166 | wsLEDS.write(px.getBuf()); |
anna_dot | 0:eb102efc70ff | 167 | counter_tsi=0; |
anna_dot | 0:eb102efc70ff | 168 | } |
anna_dot | 0:eb102efc70ff | 169 | } |
anna_dot | 0:eb102efc70ff | 170 | else{ |
anna_dot | 0:eb102efc70ff | 171 | counter_tsi=0; |
anna_dot | 0:eb102efc70ff | 172 | } |
anna_dot | 0:eb102efc70ff | 173 | |
anna_dot | 0:eb102efc70ff | 174 | |
anna_dot | 0:eb102efc70ff | 175 | //tsi_oldRead=tsi_newRead; |
anna_dot | 0:eb102efc70ff | 176 | } |
anna_dot | 0:eb102efc70ff | 177 | |
aarmdlr | 7:59efb2d370b3 | 178 | void tsi_ctr_modeSlider(float tsi_newRead){ |
aarmdlr | 7:59efb2d370b3 | 179 | //Multiplicamos lo que lee el tsi.readPercentage() por 100 para tener un porcentaje del 0 al 100% en lugar del 0 al 1 que devuelve dicha función tsi.readPercentage(). |
aarmdlr | 7:59efb2d370b3 | 180 | //Lo multiplicamos por 1.4 para obtener un ranto de entre 0 y 140. |
aarmdlr | 7:59efb2d370b3 | 181 | //Le restamos 70 para que el 50% leido por el tsi represente el 0, de esta forma ahora el rango es de -70 a +70. |
aarmdlr | 7:59efb2d370b3 | 182 | //Dividimos entre 10 para obtener unos valores entre -7 y +7 que son las posiciones que puede tomar la barra inferior si se trata de una barra de 4 pixeles como es el caso. |
aarmdlr | 7:59efb2d370b3 | 183 | posSliderTouchTemp=(((tsi_newRead*100)*1.4)-70)/10; |
aarmdlr | 7:59efb2d370b3 | 184 | |
aarmdlr | 7:59efb2d370b3 | 185 | //Controlamos que no se salga de las posiciones posibles de la barra inferior. |
aarmdlr | 7:59efb2d370b3 | 186 | if(posSliderTouchTemp>-7 and posSliderTouchTemp<7){ |
aarmdlr | 7:59efb2d370b3 | 187 | //pc.printf("\r\n Porcentaje=%d",posSliderTouchTemp); |
aarmdlr | 7:59efb2d370b3 | 188 | |
aarmdlr | 7:59efb2d370b3 | 189 | //Se controla los rebotes del TSI ya que sino da saltos, por eso se incrementa un contador cuando detecta una misma posicion mas de una vez seguida. |
aarmdlr | 7:59efb2d370b3 | 190 | if(posSliderTouchTemp==posSliderTouchOLD1){ |
aarmdlr | 7:59efb2d370b3 | 191 | contadorRebote=contadorRebote+1; |
aarmdlr | 7:59efb2d370b3 | 192 | }else{ |
aarmdlr | 7:59efb2d370b3 | 193 | contadorRebote=0; |
aarmdlr | 7:59efb2d370b3 | 194 | } |
aarmdlr | 7:59efb2d370b3 | 195 | posSliderTouchOLD1=posSliderTouchTemp; |
aarmdlr | 7:59efb2d370b3 | 196 | |
aarmdlr | 7:59efb2d370b3 | 197 | |
anna_dot | 13:3d207bd7f387 | 198 | if(contadorRebote>=140){ |
aarmdlr | 7:59efb2d370b3 | 199 | posSliderTouch=posSliderTouchTemp; |
aarmdlr | 7:59efb2d370b3 | 200 | } |
aarmdlr | 7:59efb2d370b3 | 201 | |
aarmdlr | 7:59efb2d370b3 | 202 | |
aarmdlr | 7:59efb2d370b3 | 203 | } |
aarmdlr | 7:59efb2d370b3 | 204 | |
aarmdlr | 7:59efb2d370b3 | 205 | if(posSliderTouch!=posSliderTouchOLD){ |
aarmdlr | 7:59efb2d370b3 | 206 | //Se suaviza el movimiento de la barra inferior para que de un efecto de scroll mas bonito y no tan brusco, |
aarmdlr | 7:59efb2d370b3 | 207 | //por eso se realiza un for para que pase por todas las posiciones hasta la posicoon de la barra objetivo. |
aarmdlr | 7:59efb2d370b3 | 208 | if(posSliderTouch>posSliderTouchOLD){ |
aarmdlr | 7:59efb2d370b3 | 209 | for(int p=posSliderTouchOLD; p<posSliderTouch; p++){ |
aarmdlr | 7:59efb2d370b3 | 210 | update_barra(0,(NUM_LEDS_BARRA-1), 1 ); //if rigth |
anna_dot | 19:e57116ff4c59 | 211 | wsLEDS.write(px.getBuf()); |
aarmdlr | 7:59efb2d370b3 | 212 | //printBar( 249, 0, 0, p); |
aarmdlr | 7:59efb2d370b3 | 213 | } |
aarmdlr | 7:59efb2d370b3 | 214 | }else if(posSliderTouch<posSliderTouchOLD){ |
aarmdlr | 7:59efb2d370b3 | 215 | for(int p=posSliderTouchOLD; p>posSliderTouch; p--){ |
aarmdlr | 7:59efb2d370b3 | 216 | update_barra((NUM_LEDS_BARRA-1), 0, -1 ); //if left |
anna_dot | 19:e57116ff4c59 | 217 | wsLEDS.write(px.getBuf()); |
aarmdlr | 7:59efb2d370b3 | 218 | //printBar( 249, 0, 0, p); |
aarmdlr | 7:59efb2d370b3 | 219 | } |
aarmdlr | 7:59efb2d370b3 | 220 | } |
aarmdlr | 7:59efb2d370b3 | 221 | posSliderTouchOLD=posSliderTouch; |
aarmdlr | 7:59efb2d370b3 | 222 | //pc.printf("\r\n Touch"); |
aarmdlr | 7:59efb2d370b3 | 223 | |
aarmdlr | 7:59efb2d370b3 | 224 | } |
aarmdlr | 7:59efb2d370b3 | 225 | |
aarmdlr | 7:59efb2d370b3 | 226 | } |
aarmdlr | 7:59efb2d370b3 | 227 | |
anna_dot | 9:777b0535d3bb | 228 | |
anna_dot | 0:eb102efc70ff | 229 | void update_barra(int led_apagar, int led_encender, int act_barra ){ |
anna_dot | 10:dccb2be41fbd | 230 | if(m_ball.getCoordX()!=0){ |
anna_dot | 10:dccb2be41fbd | 231 | px.Set(barra[led_apagar], 0x0); //apagamos el led |
anna_dot | 10:dccb2be41fbd | 232 | |
anna_dot | 10:dccb2be41fbd | 233 | for(int i=0; i<NUM_LEDS_BARRA; i++){ //actualizamos valor del array |
anna_dot | 10:dccb2be41fbd | 234 | barra[i]=barra[i]+act_barra; |
anna_dot | 15:706dd4761fbe | 235 | //pc.printf("\r\n UPDATEEE ------- =%d", barra[i]); |
anna_dot | 10:dccb2be41fbd | 236 | } |
anna_dot | 0:eb102efc70ff | 237 | |
anna_dot | 10:dccb2be41fbd | 238 | px.Set(barra[led_encender], 0x2f0000); //encendemos el siguiente led |
anna_dot | 10:dccb2be41fbd | 239 | px.SetI(barra[led_encender]%WS2812_BUF, 255); //0xff |
anna_dot | 10:dccb2be41fbd | 240 | //ctr_ball_barra(); |
anna_dot | 0:eb102efc70ff | 241 | } |
anna_dot | 0:eb102efc70ff | 242 | } |
anna_dot | 0:eb102efc70ff | 243 | |
anna_dot | 4:3f515bbfd20c | 244 | |
anna_dot | 4:3f515bbfd20c | 245 | void accel_ctr(){ |
anna_dot | 4:3f515bbfd20c | 246 | float nearest = floor(abs(((acc.getAccY()+1)*100)/2)); //para obtener un valor 0 y 100 |
anna_dot | 4:3f515bbfd20c | 247 | posAcelerometerTemp=(((nearest)*2.8)-140)/10; |
anna_dot | 4:3f515bbfd20c | 248 | //pc.printf("\r\n Porcentaje=%d",posAcelerometerTemp); |
anna_dot | 4:3f515bbfd20c | 249 | if(posAcelerometerTemp<=-7){ |
anna_dot | 4:3f515bbfd20c | 250 | posAcelerometerTemp=-6; |
anna_dot | 4:3f515bbfd20c | 251 | }else if(posAcelerometerTemp>=7){ |
anna_dot | 4:3f515bbfd20c | 252 | posAcelerometerTemp=6; |
anna_dot | 4:3f515bbfd20c | 253 | } |
anna_dot | 4:3f515bbfd20c | 254 | if(posAcelerometerTemp>-7 and posAcelerometerTemp<7){ |
anna_dot | 6:0004357c1faa | 255 | //pc.printf("\r\n Porcentaje=%d",posAcelerometerTemp); |
anna_dot | 4:3f515bbfd20c | 256 | //pc.printf("\r\n Ha entrat"); |
anna_dot | 4:3f515bbfd20c | 257 | if(posAcelerometerTemp==posAcelerometerOLD1){ |
anna_dot | 4:3f515bbfd20c | 258 | contadorReboteA=contadorReboteA+1; |
anna_dot | 4:3f515bbfd20c | 259 | }else{ |
anna_dot | 4:3f515bbfd20c | 260 | contadorReboteA=0; |
anna_dot | 4:3f515bbfd20c | 261 | } |
anna_dot | 4:3f515bbfd20c | 262 | posAcelerometerOLD1=posAcelerometerTemp; |
anna_dot | 13:3d207bd7f387 | 263 | if(contadorReboteA>=40){ |
anna_dot | 4:3f515bbfd20c | 264 | posAcelerometer=posAcelerometerTemp; |
anna_dot | 4:3f515bbfd20c | 265 | } |
anna_dot | 4:3f515bbfd20c | 266 | |
anna_dot | 4:3f515bbfd20c | 267 | } |
anna_dot | 4:3f515bbfd20c | 268 | if(posAcelerometer!=posAcelerometerOLD){ |
anna_dot | 4:3f515bbfd20c | 269 | if(posAcelerometer>posAcelerometerOLD){ |
anna_dot | 6:0004357c1faa | 270 | for(int p=posAcelerometerOLD; p<posAcelerometer; p++){ //movemos la barrita hasta la posición actual, mostrando la animación |
anna_dot | 6:0004357c1faa | 271 | update_barra(0,(NUM_LEDS_BARRA-1), 1 ); //if rigth |
anna_dot | 19:e57116ff4c59 | 272 | wsLEDS.write(px.getBuf()); |
anna_dot | 4:3f515bbfd20c | 273 | //pc.printf("\r\n HOLAAAA DRETA=%d",p); |
anna_dot | 4:3f515bbfd20c | 274 | |
anna_dot | 6:0004357c1faa | 275 | } |
anna_dot | 4:3f515bbfd20c | 276 | }else if(posAcelerometer<posAcelerometerOLD){ |
anna_dot | 6:0004357c1faa | 277 | //pc.printf("\r\n HOLAAAA ESQUERRA"); |
anna_dot | 6:0004357c1faa | 278 | for(int p=posAcelerometerOLD; p>posAcelerometer; p--){ |
anna_dot | 6:0004357c1faa | 279 | update_barra((NUM_LEDS_BARRA-1), 0, -1 ); //if left |
anna_dot | 19:e57116ff4c59 | 280 | wsLEDS.write(px.getBuf()); |
anna_dot | 6:0004357c1faa | 281 | //pc.printf("\r\n HOLAAAA ESQUERRA=%d",p); |
anna_dot | 4:3f515bbfd20c | 282 | |
anna_dot | 6:0004357c1faa | 283 | } |
anna_dot | 4:3f515bbfd20c | 284 | |
anna_dot | 4:3f515bbfd20c | 285 | } |
anna_dot | 4:3f515bbfd20c | 286 | |
anna_dot | 4:3f515bbfd20c | 287 | posAcelerometerOLD=posAcelerometer; |
anna_dot | 4:3f515bbfd20c | 288 | |
anna_dot | 4:3f515bbfd20c | 289 | //pc.printf("\r\n Acelerometer"); |
anna_dot | 4:3f515bbfd20c | 290 | } |
anna_dot | 0:eb102efc70ff | 291 | } |
anna_dot | 0:eb102efc70ff | 292 | |
anna_dot | 13:3d207bd7f387 | 293 | void print_pixel(uint8_t valR, uint8_t valG, uint8_t valB, int numPixelMatrix_i, int numPixelMatrix_j, int numPixelMatrixOLD_i, int numPixelMatrixOLD_j, uint8_t size) { |
anna_dot | 9:777b0535d3bb | 294 | |
anna_dot | 9:777b0535d3bb | 295 | //printf ("\r\nRGB=> %ld, %ld, %ld \r\n", valR, valG, valB); |
anna_dot | 9:777b0535d3bb | 296 | |
anna_dot | 9:777b0535d3bb | 297 | if(numPixelMatrixOLD_i!=-1 and numPixelMatrixOLD_j!=-1){ |
anna_dot | 13:3d207bd7f387 | 298 | for(int j=numPixelMatrixOLD_j; j<(numPixelMatrixOLD_j+size); j++){ |
anna_dot | 13:3d207bd7f387 | 299 | uint8_t numPixelMatrixOLD; |
anna_dot | 13:3d207bd7f387 | 300 | if(numPixelMatrixOLD_i%2==0){ |
anna_dot | 13:3d207bd7f387 | 301 | numPixelMatrixOLD=(numPixelMatrixOLD_i*16)+j; |
anna_dot | 13:3d207bd7f387 | 302 | }else{ |
anna_dot | 13:3d207bd7f387 | 303 | numPixelMatrixOLD=((numPixelMatrixOLD_i*16)+15)-j; |
anna_dot | 13:3d207bd7f387 | 304 | } |
anna_dot | 9:777b0535d3bb | 305 | |
anna_dot | 13:3d207bd7f387 | 306 | setPixelColor(numPixelMatrixOLD, 0, 0, 0); |
anna_dot | 13:3d207bd7f387 | 307 | |
anna_dot | 13:3d207bd7f387 | 308 | } |
anna_dot | 9:777b0535d3bb | 309 | } |
anna_dot | 13:3d207bd7f387 | 310 | if(numPixelMatrix_i!=-1 or numPixelMatrix_j!=-1){ |
anna_dot | 13:3d207bd7f387 | 311 | for(int j=numPixelMatrix_j; j<(numPixelMatrix_j+size); j++){ |
anna_dot | 13:3d207bd7f387 | 312 | uint8_t numPixelMatrix; |
anna_dot | 13:3d207bd7f387 | 313 | if(numPixelMatrix_i%2==0){ |
anna_dot | 13:3d207bd7f387 | 314 | numPixelMatrix=(numPixelMatrix_i*16)+j; |
anna_dot | 13:3d207bd7f387 | 315 | }else{ |
anna_dot | 13:3d207bd7f387 | 316 | numPixelMatrix=((numPixelMatrix_i*16)+15)-j; |
anna_dot | 13:3d207bd7f387 | 317 | } |
anna_dot | 13:3d207bd7f387 | 318 | |
anna_dot | 13:3d207bd7f387 | 319 | setPixelColor(numPixelMatrix, valR, valG, valB); |
anna_dot | 13:3d207bd7f387 | 320 | } |
anna_dot | 13:3d207bd7f387 | 321 | } |
anna_dot | 19:e57116ff4c59 | 322 | //wsLEDS.write(px.getBuf()); |
anna_dot | 9:777b0535d3bb | 323 | |
anna_dot | 9:777b0535d3bb | 324 | } |
anna_dot | 0:eb102efc70ff | 325 | |
anna_dot | 9:777b0535d3bb | 326 | void setPixelColor(int numPixelMatrix, int r, int g, int b){ |
anna_dot | 9:777b0535d3bb | 327 | px.SetI(numPixelMatrix,255); |
anna_dot | 9:777b0535d3bb | 328 | px.SetR(numPixelMatrix,r); |
anna_dot | 9:777b0535d3bb | 329 | px.SetG(numPixelMatrix,g); |
anna_dot | 9:777b0535d3bb | 330 | px.SetB(numPixelMatrix,b); |
anna_dot | 9:777b0535d3bb | 331 | } |
anna_dot | 9:777b0535d3bb | 332 | |
anna_dot | 10:dccb2be41fbd | 333 | void ctr_ball(){ |
anna_dot | 10:dccb2be41fbd | 334 | int old_i=m_ball.getCoordX(); |
anna_dot | 10:dccb2be41fbd | 335 | int old_j=m_ball.getCoordY(); |
anna_dot | 10:dccb2be41fbd | 336 | |
anna_dot | 10:dccb2be41fbd | 337 | bool found_barra=false; |
anna_dot | 10:dccb2be41fbd | 338 | int i=0; |
anna_dot | 11:4908defcd9d9 | 339 | if(old_i==15){ |
anna_dot | 16:eab9a8d27969 | 340 | //pc.printf("TECHO Angle ANTES REBOTE --> %d \r\n", angle); |
anna_dot | 11:4908defcd9d9 | 341 | direct_ball=!direct_ball; |
aarmdlr | 14:4adfd8e600fe | 342 | angle_rebote(); |
anna_dot | 16:eab9a8d27969 | 343 | //pc.printf("TECHO Angle DESPUES REBOTE --> %d \r\n", angle); |
anna_dot | 11:4908defcd9d9 | 344 | } |
anna_dot | 11:4908defcd9d9 | 345 | else{ |
anna_dot | 16:eab9a8d27969 | 346 | if( (old_j==15 or old_j==0) and (angle!=1)){ //and old_i!=1){ |
anna_dot | 16:eab9a8d27969 | 347 | //pc.printf("PAREEEED Angle ANTES REBOTE --> %d \r\n", angle); |
anna_dot | 13:3d207bd7f387 | 348 | angle_rebote(); |
anna_dot | 16:eab9a8d27969 | 349 | //pc.printf("PAREEEED Angle DESPUES REBOTE --> %d \r\n", angle); |
aarmdlr | 12:f9060e568ff9 | 350 | |
anna_dot | 16:eab9a8d27969 | 351 | }//else{ |
anna_dot | 19:e57116ff4c59 | 352 | int predict_Y=m_ball.predict_Y_axis(direct_ball, angle); //sino poner el barra |
anna_dot | 16:eab9a8d27969 | 353 | pc.printf("\r\n Coord X %d, Coord Y %d y predictY %d, angle %d, direction %d --> ",m_ball.getCoordX(), m_ball.getCoordY() , predict_Y, angle, direct_ball ); |
aarmdlr | 12:f9060e568ff9 | 354 | while(!found_barra and i<NUM_LEDS_BARRA){ |
aarmdlr | 14:4adfd8e600fe | 355 | if(barra[i]==predict_Y and old_i==1){ |
aarmdlr | 12:f9060e568ff9 | 356 | found_barra=true; |
aarmdlr | 12:f9060e568ff9 | 357 | direct_ball=!direct_ball; |
aarmdlr | 17:0ecf3108f79e | 358 | }//else{ |
aarmdlr | 17:0ecf3108f79e | 359 | i++; |
aarmdlr | 17:0ecf3108f79e | 360 | //} |
anna_dot | 11:4908defcd9d9 | 361 | } |
aarmdlr | 12:f9060e568ff9 | 362 | if(found_barra){ |
aarmdlr | 14:4adfd8e600fe | 363 | if(barra[0]==predict_Y){ |
aarmdlr | 12:f9060e568ff9 | 364 | angle=0; |
aarmdlr | 12:f9060e568ff9 | 365 | }else{ |
aarmdlr | 14:4adfd8e600fe | 366 | if(barra[3]==predict_Y){ |
aarmdlr | 12:f9060e568ff9 | 367 | angle=2; |
aarmdlr | 12:f9060e568ff9 | 368 | }else{ |
aarmdlr | 12:f9060e568ff9 | 369 | angle=1; |
aarmdlr | 12:f9060e568ff9 | 370 | } |
aarmdlr | 12:f9060e568ff9 | 371 | } |
anna_dot | 19:e57116ff4c59 | 372 | if(cont_ball_rebote==3){ |
anna_dot | 19:e57116ff4c59 | 373 | cont_ball_rebote=0; |
anna_dot | 19:e57116ff4c59 | 374 | lose=addLineOfBloques(); |
anna_dot | 19:e57116ff4c59 | 375 | |
anna_dot | 19:e57116ff4c59 | 376 | } |
anna_dot | 19:e57116ff4c59 | 377 | cont_ball_rebote++; |
aarmdlr | 12:f9060e568ff9 | 378 | }else if(old_i==0){ |
aarmdlr | 12:f9060e568ff9 | 379 | refresh_ball.detach(); |
anna_dot | 19:e57116ff4c59 | 380 | clear_matrix(0); |
anna_dot | 19:e57116ff4c59 | 381 | wsLEDS.write(px.getBuf()); |
aarmdlr | 12:f9060e568ff9 | 382 | lose=true; |
aarmdlr | 12:f9060e568ff9 | 383 | } |
aarmdlr | 12:f9060e568ff9 | 384 | |
anna_dot | 16:eab9a8d27969 | 385 | //} |
anna_dot | 11:4908defcd9d9 | 386 | } |
anna_dot | 13:3d207bd7f387 | 387 | |
anna_dot | 11:4908defcd9d9 | 388 | /*if((barra[0]==old_j or barra[1]==old_j or barra[2]==old_j or barra[3]==old_j) and old_i==1){ |
anna_dot | 11:4908defcd9d9 | 389 | direct_ball=!direct_ball; |
anna_dot | 10:dccb2be41fbd | 390 | }*/ |
anna_dot | 10:dccb2be41fbd | 391 | |
aarmdlr | 12:f9060e568ff9 | 392 | if(!lose){ |
anna_dot | 13:3d207bd7f387 | 393 | bool found_blq_i=false; |
anna_dot | 13:3d207bd7f387 | 394 | int i=0; |
anna_dot | 13:3d207bd7f387 | 395 | |
anna_dot | 19:e57116ff4c59 | 396 | |
anna_dot | 19:e57116ff4c59 | 397 | int next_CoordX; |
anna_dot | 19:e57116ff4c59 | 398 | if(direct_ball){ |
anna_dot | 19:e57116ff4c59 | 399 | next_CoordX=old_i+1; |
anna_dot | 19:e57116ff4c59 | 400 | }else if(!direct_ball){ |
anna_dot | 19:e57116ff4c59 | 401 | next_CoordX=old_i-1; |
anna_dot | 19:e57116ff4c59 | 402 | } |
anna_dot | 19:e57116ff4c59 | 403 | |
anna_dot | 13:3d207bd7f387 | 404 | while(!found_blq_i and i<Bloques.getNumBloques() ){ |
anna_dot | 13:3d207bd7f387 | 405 | bloque temp_blq=Bloques.getBloque(i); |
anna_dot | 19:e57116ff4c59 | 406 | if((temp_blq.getCoordX()==next_CoordX)){ |
anna_dot | 13:3d207bd7f387 | 407 | found_blq_i=true; |
anna_dot | 13:3d207bd7f387 | 408 | } |
anna_dot | 13:3d207bd7f387 | 409 | i++; |
anna_dot | 13:3d207bd7f387 | 410 | } |
anna_dot | 13:3d207bd7f387 | 411 | |
anna_dot | 13:3d207bd7f387 | 412 | bool found_blq_j=false; |
anna_dot | 13:3d207bd7f387 | 413 | int j=0; |
anna_dot | 13:3d207bd7f387 | 414 | if(found_blq_i){ |
anna_dot | 13:3d207bd7f387 | 415 | int predict_Y=m_ball.predict_Y_axis(direct_ball, angle); |
anna_dot | 16:eab9a8d27969 | 416 | //pc.printf("\r\n Coord X %d, Coord Y %d y predictY %d, angle %d, direction %d --> ",m_ball.getCoordX(), m_ball.getCoordY() , predict_Y, angle, direct_ball ); |
anna_dot | 13:3d207bd7f387 | 417 | while(!found_blq_j and j<Bloques.getNumBloques() ){ |
anna_dot | 13:3d207bd7f387 | 418 | bloque temp_blq=Bloques.getBloque(j); |
anna_dot | 13:3d207bd7f387 | 419 | int blq_pos_Y=(temp_blq.getCoordY()+temp_blq.getSize()); |
anna_dot | 19:e57116ff4c59 | 420 | |
anna_dot | 19:e57116ff4c59 | 421 | if((blq_pos_Y>predict_Y and predict_Y>=temp_blq.getCoordY()) and temp_blq.getCoordX()==next_CoordX){ //and temp_blq.getEnabled() |
anna_dot | 13:3d207bd7f387 | 422 | found_blq_j=true; |
anna_dot | 13:3d207bd7f387 | 423 | direct_ball=!direct_ball; |
anna_dot | 19:e57116ff4c59 | 424 | //angle_rebote(); |
anna_dot | 13:3d207bd7f387 | 425 | print_pixel(temp_blq.getColR(), temp_blq.getColG(), temp_blq.getColB(), -1, -1, temp_blq.getCoordX(), temp_blq.getCoordY(), temp_blq.getSize()); |
anna_dot | 19:e57116ff4c59 | 426 | wsLEDS.write(px.getBuf()); |
anna_dot | 13:3d207bd7f387 | 427 | Bloques.disable_blq(j); |
anna_dot | 15:706dd4761fbe | 428 | //pc.printf("BloqY %d, temp_bloq.CoordY %d y predictY %d --> %d", blq_pos_Y, temp_blq.getCoordY() , predict_Y ); |
anna_dot | 19:e57116ff4c59 | 429 | |
anna_dot | 19:e57116ff4c59 | 430 | if(!direct_ball){ |
anna_dot | 19:e57116ff4c59 | 431 | angle_rebote(); |
anna_dot | 19:e57116ff4c59 | 432 | }else{ |
aarmdlr | 20:6f5f486bd5c3 | 433 | //m_ball.setCoordX(next_CoordX); |
aarmdlr | 20:6f5f486bd5c3 | 434 | //m_ball.setCoordY(predict_Y); |
anna_dot | 19:e57116ff4c59 | 435 | } |
anna_dot | 13:3d207bd7f387 | 436 | } |
anna_dot | 13:3d207bd7f387 | 437 | j++; |
anna_dot | 13:3d207bd7f387 | 438 | } |
anna_dot | 13:3d207bd7f387 | 439 | } |
aarmdlr | 12:f9060e568ff9 | 440 | m_ball.movement(direct_ball, angle); |
aarmdlr | 12:f9060e568ff9 | 441 | print_pixel(255, 255, 255, m_ball.getCoordX(), m_ball.getCoordY(),old_i, old_j); |
anna_dot | 19:e57116ff4c59 | 442 | wsLEDS.write(px.getBuf()); |
aarmdlr | 12:f9060e568ff9 | 443 | } |
aarmdlr | 12:f9060e568ff9 | 444 | } |
aarmdlr | 12:f9060e568ff9 | 445 | |
anna_dot | 19:e57116ff4c59 | 446 | void clear_matrix(int offset){ |
anna_dot | 19:e57116ff4c59 | 447 | for(int i=offset; i<256; i++){ |
aarmdlr | 12:f9060e568ff9 | 448 | setPixelColor(i,0,0,0); |
aarmdlr | 12:f9060e568ff9 | 449 | } |
anna_dot | 19:e57116ff4c59 | 450 | |
anna_dot | 10:dccb2be41fbd | 451 | } |
anna_dot | 9:777b0535d3bb | 452 | |
anna_dot | 13:3d207bd7f387 | 453 | void angle_rebote(){ |
anna_dot | 13:3d207bd7f387 | 454 | if(angle==0){ |
anna_dot | 13:3d207bd7f387 | 455 | angle=2; |
anna_dot | 13:3d207bd7f387 | 456 | }else if(angle==2){ |
anna_dot | 13:3d207bd7f387 | 457 | angle=0; |
anna_dot | 13:3d207bd7f387 | 458 | } |
anna_dot | 13:3d207bd7f387 | 459 | } |
anna_dot | 9:777b0535d3bb | 460 | |
anna_dot | 19:e57116ff4c59 | 461 | bool addLineOfBloques(){ |
anna_dot | 19:e57116ff4c59 | 462 | |
anna_dot | 19:e57116ff4c59 | 463 | bool end_game=Bloques.addLineBloques(); |
anna_dot | 19:e57116ff4c59 | 464 | if(end_game){ |
anna_dot | 19:e57116ff4c59 | 465 | refresh_ball.detach(); |
anna_dot | 19:e57116ff4c59 | 466 | clear_matrix(0); |
anna_dot | 19:e57116ff4c59 | 467 | wsLEDS.write(px.getBuf()); |
anna_dot | 19:e57116ff4c59 | 468 | } |
anna_dot | 19:e57116ff4c59 | 469 | else{ |
anna_dot | 19:e57116ff4c59 | 470 | clear_matrix(32); |
anna_dot | 19:e57116ff4c59 | 471 | for(int i=0; i<Bloques.getNumBloques(); i++){ |
anna_dot | 19:e57116ff4c59 | 472 | bloque temp_blq=Bloques.getBloque(i); |
anna_dot | 19:e57116ff4c59 | 473 | print_pixel(temp_blq.getColR(),temp_blq.getColG(),temp_blq.getColB(), temp_blq.getCoordX(),temp_blq.getCoordY(), -1, -1, temp_blq.getSize()); |
anna_dot | 19:e57116ff4c59 | 474 | } |
anna_dot | 19:e57116ff4c59 | 475 | wsLEDS.write(px.getBuf()); |
anna_dot | 19:e57116ff4c59 | 476 | } |
anna_dot | 19:e57116ff4c59 | 477 | return end_game; |
anna_dot | 19:e57116ff4c59 | 478 | |
anna_dot | 19:e57116ff4c59 | 479 | } |
anna_dot | 19:e57116ff4c59 | 480 | |
aarmdlr | 20:6f5f486bd5c3 | 481 | void printBtnMode(){ |
aarmdlr | 20:6f5f486bd5c3 | 482 | |
aarmdlr | 20:6f5f486bd5c3 | 483 | //Base gris del mando |
aarmdlr | 20:6f5f486bd5c3 | 484 | for(int f=5; f<10; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 485 | for(int c=3; c<13; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 486 | print_pixel(199,200,205, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 487 | } |
aarmdlr | 20:6f5f486bd5c3 | 488 | } |
aarmdlr | 20:6f5f486bd5c3 | 489 | |
aarmdlr | 20:6f5f486bd5c3 | 490 | //Barra inferior posicionamiento a tocar |
aarmdlr | 20:6f5f486bd5c3 | 491 | for(int f=0; f<3; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 492 | for(int c=0; c<5; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 493 | print_pixel(0,255,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 494 | } |
aarmdlr | 20:6f5f486bd5c3 | 495 | for(int c=5; c<16; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 496 | print_pixel(255,0,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 497 | } |
aarmdlr | 20:6f5f486bd5c3 | 498 | } |
aarmdlr | 20:6f5f486bd5c3 | 499 | |
aarmdlr | 20:6f5f486bd5c3 | 500 | //Cruceta del mando (iquierda) |
aarmdlr | 20:6f5f486bd5c3 | 501 | print_pixel(20,20,20, 6,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 502 | print_pixel(20,20,20, 7,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 503 | print_pixel(20,20,20, 8,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 504 | print_pixel(20,20,20, 7,4, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 505 | print_pixel(20,20,20, 7,6, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 506 | |
aarmdlr | 20:6f5f486bd5c3 | 507 | //Botones del mando (derecha) |
aarmdlr | 20:6f5f486bd5c3 | 508 | print_pixel(224,180,44, 6,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 509 | print_pixel(32,139,87, 7,9, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 510 | print_pixel(189,26,26, 7,11, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 511 | print_pixel(22,70,177, 8,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 512 | |
aarmdlr | 20:6f5f486bd5c3 | 513 | //Letra L |
aarmdlr | 20:6f5f486bd5c3 | 514 | print_pixel(200,200,0, 11,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 515 | print_pixel(200,200,0, 11,4, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 516 | print_pixel(200,200,0, 11,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 517 | print_pixel(200,200,0, 12,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 518 | print_pixel(200,200,0, 13,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 519 | print_pixel(200,200,0, 14,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 520 | |
aarmdlr | 20:6f5f486bd5c3 | 521 | //Letra R |
aarmdlr | 20:6f5f486bd5c3 | 522 | print_pixel(200,200,0, 11,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 523 | print_pixel(200,200,0, 11,12, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 524 | print_pixel(200,200,0, 12,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 525 | print_pixel(200,200,0, 12,11, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 526 | print_pixel(200,200,0, 13,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 527 | print_pixel(200,200,0, 13,12, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 528 | print_pixel(200,200,0, 14,10, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 529 | print_pixel(200,200,0, 14,11, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 530 | print_pixel(200,200,0, 14,12, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 531 | |
aarmdlr | 20:6f5f486bd5c3 | 532 | wsLEDS.write(px.getBuf()); |
aarmdlr | 20:6f5f486bd5c3 | 533 | } |
aarmdlr | 20:6f5f486bd5c3 | 534 | |
aarmdlr | 20:6f5f486bd5c3 | 535 | void printSliderMode(){ |
aarmdlr | 20:6f5f486bd5c3 | 536 | |
aarmdlr | 20:6f5f486bd5c3 | 537 | //Base gris del slider |
aarmdlr | 20:6f5f486bd5c3 | 538 | for(int c=1; c<15; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 539 | print_pixel(255,255,255, 12,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 540 | } |
aarmdlr | 20:6f5f486bd5c3 | 541 | |
aarmdlr | 20:6f5f486bd5c3 | 542 | //Parte azul slider |
aarmdlr | 20:6f5f486bd5c3 | 543 | print_pixel(0,0,205, 11,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 544 | print_pixel(0,0,205, 12,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 545 | print_pixel(0,0,205, 13,5, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 546 | |
aarmdlr | 20:6f5f486bd5c3 | 547 | //flecha |
aarmdlr | 20:6f5f486bd5c3 | 548 | for(int c=1; c<15; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 549 | print_pixel(249,215,28, 7, c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 550 | } |
aarmdlr | 20:6f5f486bd5c3 | 551 | |
aarmdlr | 20:6f5f486bd5c3 | 552 | print_pixel(249,215,28, 8,2, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 553 | print_pixel(249,215,28, 9,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 554 | print_pixel(249,215,28, 6,2, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 555 | print_pixel(249,215,28, 5,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 556 | print_pixel(249,215,28, 8,13, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 557 | print_pixel(249,215,28, 9,12, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 558 | print_pixel(249,215,28, 6,13, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 559 | print_pixel(249,215,28, 5,12, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 560 | |
aarmdlr | 20:6f5f486bd5c3 | 561 | |
aarmdlr | 20:6f5f486bd5c3 | 562 | |
aarmdlr | 20:6f5f486bd5c3 | 563 | //Barra inferior posicionamiento a tocar |
aarmdlr | 20:6f5f486bd5c3 | 564 | for(int f=0; f<3; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 565 | for(int c=0; c<5; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 566 | print_pixel(255,0,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 567 | } |
aarmdlr | 20:6f5f486bd5c3 | 568 | for(int c=5; c<11; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 569 | print_pixel(0,255,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 570 | } |
aarmdlr | 20:6f5f486bd5c3 | 571 | for(int c=11; c<16; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 572 | print_pixel(255,0,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 573 | } |
aarmdlr | 20:6f5f486bd5c3 | 574 | } |
aarmdlr | 20:6f5f486bd5c3 | 575 | |
aarmdlr | 20:6f5f486bd5c3 | 576 | |
aarmdlr | 20:6f5f486bd5c3 | 577 | wsLEDS.write(px.getBuf()); |
aarmdlr | 20:6f5f486bd5c3 | 578 | } |
aarmdlr | 20:6f5f486bd5c3 | 579 | |
aarmdlr | 20:6f5f486bd5c3 | 580 | void printAccelMode(){ |
aarmdlr | 20:6f5f486bd5c3 | 581 | |
aarmdlr | 20:6f5f486bd5c3 | 582 | //Base gris de la placa acelerometro |
aarmdlr | 20:6f5f486bd5c3 | 583 | for(int f=6; f<14; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 584 | for(int c=11; c<16; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 585 | print_pixel(255,255,255, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 586 | } |
aarmdlr | 20:6f5f486bd5c3 | 587 | } |
aarmdlr | 20:6f5f486bd5c3 | 588 | |
aarmdlr | 20:6f5f486bd5c3 | 589 | //Parte interna placa |
aarmdlr | 20:6f5f486bd5c3 | 590 | for(int f=7; f<9; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 591 | for(int c=12; c<15; c++){ |
aarmdlr | 21:88d30cb63bc1 | 592 | print_pixel(30,30,30, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 593 | } |
aarmdlr | 20:6f5f486bd5c3 | 594 | } |
aarmdlr | 20:6f5f486bd5c3 | 595 | |
aarmdlr | 20:6f5f486bd5c3 | 596 | //flecha |
aarmdlr | 20:6f5f486bd5c3 | 597 | print_pixel(249,215,28, 6,4, -1, -1, 3); |
aarmdlr | 20:6f5f486bd5c3 | 598 | print_pixel(249,215,28, 7,1, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 599 | print_pixel(249,215,28, 7,3, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 600 | print_pixel(249,215,28, 7,7, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 601 | print_pixel(249,215,28, 7,9, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 602 | print_pixel(249,215,28, 8,1, -1, -1, 2); |
aarmdlr | 20:6f5f486bd5c3 | 603 | print_pixel(249,215,28, 8,8, -1, -1, 2); |
aarmdlr | 20:6f5f486bd5c3 | 604 | print_pixel(249,215,28, 9,1, -1, -1, 3); |
aarmdlr | 20:6f5f486bd5c3 | 605 | print_pixel(249,215,28, 9,7, -1, -1, 3); |
aarmdlr | 20:6f5f486bd5c3 | 606 | |
aarmdlr | 20:6f5f486bd5c3 | 607 | |
aarmdlr | 20:6f5f486bd5c3 | 608 | //Barra inferior posicionamiento a tocar |
aarmdlr | 20:6f5f486bd5c3 | 609 | for(int f=0; f<3; f++){ |
aarmdlr | 20:6f5f486bd5c3 | 610 | for(int c=0; c<11; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 611 | print_pixel(255,0,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 612 | } |
aarmdlr | 20:6f5f486bd5c3 | 613 | for(int c=11; c<16; c++){ |
aarmdlr | 20:6f5f486bd5c3 | 614 | print_pixel(0,255,0, f,c, -1, -1); |
aarmdlr | 20:6f5f486bd5c3 | 615 | } |
aarmdlr | 20:6f5f486bd5c3 | 616 | } |
aarmdlr | 20:6f5f486bd5c3 | 617 | |
aarmdlr | 20:6f5f486bd5c3 | 618 | |
aarmdlr | 20:6f5f486bd5c3 | 619 | wsLEDS.write(px.getBuf()); |
aarmdlr | 20:6f5f486bd5c3 | 620 | } |
aarmdlr | 20:6f5f486bd5c3 | 621 | |
aarmdlr | 20:6f5f486bd5c3 | 622 | void cyclePrintModeInfo(){ |
aarmdlr | 20:6f5f486bd5c3 | 623 | if(contModePrintInfo==0){ |
aarmdlr | 20:6f5f486bd5c3 | 624 | clear_matrix(0); |
aarmdlr | 20:6f5f486bd5c3 | 625 | printBtnMode(); |
aarmdlr | 20:6f5f486bd5c3 | 626 | contModePrintInfo++; |
aarmdlr | 20:6f5f486bd5c3 | 627 | }else if(contModePrintInfo==1){ |
aarmdlr | 20:6f5f486bd5c3 | 628 | clear_matrix(0); |
aarmdlr | 20:6f5f486bd5c3 | 629 | printSliderMode(); |
aarmdlr | 20:6f5f486bd5c3 | 630 | contModePrintInfo++; |
aarmdlr | 20:6f5f486bd5c3 | 631 | }else{ |
aarmdlr | 20:6f5f486bd5c3 | 632 | clear_matrix(0); |
aarmdlr | 20:6f5f486bd5c3 | 633 | printAccelMode(); |
aarmdlr | 20:6f5f486bd5c3 | 634 | contModePrintInfo=0; |
aarmdlr | 20:6f5f486bd5c3 | 635 | } |
aarmdlr | 20:6f5f486bd5c3 | 636 | } |