Programa de MIP

Dependencies:   bloques ball mbed WS2812 PixelArray tsi_sensor TSI bloque MMA8451Q

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?

UserRevisionLine numberNew 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 }