
Parcial Junio Sistemas Embebidos Juan Eguidazu
Dependencies: mbed tsi_sensor MMA8451Q
Revision 0:25fa9c2b3c2a, committed 2020-06-22
- Comitter:
- juaneguidazu
- Date:
- Mon Jun 22 03:52:08 2020 +0000
- Commit message:
- Parcial Junio; Sistemas Embebidos; Juan Eguidazu;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Mon Jun 22 03:52:08 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/MMA8451Q/#c4d879a39775
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jun 22 03:52:08 2020 +0000 @@ -0,0 +1,330 @@ +#include "mbed.h" +#include "tsi_sensor.h" +#include "MMA8451Q.h" +/* This defines will be replaced by PinNames soon */ +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) +#define ELEC0 9 +#define ELEC1 10 +#elif defined (TARGET_KL05Z) +#define ELEC0 9 +#define ELEC1 8 +#else +#error TARGET NOT DEFINED +#endif +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) +PinName const SDA = PTE25; +PinName const SCL = PTE24; +#elif defined (TARGET_KL05Z) +PinName const SDA = PTB4; +PinName const SCL = PTB3; +#elif defined (TARGET_K20D50M) +PinName const SDA = PTB1; +PinName const SCL = PTB0; +#else +#error TARGET NOT DEFINED +#endif +#define MMA8451_I2C_ADDRESS (0x1d<<1) + +DigitalOut rled(LED_RED); +DigitalOut gled(LED_GREEN); +DigitalOut bled(LED_BLUE); +DigitalOut ledon(PTD4); +AnalogIn tensionV(PTB0); +DigitalIn tensionD(PTA12); +// Definicion de patas +TSIAnalogSlider tsi(ELEC0, ELEC1, 40); +Ticker pulsador; +Ticker ledoon; +Ticker ledoff; +Ticker analogread; +void TIMER(void); +void LEDV(void); +void LEDON(void); +void MAQLEDON(void); +void LEDOFF(void); +void MAQLEDOFF(void); +void R_LRC(); +void RECEPCION(void); +void onCharReceived(); +void ANGIN(void); +int casosledon=0; +int tiempoledon=0; +int estadoon=0; +int casosledoff=0; +int tiempoledoff=0; +int estadooff=0; +float j=0; +bool hab=0; +int t=0; +int x, y, z, v, d; +int bytenum=0; +char buffer[3]; +char LRC=0; +int phab=0; +//Definimos que el puerto serie se llama pc +Serial pc(USBTX, USBRX); +//Variable donde se guarda lo leido +char c = '\0'; +//bit usado como flag para procesar datos +bool newdata = false; //Se pone en true cuando hay nuevos datos +int main(void) +{ + //Ejecutar onCharReceived por cada entrada por puerto + pc.attach(&onCharReceived); + MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); + //printf("MMA8451 ID: %d\n", acc.getWhoAmI()); + pulsador.attach(&TIMER,0.1); + ledoon.attach(&LEDON,0.1); + ledoff.attach(&LEDOFF,0.1); + analogread.attach(&ANGIN,0.2); + while (true) { + j=tsi.readPercentage(); + x = int ((abs(acc.getAccX()))*100); + y = int ((abs(acc.getAccY()))*100); + z = int ((abs(acc.getAccZ()))*100); + if(j>0&&t==0) { + hab=!hab; + if(hab == 1) { + tiempoledon = 2; + casosledon = 0; + estadoon = 1; + } + t=3; + } + if(hab==1) { + MAQLEDON(); + LEDV(); + RECEPCION(); + + switch(phab) { + default: + phab=0; + break; + case 1: + sprintf(buffer,"X%d",x); + R_LRC(); + printf("\n\n $%s%X)\n\n",buffer,LRC); + phab=0; + break; + case 2: + sprintf(buffer,"Y%d",y); + R_LRC(); + printf("\n\n $%s%X)\n\n",buffer,LRC); + phab=0; + break; + case 3: + sprintf(buffer,"Z%d",z); + R_LRC(); + printf("\n\n $%s%X)\n\n",buffer,LRC); + phab=0; + break; + case 4: + sprintf(buffer,"V%d",v); + R_LRC(); + printf("\n\n $%s%X)\n\n",buffer,LRC); + phab=0; + break; + case 5: + sprintf(buffer,"D%d",d); + R_LRC(); + printf("\n\n $%s%X)\n\n",buffer,LRC); + phab=0; + break; + } + } else + MAQLEDOFF(); + rled=1; + bled=1; + gled=1; + } +} +void TIMER(void) +{ + if(t==0) { + t=0; + } else { + t--; + } +} +void LEDV(void) +{ + if(v<=10&&v>0) { + rled=0; + bled=1; + gled=1; + } else if(v<=20&&v>10) { + rled=1; + bled=1; + gled=0; + } else if(v<=33&&v>20) { + rled=1; + bled=0; + gled=1; + } +} +void LEDON(void) +{ + if(tiempoledon<=0) { + tiempoledon=0; + } else { + tiempoledon--; + } +} +void MAQLEDON(void) +{ + switch(estadoon) { + case 0: + ledon = 0; + if(tiempoledon == 0) { + estadoon = 1; + tiempoledon = 2; + } + break; + case 1: + ledon=1; + if(tiempoledon==0) { + estadoon=0; + casosledon++; + if(casosledon < 3) { + tiempoledon=2; + } else if(casosledon == 3) { + tiempoledon = 15; + casosledon = 0; + } + break; + } + } +} +void LEDOFF(void) +{ + if(tiempoledoff==0) { + tiempoledoff=0; + } else { + tiempoledoff--; + } +} +void MAQLEDOFF(void) +{ + switch(estadooff) { + case 0: + ledon=1; + casosledoff++; + if(tiempoledoff==0) { + estadooff=1; + tiempoledoff=10; + break; + } else { + break; + } + case 1: + ledon=0; + if(tiempoledoff==0) { + estadooff=0; + tiempoledoff=5; + break; + } else { + break; + } + } +} +void R_LRC() +{ + for (int b = 0; b < sizeof(buffer); b++) { + LRC ^= buffer[b]; + } +} +//Callback cuando se detecta una entrada +void onCharReceived() +{ + //Copiamos lo leido en c + c = pc.getc(); + newdata = true; +} +void RECEPCION(void) +{ + if(newdata) { + switch(bytenum) { + case 0: + if(c=='$') { + bytenum=1; + break; + } else { + bytenum=0; + break; + } + case 1: + if(c=='X') { + bytenum=2; + break; + } else if(c=='Y') { + bytenum=3; + break; + } else if(c=='Z') { + bytenum=4; + break; + } else if(c=='V') { + bytenum=5; + break; + } else if(c=='D') { + bytenum=6; + break; + } else { + bytenum=0; + break; + } + case 2: + if(c==')') { + phab=1; + bytenum=0; + break; + } else { + bytenum=0; + break; + } + case 3: + if(c==')') { + phab=2; + bytenum=0; + break; + } else { + bytenum=0; + break; + } + case 4: + if(c==')') { + phab=3; + bytenum=0; + break; + } else { + bytenum=0; + break; + } + case 5: + if(c==')') { + phab=4; + bytenum=0; + break; + } else { + bytenum=0; + break; + } + case 6: + if(c==')') { + if(tensionD==1) + d=11; + else + d=10; + phab=5; + bytenum=0; + break; + } else { + bytenum=0; + break; + } + } + } +} +void ANGIN(void) +{ + v = int ((tensionV.read()*3.3)*10); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jun 22 03:52:08 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsi_sensor.lib Mon Jun 22 03:52:08 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Kojto/code/tsi_sensor/#976904559b5c