prueba
Dependencies: mbed SDFileSystem FXOS8700Q
TP para SO. Escribe a memoria SD, lee inputs desde la coneccion serial a una pc, muestra en pantalla de la misma un menu y permite visualizar el funcionamiento del sensor acelerometro.
Revision 7:f49ea76f3ac1, committed 2019-06-25
- Comitter:
- waltergss
- Date:
- Tue Jun 25 21:27:04 2019 +0000
- Parent:
- 6:3c77a20acb12
- Commit message:
- Agregue calibracion de acelerometro y correccion de interrupciones en los menus
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sun Jun 23 17:05:49 2019 +0000 +++ b/main.cpp Tue Jun 25 21:27:04 2019 +0000 @@ -22,19 +22,20 @@ //creo un puntero para el archivo FILE *fp; - int cont=0;//contador de los puntos +int cont=0;//contador de los puntos +float Ax=0.01f; void menu(); void boton2(); void boton3(); void opcion3(); void opcion1(); +void calima(); +void calime(); // main() runs in its own thread in the OS int main() { - sw2.rise(&boton2);//asigno a la interrupcion que produce el sw2 al soltarse la funcion boton2 - sw3.rise(&boton3);//asigno a la interrupcion que produce el sw3 al soltarse la funcion boton3 led1=1;//apago el led rojo menu();//llamo al menu @@ -49,6 +50,8 @@ pc.printf("2-mostrar puntuacion anterior \n \r"); pc.printf("3-opcion3 \n \r"); pc.printf("q-salir \n \r"); + led2=0; + led3=0; c=pc.getc();//leo del teclado switch(c){ case '1':opcion1();//llamo al metodo principal del juego @@ -66,6 +69,7 @@ break; case '3': opcion3();//llamo al metodo de la prueba del acelerometro break; + default:break; } } } @@ -83,6 +87,8 @@ pc.printf("Comenzo el juego!\n \r"); pc.printf("Para terminar presione x \n \r"); pc.printf("----------------------- \n \r"); + sw2.rise(&boton2);//asigno a la interrupcion que produce el sw2 al soltarse la funcion boton2 + sw3.rise(&boton3);//asigno a la interrupcion que produce el sw3 al soltarse la funcion boton3 //bucle principal while(aux){ // Pone valor random en i (de 0 a 1) y prende el color correspondiente @@ -93,15 +99,16 @@ case 1: led3=1;//si es 1 prendo el azul break; } - //bucle para esperar la interrupcion while((led2.read()!=0 || led3.read()!=0) && aux){ // espero a que aprete boton if(pc.readable()){ tecla=pc.getc(); if(tecla=='x'){//si lee x del teclado sale del metodo y vuelve al menu - aux=false; - return; + aux=false; + sw2.rise(NULL);//asigno a la interrupcion que produce el sw2 al soltarse la funcion boton2 + sw3.rise(NULL);//asigno a la interrupcion que produce el sw3 al soltarse la funcion boton3 + return; } } } @@ -155,22 +162,39 @@ } } + +//----------------------------------------------------------------------- +//Esto no esta en el tp void opcion3(){ - float faX;//variable para el valor de x + float x; + float faX;//variable para el valor de x + sw2.rise(&calima); + sw3.rise(&calime); acc.enable();//activar el sensor + acc.getX(x); while (true) { acc.getX(faX);//funcion del sensor que devuelve la orientacion en x - if(faX>0.25f){//si esta inclinado a la derecha se mueve a la derecha + if(faX>(x+Ax)){//si esta inclinado a la derecha se mueve a la derecha pc.printf("| | |o| \r\n"); }else{ - if (faX<0.001f){//si esta inclinado a la izquierda se mueve a la izquierda + if (faX<(x-Ax)){//si esta inclinado a la izquierda se mueve a la izquierda pc.printf("|o| | | \r\n"); }else//sino queda en el centro pc.printf("| |o| | \r\n");} if(pc.readable()){ - menu(); - return; + pc.getc(); + sw2.rise(NULL); + sw3.rise(NULL); + return; } } -} \ No newline at end of file +} + +void calima(){ +Ax+=0.01f; +} +void calime(){ +if(Ax>0.01f) +Ax-=0.01f; +} \ No newline at end of file