
Programa de MIP
Dependencies: bloques ball mbed WS2812 PixelArray tsi_sensor TSI bloque MMA8451Q
Diff: main.cpp
- Revision:
- 7:59efb2d370b3
- Parent:
- 6:0004357c1faa
- Child:
- 8:9e69e576d1be
--- a/main.cpp Fri May 21 18:44:58 2021 +0000 +++ b/main.cpp Fri May 21 19:09:00 2021 +0000 @@ -27,6 +27,7 @@ float tsi_oldRead=0; int counter_tsi=0; int posAcelerometerTemp, posAcelerometer=0, posAcelerometerOLD=0, posAcelerometerOLD1=0, contadorReboteA=0; +int posSliderTouchTemp, posSliderTouch=0, posSliderTouchOLD=0, posSliderTouchOLD1=0, contadorRebote=0; //int pixel=8; @@ -34,6 +35,7 @@ //void control_accel(); void update_barra(int led_apagar, int led_encender, int act_barra ); void tsi_ctr_modeBtn(float tsi_newRead); +void tsi_ctr_modeSlider(float tsi_newRead); void accel_ctr(); @@ -85,6 +87,7 @@ } else{ if(sel_opcio==1){ + tsi_ctr_modeSlider(tsi.readPercentage()); } else if(sel_opcio==2){ accel_ctr(); @@ -138,6 +141,56 @@ //tsi_oldRead=tsi_newRead; } +void tsi_ctr_modeSlider(float tsi_newRead){ + //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(). + //Lo multiplicamos por 1.4 para obtener un ranto de entre 0 y 140. + //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. + //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. + posSliderTouchTemp=(((tsi_newRead*100)*1.4)-70)/10; + + //Controlamos que no se salga de las posiciones posibles de la barra inferior. + if(posSliderTouchTemp>-7 and posSliderTouchTemp<7){ + //pc.printf("\r\n Porcentaje=%d",posSliderTouchTemp); + + //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. + if(posSliderTouchTemp==posSliderTouchOLD1){ + contadorRebote=contadorRebote+1; + }else{ + contadorRebote=0; + } + posSliderTouchOLD1=posSliderTouchTemp; + + + if(contadorRebote>=8){ + posSliderTouch=posSliderTouchTemp; + } + + + } + + if(posSliderTouch!=posSliderTouchOLD){ + //Se suaviza el movimiento de la barra inferior para que de un efecto de scroll mas bonito y no tan brusco, + //por eso se realiza un for para que pase por todas las posiciones hasta la posicoon de la barra objetivo. + if(posSliderTouch>posSliderTouchOLD){ + for(int p=posSliderTouchOLD; p<posSliderTouch; p++){ + update_barra(0,(NUM_LEDS_BARRA-1), 1 ); //if rigth + ws.write(px.getBuf()); + //printBar( 249, 0, 0, p); + } + }else if(posSliderTouch<posSliderTouchOLD){ + for(int p=posSliderTouchOLD; p>posSliderTouch; p--){ + update_barra((NUM_LEDS_BARRA-1), 0, -1 ); //if left + ws.write(px.getBuf()); + //printBar( 249, 0, 0, p); + } + } + posSliderTouchOLD=posSliderTouch; + //pc.printf("\r\n Touch"); + + } + +} + /*void control_tsi(float tsi_newRead){ float percent= tsi_newRead; //tsi.readPercentage(); if( (percent < 0.4) && percent!=0 ){ //if left