Programa para terminar carrera-Mayo 2020
Dependencies: mbed tsi_sensor MMA8451Q
Revision 0:9eab7a2e3a75, committed 2020-05-12
- Comitter:
- GabboEsc
- Date:
- Tue May 12 12:26:45 2020 +0000
- Commit message:
- dcodevila@pioix.edu.ar; ebrizzio@pioix.edu.ar
Changed in this revision
diff -r 000000000000 -r 9eab7a2e3a75 MMA8451Q.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Tue May 12 12:26:45 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/MMA8451Q/#c4d879a39775
diff -r 000000000000 -r 9eab7a2e3a75 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 12 12:26:45 2020 +0000 @@ -0,0 +1,242 @@ +#include "mbed.h" +#include "tsi_sensor.h" +#include "MMA8451Q.h" + +//Tsi... +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) + #define ELEC0 9 + #define ELEC1 10 +#else + #error TARGET NOT DEFINED +#endif +//Aceleromtetro... +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) + PinName const SDA = PTE25; + PinName const SCL = PTE24; +#else + #error TARGET NOT DEFINED +#endif + +#define MMA8451_I2C_ADDRESS (0x1d<<1) + +DigitalOut LR (LED_RED, 1); +DigitalOut LV (LED_GREEN, 1); +DigitalOut LA (LED_BLUE, 1); +DigitalIn DIG(PTB1); +AnalogIn AN (A0); + +enum estados_Me_Inicio {LON, LOFF, HAB}; +enum estados_Me_Inicio Inicio_Me_estado = LON; +enum estado_me_recepcion {ESPERO, INICIO, ORDEN, FIN}; +enum estado_me_recepcion recepcion_me_estado = ESPERO; +enum estado_me_respuesta {RESPERA, RINICIO, RORDEN, ROX, ROY, ROZ, ROV, ROS1, ROS0, LRC, RFIN}; +enum estado_me_respuesta respuesta_me_estado = RESPERA; + +char c = '\0', o = '\0'; +unsigned char lrc = 0x0b; +bool newdata = false; +int t = 0, tr = 0, Vi = 0, Resp = 0; +int Xd, Xu, Yd, Yu, Zd, Zu, Vd, Vu, s = 0; +float Tsi = 0.0; + +TSIAnalogSlider tsi(ELEC0, ELEC1, 40); +Serial pc(USBTX, USBRX); +MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); + +void Me_Inicio(void); +void cuenta(void); +void Me_Recepcion(void); +void Me_Respuesta(void); + +void onCharReceived(){ //Funcion en la que recibe el caracter... + c = pc.getc(); + newdata = true; + if(c >= 97 && c <= 122){ + c -= 32; + } +} + +void cuenta(){ //Funcion para el contador del programa... + if (t != 0) + t--; + if(tr != 0) + tr--; + Tsi = tsi.readPercentage(); +} + +void datos(){ + + + +} + +Ticker tiempo; + +int main(void) { + + tiempo.attach(&cuenta, 0.01); + pc.attach(&onCharReceived); + + while (true) { + if(newdata){ + Me_Recepcion(); + } + Me_Inicio(); + Me_Respuesta(); + datos(); + } +} + + +void Me_Inicio(){ + switch(Inicio_Me_estado){ + case LON: + LR = 0; + if(Tsi > 0) + Inicio_Me_estado = HAB; + if( Vi == 0 && t == 0){ + t = 50; + Inicio_Me_estado = LOFF; + } + if(Vi == 1 && t == 0){ + t = 25; + Inicio_Me_estado = LOFF; + }break; + case LOFF: + LR = 1; + if(Tsi > 0) + Inicio_Me_estado = HAB; + if(Vi == 1 && t == 0){ + t = 15; + Inicio_Me_estado = LON; + } + if(Vi == 0 && t == 0){ + t = 25; + Inicio_Me_estado = LON; + }break; + case HAB: + Vi = 1; + if(t == 0){ + t = 25; + Inicio_Me_estado = LON; + }break; + } +} + +void Me_Recepcion(){ + switch(recepcion_me_estado){ + case ESPERO: + if(c != 64 || Vi == 0){ + c = '\0'; + newdata = false; + } + if(c == 64){ // @ = 64 en ASCII... + recepcion_me_estado = INICIO; + newdata = false; + } + break; + case INICIO: + if(c == 88 ||c == 89 ||c == 90 ||c == 86 ||c == 83){ //X = 88 ; y = 89 ; z = 90 ; v = 86 ; s = 83... + recepcion_me_estado = ORDEN; + o = c; + newdata = false; + } + else{ + c = '\0'; + recepcion_me_estado = ESPERO; + newdata = false; + }break; + case ORDEN: + if(c == 37){ //% = 115 + recepcion_me_estado = FIN; + } + else{ + recepcion_me_estado = ESPERO; + c = '\0'; + newdata = false; + }break; + case FIN: + recepcion_me_estado = ESPERO; + Resp = 1; + break; + } +} + +void Me_Respuesta(){ + switch(respuesta_me_estado){ + case RESPERA: + lrc = 0x0; + if(Resp == 1){ + tr = 1; + respuesta_me_estado = RINICIO; + pc.printf("%c",'@'); + lrc ^= 0x40; + }break; + case RINICIO: + if(tr == 0){ + tr = 1; + respuesta_me_estado = RORDEN; + pc.printf("%c", o); + lrc ^= o; + }break; + case RORDEN: + if(o == 'X' && tr == 0){ + Xd = 10*abs(acc.getAccX()); + Xu = 10*abs(acc.getAccX()) - Xd; + pc.printf("%d%d", Xd, Xu); + lrc ^= (Xd + 48); + lrc ^= (Xu + 48); + tr = 1; + respuesta_me_estado = LRC; + } + if(o == 'Y' && tr == 0){ + Yd = 10*abs(acc.getAccY()); + Yu = 10 *abs(acc.getAccX()) - Yd; + pc.printf("%d%d", Yd, Yu); + lrc ^= (Yd+48); + lrc ^= (Yu+48); + tr = 1; + respuesta_me_estado = LRC; + } + if(o == 'Z' && tr == 0){ + Zd = 10*abs(acc.getAccZ()); + Zu = 10*abs(acc.getAccX()) - Zd; + pc.printf("%d%d", Zd, Zu); + lrc ^= (Zd+48); + lrc ^= (Zu+48); + tr = 1; + respuesta_me_estado = LRC; + } + if(o == 'V' && tr == 0){ + Vd = AN.read()*3.3; + Vu = AN.read()*33 - Vd*10; + pc.printf("%d%d", Vd, Vu); + lrc ^= (Vd+48); + lrc ^= (Vu+48); + tr = 1; + respuesta_me_estado = LRC; + } + if(o == 'S' && tr == 0){ + if(DIG == 1){ + s = 49; + }else{ + s = 48;} + pc.printf("%c", s); + lrc ^= s ; + tr = 1; + respuesta_me_estado = LRC; + }break; + case LRC: + if(tr == 0){ + pc.printf("%X", lrc); + respuesta_me_estado = RFIN; + lrc = 0x0; + }break; + case RFIN: + if(tr == 0){ + pc.printf("%c\n",0x25); // % = 0x25h = 37d + Resp = 0; + respuesta_me_estado = RESPERA; + }break; + } +} \ No newline at end of file
diff -r 000000000000 -r 9eab7a2e3a75 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue May 12 12:26:45 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
diff -r 000000000000 -r 9eab7a2e3a75 tsi_sensor.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsi_sensor.lib Tue May 12 12:26:45 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Kojto/code/tsi_sensor/#976904559b5c