
ESTE ES EL CODIGO QUE SI FUNCIONA A LA PERFECCION Y EL CUAL TRABAJARE EL 13/5 PARA RENDIR EL EXAMEN
Dependencies: mbed tsi_sensor MMA8451Q
main.cpp@1:1768474cf36d, 2020-05-12 (annotated)
- Committer:
- tanofgennaro
- Date:
- Tue May 12 03:34:57 2020 +0000
- Revision:
- 1:1768474cf36d
- Parent:
- 0:5b043619ecb8
COMMIT1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tanofgennaro | 0:5b043619ecb8 | 1 | #include "mbed.h" |
tanofgennaro | 0:5b043619ecb8 | 2 | #include "MMA8451Q.h" |
tanofgennaro | 0:5b043619ecb8 | 3 | #define ON 0 |
tanofgennaro | 0:5b043619ecb8 | 4 | #define OFF 1 |
tanofgennaro | 0:5b043619ecb8 | 5 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
tanofgennaro | 0:5b043619ecb8 | 6 | PinName const SDA = PTE25; |
tanofgennaro | 0:5b043619ecb8 | 7 | PinName const SCL = PTE24; |
tanofgennaro | 0:5b043619ecb8 | 8 | #elif defined (TARGET_KL05Z) |
tanofgennaro | 0:5b043619ecb8 | 9 | PinName const SDA = PTB4; |
tanofgennaro | 0:5b043619ecb8 | 10 | PinName const SCL = PTB3; |
tanofgennaro | 0:5b043619ecb8 | 11 | #elif defined (TARGET_K20D50M) |
tanofgennaro | 0:5b043619ecb8 | 12 | PinName const SDA = PTB1; |
tanofgennaro | 0:5b043619ecb8 | 13 | PinName const SCL = PTB0; |
tanofgennaro | 0:5b043619ecb8 | 14 | #else |
tanofgennaro | 0:5b043619ecb8 | 15 | #error TARGET NOT DEFINED |
tanofgennaro | 0:5b043619ecb8 | 16 | #endif |
tanofgennaro | 0:5b043619ecb8 | 17 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
tanofgennaro | 0:5b043619ecb8 | 18 | #include "tsi_sensor.h" |
tanofgennaro | 0:5b043619ecb8 | 19 | /* This defines will be replaced by PinNames soon */ |
tanofgennaro | 0:5b043619ecb8 | 20 | //Esto también es prefabricado (COPIAR) ** |
tanofgennaro | 0:5b043619ecb8 | 21 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
tanofgennaro | 0:5b043619ecb8 | 22 | #define ELEC0 9 |
tanofgennaro | 0:5b043619ecb8 | 23 | #define ELEC1 10 |
tanofgennaro | 0:5b043619ecb8 | 24 | #elif defined (TARGET_KL05Z) |
tanofgennaro | 0:5b043619ecb8 | 25 | #define ELEC0 9 |
tanofgennaro | 0:5b043619ecb8 | 26 | #define ELEC1 8 |
tanofgennaro | 0:5b043619ecb8 | 27 | #else |
tanofgennaro | 0:5b043619ecb8 | 28 | #error TARGET NOT DEFINED |
tanofgennaro | 0:5b043619ecb8 | 29 | #endif |
tanofgennaro | 0:5b043619ecb8 | 30 | |
tanofgennaro | 0:5b043619ecb8 | 31 | AnalogIn IN_DIG(PTB1); |
tanofgennaro | 0:5b043619ecb8 | 32 | AnalogIn IN_ANA(PTB0); |
tanofgennaro | 0:5b043619ecb8 | 33 | DigitalOut AZUL(LED3); |
tanofgennaro | 0:5b043619ecb8 | 34 | int tiempo=0,tecla,ESTADO_LED; |
tanofgennaro | 0:5b043619ecb8 | 35 | float porcentaje=0; |
tanofgennaro | 0:5b043619ecb8 | 36 | Ticker contador; |
tanofgennaro | 0:5b043619ecb8 | 37 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
tanofgennaro | 0:5b043619ecb8 | 38 | //Definimos que el puerto serie se llama pc |
tanofgennaro | 0:5b043619ecb8 | 39 | Serial pc(USBTX, USBRX); |
tanofgennaro | 0:5b043619ecb8 | 40 | //Variable donde se guarda lo leido |
tanofgennaro | 0:5b043619ecb8 | 41 | char c = '\0'; |
tanofgennaro | 0:5b043619ecb8 | 42 | |
tanofgennaro | 0:5b043619ecb8 | 43 | //bit usado como flag para procesar datos |
tanofgennaro | 0:5b043619ecb8 | 44 | bool newdata = false; //Se pone en true cuando hay nuevos datos |
tanofgennaro | 0:5b043619ecb8 | 45 | enum {INICIO,ORDEN,FIN,CALCULO,TRANSMICION}; |
tanofgennaro | 0:5b043619ecb8 | 46 | int ESTADO_GENERAL,Actuador,i=0,PROTOCOLO, x, y, z,ESTADO_TRANSMICION,digital=0,hab=0, analogico; |
tanofgennaro | 0:5b043619ecb8 | 47 | int n,Xxor,Yxor,Zxor,Axor,Dxor; |
tanofgennaro | 0:5b043619ecb8 | 48 | //Callback cuando se detecta una entrada |
tanofgennaro | 0:5b043619ecb8 | 49 | void onCharReceived() |
tanofgennaro | 0:5b043619ecb8 | 50 | { |
tanofgennaro | 0:5b043619ecb8 | 51 | c = pc.getc(); |
tanofgennaro | 0:5b043619ecb8 | 52 | newdata = true; |
tanofgennaro | 0:5b043619ecb8 | 53 | } |
tanofgennaro | 0:5b043619ecb8 | 54 | |
tanofgennaro | 0:5b043619ecb8 | 55 | void TI() |
tanofgennaro | 0:5b043619ecb8 | 56 | { |
tanofgennaro | 0:5b043619ecb8 | 57 | if(tiempo>0)tiempo--; |
tanofgennaro | 0:5b043619ecb8 | 58 | } |
tanofgennaro | 0:5b043619ecb8 | 59 | |
tanofgennaro | 0:5b043619ecb8 | 60 | int tactil() |
tanofgennaro | 0:5b043619ecb8 | 61 | { |
tanofgennaro | 0:5b043619ecb8 | 62 | porcentaje = tsi.readPercentage(); //Comienza apagado y a medida que mueva el dedo cambia la salida PWM |
tanofgennaro | 0:5b043619ecb8 | 63 | if(porcentaje<0.9&&porcentaje>=0.1)tecla=1; |
tanofgennaro | 0:5b043619ecb8 | 64 | if(porcentaje==0)tecla=0; |
tanofgennaro | 0:5b043619ecb8 | 65 | return tecla; |
tanofgennaro | 0:5b043619ecb8 | 66 | } |
tanofgennaro | 0:5b043619ecb8 | 67 | void LED_PAUSADO() |
tanofgennaro | 0:5b043619ecb8 | 68 | { |
tanofgennaro | 0:5b043619ecb8 | 69 | if(tiempo==0) { |
tanofgennaro | 0:5b043619ecb8 | 70 | tiempo=250; |
tanofgennaro | 0:5b043619ecb8 | 71 | AZUL=!AZUL; |
tanofgennaro | 0:5b043619ecb8 | 72 | |
tanofgennaro | 0:5b043619ecb8 | 73 | } |
tanofgennaro | 0:5b043619ecb8 | 74 | |
tanofgennaro | 0:5b043619ecb8 | 75 | } |
tanofgennaro | 0:5b043619ecb8 | 76 | void LED_HABILITADO() |
tanofgennaro | 0:5b043619ecb8 | 77 | { |
tanofgennaro | 0:5b043619ecb8 | 78 | if(tiempo==0) { |
tanofgennaro | 0:5b043619ecb8 | 79 | if(AZUL==OFF) { |
tanofgennaro | 0:5b043619ecb8 | 80 | tiempo=200; |
tanofgennaro | 0:5b043619ecb8 | 81 | AZUL=ON; |
tanofgennaro | 0:5b043619ecb8 | 82 | } else { |
tanofgennaro | 0:5b043619ecb8 | 83 | tiempo=1500; |
tanofgennaro | 0:5b043619ecb8 | 84 | AZUL=OFF; |
tanofgennaro | 0:5b043619ecb8 | 85 | } |
tanofgennaro | 0:5b043619ecb8 | 86 | |
tanofgennaro | 0:5b043619ecb8 | 87 | } |
tanofgennaro | 0:5b043619ecb8 | 88 | } |
tanofgennaro | 0:5b043619ecb8 | 89 | |
tanofgennaro | 0:5b043619ecb8 | 90 | int antirebote() |
tanofgennaro | 0:5b043619ecb8 | 91 | { |
tanofgennaro | 0:5b043619ecb8 | 92 | if(IN_DIG<0.1f) { |
tanofgennaro | 0:5b043619ecb8 | 93 | digital=0; |
tanofgennaro | 0:5b043619ecb8 | 94 | hab=0; |
tanofgennaro | 0:5b043619ecb8 | 95 | } else { |
tanofgennaro | 0:5b043619ecb8 | 96 | hab=1; |
tanofgennaro | 0:5b043619ecb8 | 97 | } |
tanofgennaro | 0:5b043619ecb8 | 98 | if(IN_DIG>0.8f&&hab==1) { |
tanofgennaro | 0:5b043619ecb8 | 99 | digital=1; |
tanofgennaro | 0:5b043619ecb8 | 100 | } |
tanofgennaro | 0:5b043619ecb8 | 101 | return digital; |
tanofgennaro | 0:5b043619ecb8 | 102 | } |
tanofgennaro | 0:5b043619ecb8 | 103 | int main(void) |
tanofgennaro | 0:5b043619ecb8 | 104 | { |
tanofgennaro | 0:5b043619ecb8 | 105 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
tanofgennaro | 0:5b043619ecb8 | 106 | |
tanofgennaro | 0:5b043619ecb8 | 107 | contador.attach(&TI,0.001); |
tanofgennaro | 0:5b043619ecb8 | 108 | |
tanofgennaro | 0:5b043619ecb8 | 109 | //Ejecutar onCharReceived por cada entrada por puerto |
tanofgennaro | 0:5b043619ecb8 | 110 | pc.attach(&onCharReceived); |
tanofgennaro | 0:5b043619ecb8 | 111 | while (true) { |
tanofgennaro | 1:1768474cf36d | 112 | |
tanofgennaro | 0:5b043619ecb8 | 113 | n=tactil(); |
tanofgennaro | 0:5b043619ecb8 | 114 | if(n==1) { |
tanofgennaro | 0:5b043619ecb8 | 115 | ESTADO_TRANSMICION=1; |
tanofgennaro | 0:5b043619ecb8 | 116 | LED_HABILITADO(); |
tanofgennaro | 0:5b043619ecb8 | 117 | } else { |
tanofgennaro | 0:5b043619ecb8 | 118 | ESTADO_TRANSMICION=0; |
tanofgennaro | 0:5b043619ecb8 | 119 | LED_PAUSADO(); |
tanofgennaro | 0:5b043619ecb8 | 120 | } |
tanofgennaro | 0:5b043619ecb8 | 121 | if(newdata) { |
tanofgennaro | 0:5b043619ecb8 | 122 | newdata = false; |
tanofgennaro | 1:1768474cf36d | 123 | |
tanofgennaro | 0:5b043619ecb8 | 124 | switch (ESTADO_GENERAL) { |
tanofgennaro | 0:5b043619ecb8 | 125 | default: |
tanofgennaro | 0:5b043619ecb8 | 126 | ESTADO_GENERAL=INICIO; |
tanofgennaro | 0:5b043619ecb8 | 127 | break; |
tanofgennaro | 0:5b043619ecb8 | 128 | case INICIO: |
tanofgennaro | 0:5b043619ecb8 | 129 | if (c=='@') { |
tanofgennaro | 0:5b043619ecb8 | 130 | ESTADO_GENERAL=ORDEN; |
tanofgennaro | 0:5b043619ecb8 | 131 | break; |
tanofgennaro | 0:5b043619ecb8 | 132 | } else { |
tanofgennaro | 1:1768474cf36d | 133 | c='\0'; |
tanofgennaro | 0:5b043619ecb8 | 134 | ESTADO_GENERAL = INICIO; |
tanofgennaro | 0:5b043619ecb8 | 135 | break; |
tanofgennaro | 0:5b043619ecb8 | 136 | } |
tanofgennaro | 0:5b043619ecb8 | 137 | case ORDEN: |
tanofgennaro | 0:5b043619ecb8 | 138 | if (c=='1') { |
tanofgennaro | 0:5b043619ecb8 | 139 | ESTADO_GENERAL = FIN; |
tanofgennaro | 0:5b043619ecb8 | 140 | PROTOCOLO = 1; |
tanofgennaro | 0:5b043619ecb8 | 141 | break; |
tanofgennaro | 0:5b043619ecb8 | 142 | } |
tanofgennaro | 0:5b043619ecb8 | 143 | if (c=='2') { |
tanofgennaro | 0:5b043619ecb8 | 144 | ESTADO_GENERAL = FIN; |
tanofgennaro | 0:5b043619ecb8 | 145 | PROTOCOLO = 2; |
tanofgennaro | 0:5b043619ecb8 | 146 | break; |
tanofgennaro | 0:5b043619ecb8 | 147 | } |
tanofgennaro | 0:5b043619ecb8 | 148 | if (c=='3') { |
tanofgennaro | 0:5b043619ecb8 | 149 | ESTADO_GENERAL = FIN; |
tanofgennaro | 0:5b043619ecb8 | 150 | PROTOCOLO = 3; |
tanofgennaro | 0:5b043619ecb8 | 151 | break; |
tanofgennaro | 0:5b043619ecb8 | 152 | } |
tanofgennaro | 0:5b043619ecb8 | 153 | if (c=='4') { |
tanofgennaro | 0:5b043619ecb8 | 154 | ESTADO_GENERAL = FIN; |
tanofgennaro | 0:5b043619ecb8 | 155 | PROTOCOLO = 4; |
tanofgennaro | 0:5b043619ecb8 | 156 | break; |
tanofgennaro | 0:5b043619ecb8 | 157 | } |
tanofgennaro | 0:5b043619ecb8 | 158 | if (c=='5') { |
tanofgennaro | 0:5b043619ecb8 | 159 | ESTADO_GENERAL = FIN; |
tanofgennaro | 0:5b043619ecb8 | 160 | PROTOCOLO = 5; |
tanofgennaro | 0:5b043619ecb8 | 161 | break; |
tanofgennaro | 0:5b043619ecb8 | 162 | } else { |
tanofgennaro | 1:1768474cf36d | 163 | c='\0'; |
tanofgennaro | 0:5b043619ecb8 | 164 | ESTADO_GENERAL = INICIO; |
tanofgennaro | 0:5b043619ecb8 | 165 | break; |
tanofgennaro | 0:5b043619ecb8 | 166 | } |
tanofgennaro | 0:5b043619ecb8 | 167 | case FIN: |
tanofgennaro | 0:5b043619ecb8 | 168 | if (c==')') { |
tanofgennaro | 1:1768474cf36d | 169 | ESTADO_GENERAL = INICIO; |
tanofgennaro | 0:5b043619ecb8 | 170 | c='\0'; |
tanofgennaro | 0:5b043619ecb8 | 171 | |
tanofgennaro | 0:5b043619ecb8 | 172 | break; |
tanofgennaro | 0:5b043619ecb8 | 173 | } else { |
tanofgennaro | 1:1768474cf36d | 174 | c='\0'; |
tanofgennaro | 0:5b043619ecb8 | 175 | PROTOCOLO = 0; |
tanofgennaro | 0:5b043619ecb8 | 176 | ESTADO_GENERAL = INICIO; |
tanofgennaro | 0:5b043619ecb8 | 177 | break; |
tanofgennaro | 0:5b043619ecb8 | 178 | } |
tanofgennaro | 1:1768474cf36d | 179 | |
tanofgennaro | 0:5b043619ecb8 | 180 | |
tanofgennaro | 1:1768474cf36d | 181 | } |
tanofgennaro | 1:1768474cf36d | 182 | } |
tanofgennaro | 1:1768474cf36d | 183 | |
tanofgennaro | 1:1768474cf36d | 184 | if(PROTOCOLO!=0) { |
tanofgennaro | 1:1768474cf36d | 185 | |
tanofgennaro | 0:5b043619ecb8 | 186 | x = abs(acc.getAccX())*100; |
tanofgennaro | 0:5b043619ecb8 | 187 | y = abs(acc.getAccY())*100; |
tanofgennaro | 0:5b043619ecb8 | 188 | z = abs(acc.getAccZ())*100; |
tanofgennaro | 0:5b043619ecb8 | 189 | analogico=IN_ANA*100; |
tanofgennaro | 0:5b043619ecb8 | 190 | if(PROTOCOLO==1) { |
tanofgennaro | 0:5b043619ecb8 | 191 | Xxor=1^x; |
tanofgennaro | 0:5b043619ecb8 | 192 | } |
tanofgennaro | 0:5b043619ecb8 | 193 | if(PROTOCOLO==2) { |
tanofgennaro | 0:5b043619ecb8 | 194 | Yxor=2^y; |
tanofgennaro | 0:5b043619ecb8 | 195 | } |
tanofgennaro | 0:5b043619ecb8 | 196 | if(PROTOCOLO==3) { |
tanofgennaro | 0:5b043619ecb8 | 197 | Zxor=3^z; |
tanofgennaro | 0:5b043619ecb8 | 198 | } |
tanofgennaro | 0:5b043619ecb8 | 199 | if(PROTOCOLO==4) { |
tanofgennaro | 0:5b043619ecb8 | 200 | Axor=4^analogico; |
tanofgennaro | 0:5b043619ecb8 | 201 | } |
tanofgennaro | 0:5b043619ecb8 | 202 | if(PROTOCOLO==5) { |
tanofgennaro | 0:5b043619ecb8 | 203 | antirebote(); |
tanofgennaro | 0:5b043619ecb8 | 204 | Dxor=5^digital; |
tanofgennaro | 0:5b043619ecb8 | 205 | } |
tanofgennaro | 1:1768474cf36d | 206 | |
tanofgennaro | 0:5b043619ecb8 | 207 | if(ESTADO_TRANSMICION==1) { |
tanofgennaro | 0:5b043619ecb8 | 208 | if(PROTOCOLO==1) { |
tanofgennaro | 0:5b043619ecb8 | 209 | printf("@1%d%x)\n",x,Xxor); |
tanofgennaro | 0:5b043619ecb8 | 210 | } |
tanofgennaro | 0:5b043619ecb8 | 211 | if(PROTOCOLO==2) { |
tanofgennaro | 0:5b043619ecb8 | 212 | printf("@2%d%x)\n",y,Yxor); |
tanofgennaro | 0:5b043619ecb8 | 213 | } |
tanofgennaro | 0:5b043619ecb8 | 214 | if(PROTOCOLO==3) { |
tanofgennaro | 0:5b043619ecb8 | 215 | printf("@3%d%x)\n",z,Zxor); |
tanofgennaro | 0:5b043619ecb8 | 216 | } |
tanofgennaro | 0:5b043619ecb8 | 217 | if(PROTOCOLO==4) { |
tanofgennaro | 0:5b043619ecb8 | 218 | printf("@4%d%x)\n",analogico,Axor); |
tanofgennaro | 0:5b043619ecb8 | 219 | } |
tanofgennaro | 0:5b043619ecb8 | 220 | if(PROTOCOLO==5) { |
tanofgennaro | 0:5b043619ecb8 | 221 | antirebote(); |
tanofgennaro | 0:5b043619ecb8 | 222 | printf("@5%d%x)\n",digital,Dxor); |
tanofgennaro | 0:5b043619ecb8 | 223 | } |
tanofgennaro | 0:5b043619ecb8 | 224 | } |
tanofgennaro | 1:1768474cf36d | 225 | |
tanofgennaro | 1:1768474cf36d | 226 | |
tanofgennaro | 0:5b043619ecb8 | 227 | } |
tanofgennaro | 1:1768474cf36d | 228 | PROTOCOLO=0; |
tanofgennaro | 1:1768474cf36d | 229 | |
tanofgennaro | 0:5b043619ecb8 | 230 | } |
tanofgennaro | 0:5b043619ecb8 | 231 | } |