
.
Dependencies: mbed tsi_sensor MMA8451Q
main.cpp@1:57b0bfa26afb, 2020-05-12 (annotated)
- Committer:
- Naza00
- Date:
- Tue May 12 18:11:04 2020 +0000
- Revision:
- 1:57b0bfa26afb
- Parent:
- 0:6c94c5ac5e8c
AMICO ALONSO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Naza00 | 0:6c94c5ac5e8c | 1 | #include "mbed.h" |
Naza00 | 0:6c94c5ac5e8c | 2 | #include "MMA8451Q.h" |
Naza00 | 1:57b0bfa26afb | 3 | #include "tsi_sensor.h" |
Naza00 | 0:6c94c5ac5e8c | 4 | |
Naza00 | 0:6c94c5ac5e8c | 5 | #define ESPERA 0 |
Naza00 | 0:6c94c5ac5e8c | 6 | #define ORDEN 1 |
Naza00 | 0:6c94c5ac5e8c | 7 | #define FIN 2 |
Naza00 | 0:6c94c5ac5e8c | 8 | |
Naza00 | 0:6c94c5ac5e8c | 9 | #define X 0 |
Naza00 | 0:6c94c5ac5e8c | 10 | #define Y 1 |
Naza00 | 0:6c94c5ac5e8c | 11 | #define Z 2 |
Naza00 | 0:6c94c5ac5e8c | 12 | #define V 3 |
Naza00 | 0:6c94c5ac5e8c | 13 | #define S 4 |
Naza00 | 0:6c94c5ac5e8c | 14 | |
Naza00 | 1:57b0bfa26afb | 15 | #define DESHABILITADO 0 |
Naza00 | 1:57b0bfa26afb | 16 | #define HABILITADO 1 |
Naza00 | 1:57b0bfa26afb | 17 | |
Naza00 | 1:57b0bfa26afb | 18 | #define HAB_ON 0 |
Naza00 | 1:57b0bfa26afb | 19 | #define HAB_OFF_1 1 |
Naza00 | 1:57b0bfa26afb | 20 | #define HAB_OFF_2 2 |
Naza00 | 1:57b0bfa26afb | 21 | |
Naza00 | 1:57b0bfa26afb | 22 | #define DES_ON 0 |
Naza00 | 1:57b0bfa26afb | 23 | #define DES_OFF 1 |
Naza00 | 1:57b0bfa26afb | 24 | |
Naza00 | 1:57b0bfa26afb | 25 | #define ON 0 |
Naza00 | 1:57b0bfa26afb | 26 | #define OFF 1 |
Naza00 | 1:57b0bfa26afb | 27 | |
Naza00 | 1:57b0bfa26afb | 28 | /* This defines will be replaced by PinNames soon */ |
Naza00 | 1:57b0bfa26afb | 29 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
Naza00 | 1:57b0bfa26afb | 30 | #define ELEC0 9 |
Naza00 | 1:57b0bfa26afb | 31 | #define ELEC1 10 |
Naza00 | 1:57b0bfa26afb | 32 | #elif defined (TARGET_KL05Z) |
Naza00 | 1:57b0bfa26afb | 33 | #define ELEC0 9 |
Naza00 | 1:57b0bfa26afb | 34 | #define ELEC1 8 |
Naza00 | 1:57b0bfa26afb | 35 | #else |
Naza00 | 1:57b0bfa26afb | 36 | #error TARGET NOT DEFINED |
Naza00 | 1:57b0bfa26afb | 37 | #endif |
Naza00 | 1:57b0bfa26afb | 38 | |
Naza00 | 1:57b0bfa26afb | 39 | |
Naza00 | 0:6c94c5ac5e8c | 40 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
Naza00 | 0:6c94c5ac5e8c | 41 | PinName const SDA = PTE25; |
Naza00 | 0:6c94c5ac5e8c | 42 | PinName const SCL = PTE24; |
Naza00 | 0:6c94c5ac5e8c | 43 | #elif defined (TARGET_KL05Z) |
Naza00 | 0:6c94c5ac5e8c | 44 | PinName const SDA = PTB4; |
Naza00 | 0:6c94c5ac5e8c | 45 | PinName const SCL = PTB3; |
Naza00 | 0:6c94c5ac5e8c | 46 | #elif defined (TARGET_K20D50M) |
Naza00 | 0:6c94c5ac5e8c | 47 | PinName const SDA = PTB1; |
Naza00 | 0:6c94c5ac5e8c | 48 | PinName const SCL = PTB0; |
Naza00 | 0:6c94c5ac5e8c | 49 | #else |
Naza00 | 0:6c94c5ac5e8c | 50 | #error TARGET NOT DEFINED |
Naza00 | 0:6c94c5ac5e8c | 51 | #endif |
Naza00 | 0:6c94c5ac5e8c | 52 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
Naza00 | 0:6c94c5ac5e8c | 53 | |
Naza00 | 0:6c94c5ac5e8c | 54 | //Definimos que el puerto serie se llama pc |
Naza00 | 0:6c94c5ac5e8c | 55 | Serial pc(USBTX, USBRX); |
Naza00 | 0:6c94c5ac5e8c | 56 | |
Naza00 | 0:6c94c5ac5e8c | 57 | //Variable donde se guarda lo leido |
Naza00 | 0:6c94c5ac5e8c | 58 | char c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 59 | |
Naza00 | 0:6c94c5ac5e8c | 60 | //bit usado como flag para procesar datos |
Naza00 | 0:6c94c5ac5e8c | 61 | bool newdata = false; //Se pone en true cuando hay nuevos datos |
Naza00 | 0:6c94c5ac5e8c | 62 | |
Naza00 | 0:6c94c5ac5e8c | 63 | |
Naza00 | 0:6c94c5ac5e8c | 64 | AnalogIn voltaje_entrada(PTC1); |
Naza00 | 0:6c94c5ac5e8c | 65 | DigitalIn entrada_digital(PTC7); |
Naza00 | 0:6c94c5ac5e8c | 66 | |
Naza00 | 0:6c94c5ac5e8c | 67 | DigitalOut led1(LED1); |
Naza00 | 0:6c94c5ac5e8c | 68 | DigitalOut led2(LED2); |
Naza00 | 1:57b0bfa26afb | 69 | DigitalOut led(LED3); |
Naza00 | 0:6c94c5ac5e8c | 70 | |
Naza00 | 0:6c94c5ac5e8c | 71 | //Callback cuando se detecta una entrada |
Naza00 | 0:6c94c5ac5e8c | 72 | void onCharReceived(){ |
Naza00 | 0:6c94c5ac5e8c | 73 | |
Naza00 | 0:6c94c5ac5e8c | 74 | //Copiamos lo leido en c |
Naza00 | 0:6c94c5ac5e8c | 75 | c = pc.getc(); |
Naza00 | 0:6c94c5ac5e8c | 76 | newdata = true; |
Naza00 | 0:6c94c5ac5e8c | 77 | } |
Naza00 | 1:57b0bfa26afb | 78 | |
Naza00 | 1:57b0bfa26afb | 79 | Ticker tick; |
Naza00 | 1:57b0bfa26afb | 80 | |
Naza00 | 0:6c94c5ac5e8c | 81 | //Funciones |
Naza00 | 0:6c94c5ac5e8c | 82 | int acelerometro_x(); |
Naza00 | 0:6c94c5ac5e8c | 83 | int acelerometro_y(); |
Naza00 | 0:6c94c5ac5e8c | 84 | int acelerometro_z(); |
Naza00 | 0:6c94c5ac5e8c | 85 | int adc(); |
Naza00 | 0:6c94c5ac5e8c | 86 | int in_digital(); |
Naza00 | 0:6c94c5ac5e8c | 87 | int lrc(); |
Naza00 | 1:57b0bfa26afb | 88 | void led_deshabilitado(); |
Naza00 | 1:57b0bfa26afb | 89 | void led_habilitado(); |
Naza00 | 1:57b0bfa26afb | 90 | void timer(); |
Naza00 | 0:6c94c5ac5e8c | 91 | |
Naza00 | 0:6c94c5ac5e8c | 92 | int estado=ESPERA; |
Naza00 | 0:6c94c5ac5e8c | 93 | float x,y,z; |
Naza00 | 0:6c94c5ac5e8c | 94 | int valor_x; // |
Naza00 | 0:6c94c5ac5e8c | 95 | int valor_y; // VALORES BIEN DEL ACELEROMETRO |
Naza00 | 0:6c94c5ac5e8c | 96 | int valor_z; // |
Naza00 | 0:6c94c5ac5e8c | 97 | unsigned int valor_adc; |
Naza00 | 0:6c94c5ac5e8c | 98 | float in_analog; //VALOR BIEN DE LA ENTRADA ANALOGICA |
Naza00 | 0:6c94c5ac5e8c | 99 | int valor_dig=0; // VALOR BIEN DE LA ENTRADA DIGITAL |
Naza00 | 0:6c94c5ac5e8c | 100 | int valor_analog; |
Naza00 | 0:6c94c5ac5e8c | 101 | char vector_respuesta[10]= {0}; |
Naza00 | 0:6c94c5ac5e8c | 102 | int decena_valor_medido=0,unidad_valor_medido=0; |
Naza00 | 0:6c94c5ac5e8c | 103 | unsigned char valor_lrc=0; |
Naza00 | 0:6c94c5ac5e8c | 104 | int orden=0,a=0,j=0; |
Naza00 | 1:57b0bfa26afb | 105 | int tiempo_des=0,tiempo_hab=0,tiempo_rebote=0; |
Naza00 | 1:57b0bfa26afb | 106 | char aux=0; |
Naza00 | 1:57b0bfa26afb | 107 | int habilitacion=0; |
Naza00 | 1:57b0bfa26afb | 108 | char estado_des = DES_ON; |
Naza00 | 1:57b0bfa26afb | 109 | char estado_hab = HAB_ON,cont=1; |
Naza00 | 0:6c94c5ac5e8c | 110 | |
Naza00 | 0:6c94c5ac5e8c | 111 | int main() { |
Naza00 | 0:6c94c5ac5e8c | 112 | |
Naza00 | 1:57b0bfa26afb | 113 | tick.attach(&timer, 0.001); |
Naza00 | 1:57b0bfa26afb | 114 | |
Naza00 | 1:57b0bfa26afb | 115 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
Naza00 | 1:57b0bfa26afb | 116 | |
Naza00 | 1:57b0bfa26afb | 117 | char estado_hab = DESHABILITADO; |
Naza00 | 1:57b0bfa26afb | 118 | |
Naza00 | 0:6c94c5ac5e8c | 119 | //Apagamos los leds |
Naza00 | 0:6c94c5ac5e8c | 120 | led1 = 1; |
Naza00 | 0:6c94c5ac5e8c | 121 | led2 = 1; |
Naza00 | 1:57b0bfa26afb | 122 | led= 1; |
Naza00 | 0:6c94c5ac5e8c | 123 | |
Naza00 | 0:6c94c5ac5e8c | 124 | //Ejecutar onCharReceived por cada entrada por puerto |
Naza00 | 0:6c94c5ac5e8c | 125 | pc.attach(&onCharReceived); |
Naza00 | 0:6c94c5ac5e8c | 126 | |
Naza00 | 0:6c94c5ac5e8c | 127 | while(true){ |
Naza00 | 1:57b0bfa26afb | 128 | switch(estado_hab){ |
Naza00 | 1:57b0bfa26afb | 129 | case DESHABILITADO: |
Naza00 | 1:57b0bfa26afb | 130 | habilitacion=0; |
Naza00 | 1:57b0bfa26afb | 131 | led_deshabilitado(); |
Naza00 | 1:57b0bfa26afb | 132 | if(tsi.readPercentage()!=0 && aux==0){ |
Naza00 | 1:57b0bfa26afb | 133 | tiempo_rebote=0; |
Naza00 | 1:57b0bfa26afb | 134 | aux=1; |
Naza00 | 1:57b0bfa26afb | 135 | } |
Naza00 | 1:57b0bfa26afb | 136 | if(tiempo_rebote>=500 && aux==1){ |
Naza00 | 1:57b0bfa26afb | 137 | aux=0; |
Naza00 | 1:57b0bfa26afb | 138 | estado_hab = HABILITADO; |
Naza00 | 1:57b0bfa26afb | 139 | } |
Naza00 | 1:57b0bfa26afb | 140 | break; |
Naza00 | 1:57b0bfa26afb | 141 | |
Naza00 | 1:57b0bfa26afb | 142 | case HABILITADO: |
Naza00 | 1:57b0bfa26afb | 143 | habilitacion=1; |
Naza00 | 1:57b0bfa26afb | 144 | led_habilitado(); |
Naza00 | 1:57b0bfa26afb | 145 | if(tsi.readPercentage()!=0 && aux==0){ |
Naza00 | 1:57b0bfa26afb | 146 | tiempo_rebote=0; |
Naza00 | 1:57b0bfa26afb | 147 | aux=1; |
Naza00 | 1:57b0bfa26afb | 148 | } |
Naza00 | 1:57b0bfa26afb | 149 | if(tiempo_rebote>=500 && aux==1){ |
Naza00 | 1:57b0bfa26afb | 150 | aux=0; |
Naza00 | 1:57b0bfa26afb | 151 | estado_hab = DESHABILITADO; |
Naza00 | 1:57b0bfa26afb | 152 | } |
Naza00 | 1:57b0bfa26afb | 153 | break; |
Naza00 | 1:57b0bfa26afb | 154 | } |
Naza00 | 1:57b0bfa26afb | 155 | |
Naza00 | 1:57b0bfa26afb | 156 | if(newdata && habilitacion==1){ |
Naza00 | 0:6c94c5ac5e8c | 157 | newdata = false; |
Naza00 | 0:6c94c5ac5e8c | 158 | switch(estado){ |
Naza00 | 0:6c94c5ac5e8c | 159 | |
Naza00 | 0:6c94c5ac5e8c | 160 | case ESPERA: |
Naza00 | 0:6c94c5ac5e8c | 161 | if(c=='@'){ |
Naza00 | 0:6c94c5ac5e8c | 162 | estado=ORDEN; |
Naza00 | 0:6c94c5ac5e8c | 163 | vector_respuesta[0]='@'; |
Naza00 | 0:6c94c5ac5e8c | 164 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 165 | } |
Naza00 | 0:6c94c5ac5e8c | 166 | break; |
Naza00 | 0:6c94c5ac5e8c | 167 | |
Naza00 | 0:6c94c5ac5e8c | 168 | case ORDEN: |
Naza00 | 0:6c94c5ac5e8c | 169 | switch(c){ |
Naza00 | 0:6c94c5ac5e8c | 170 | |
Naza00 | 0:6c94c5ac5e8c | 171 | default: |
Naza00 | 0:6c94c5ac5e8c | 172 | estado = ESPERA; |
Naza00 | 0:6c94c5ac5e8c | 173 | break; |
Naza00 | 0:6c94c5ac5e8c | 174 | |
Naza00 | 0:6c94c5ac5e8c | 175 | case 'X': |
Naza00 | 0:6c94c5ac5e8c | 176 | acelerometro_x(); |
Naza00 | 0:6c94c5ac5e8c | 177 | vector_respuesta[1]='X'; |
Naza00 | 0:6c94c5ac5e8c | 178 | |
Naza00 | 0:6c94c5ac5e8c | 179 | vector_respuesta[2]=valor_x/10; |
Naza00 | 0:6c94c5ac5e8c | 180 | vector_respuesta[3]=valor_x - (vector_respuesta[2] * 10); |
Naza00 | 0:6c94c5ac5e8c | 181 | |
Naza00 | 0:6c94c5ac5e8c | 182 | a=vector_respuesta[2]; |
Naza00 | 0:6c94c5ac5e8c | 183 | j=vector_respuesta[3]; |
Naza00 | 0:6c94c5ac5e8c | 184 | orden='X'; |
Naza00 | 0:6c94c5ac5e8c | 185 | |
Naza00 | 0:6c94c5ac5e8c | 186 | lrc(); |
Naza00 | 0:6c94c5ac5e8c | 187 | |
Naza00 | 0:6c94c5ac5e8c | 188 | if(c=='%'){ |
Naza00 | 0:6c94c5ac5e8c | 189 | estado=FIN; |
Naza00 | 0:6c94c5ac5e8c | 190 | } |
Naza00 | 0:6c94c5ac5e8c | 191 | |
Naza00 | 0:6c94c5ac5e8c | 192 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 193 | break; |
Naza00 | 0:6c94c5ac5e8c | 194 | |
Naza00 | 0:6c94c5ac5e8c | 195 | case 'Y': |
Naza00 | 0:6c94c5ac5e8c | 196 | acelerometro_y(); |
Naza00 | 0:6c94c5ac5e8c | 197 | vector_respuesta[1]='Y'; |
Naza00 | 0:6c94c5ac5e8c | 198 | |
Naza00 | 0:6c94c5ac5e8c | 199 | vector_respuesta[2]=valor_y/10; |
Naza00 | 0:6c94c5ac5e8c | 200 | vector_respuesta[3]=valor_y - (vector_respuesta[2] * 10); |
Naza00 | 0:6c94c5ac5e8c | 201 | |
Naza00 | 0:6c94c5ac5e8c | 202 | a=vector_respuesta[2]; |
Naza00 | 0:6c94c5ac5e8c | 203 | j=vector_respuesta[3]; |
Naza00 | 0:6c94c5ac5e8c | 204 | orden='Y'; |
Naza00 | 0:6c94c5ac5e8c | 205 | |
Naza00 | 0:6c94c5ac5e8c | 206 | lrc(); |
Naza00 | 0:6c94c5ac5e8c | 207 | |
Naza00 | 0:6c94c5ac5e8c | 208 | if(c=='%'){ |
Naza00 | 0:6c94c5ac5e8c | 209 | estado=FIN; |
Naza00 | 0:6c94c5ac5e8c | 210 | } |
Naza00 | 0:6c94c5ac5e8c | 211 | |
Naza00 | 0:6c94c5ac5e8c | 212 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 213 | break; |
Naza00 | 0:6c94c5ac5e8c | 214 | |
Naza00 | 0:6c94c5ac5e8c | 215 | case 'Z': |
Naza00 | 0:6c94c5ac5e8c | 216 | acelerometro_z(); |
Naza00 | 0:6c94c5ac5e8c | 217 | vector_respuesta[1]='Z'; |
Naza00 | 0:6c94c5ac5e8c | 218 | |
Naza00 | 0:6c94c5ac5e8c | 219 | vector_respuesta[2]=valor_z/10; |
Naza00 | 0:6c94c5ac5e8c | 220 | vector_respuesta[3]=valor_z - (vector_respuesta[2] * 10); |
Naza00 | 0:6c94c5ac5e8c | 221 | |
Naza00 | 0:6c94c5ac5e8c | 222 | a=vector_respuesta[2]; |
Naza00 | 0:6c94c5ac5e8c | 223 | j=vector_respuesta[3]; |
Naza00 | 0:6c94c5ac5e8c | 224 | orden='Z'; |
Naza00 | 0:6c94c5ac5e8c | 225 | |
Naza00 | 0:6c94c5ac5e8c | 226 | lrc(); |
Naza00 | 0:6c94c5ac5e8c | 227 | |
Naza00 | 0:6c94c5ac5e8c | 228 | if(c=='%'){ |
Naza00 | 0:6c94c5ac5e8c | 229 | estado=FIN; |
Naza00 | 0:6c94c5ac5e8c | 230 | } |
Naza00 | 0:6c94c5ac5e8c | 231 | |
Naza00 | 0:6c94c5ac5e8c | 232 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 233 | break; |
Naza00 | 0:6c94c5ac5e8c | 234 | |
Naza00 | 0:6c94c5ac5e8c | 235 | case 'V': |
Naza00 | 0:6c94c5ac5e8c | 236 | adc(); |
Naza00 | 0:6c94c5ac5e8c | 237 | vector_respuesta[1]='V'; |
Naza00 | 0:6c94c5ac5e8c | 238 | |
Naza00 | 0:6c94c5ac5e8c | 239 | vector_respuesta[2]=valor_analog/10; |
Naza00 | 0:6c94c5ac5e8c | 240 | vector_respuesta[3]=valor_analog-(vector_respuesta[2]*10); |
Naza00 | 0:6c94c5ac5e8c | 241 | |
Naza00 | 0:6c94c5ac5e8c | 242 | a=vector_respuesta[2]; |
Naza00 | 0:6c94c5ac5e8c | 243 | j=vector_respuesta[3]; |
Naza00 | 0:6c94c5ac5e8c | 244 | orden='V'; |
Naza00 | 0:6c94c5ac5e8c | 245 | |
Naza00 | 0:6c94c5ac5e8c | 246 | lrc(); |
Naza00 | 0:6c94c5ac5e8c | 247 | wait_ms(250); |
Naza00 | 0:6c94c5ac5e8c | 248 | |
Naza00 | 0:6c94c5ac5e8c | 249 | if(c=='%'){ |
Naza00 | 0:6c94c5ac5e8c | 250 | estado=FIN; |
Naza00 | 0:6c94c5ac5e8c | 251 | } |
Naza00 | 0:6c94c5ac5e8c | 252 | |
Naza00 | 0:6c94c5ac5e8c | 253 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 254 | break; |
Naza00 | 0:6c94c5ac5e8c | 255 | |
Naza00 | 0:6c94c5ac5e8c | 256 | case 'S': |
Naza00 | 0:6c94c5ac5e8c | 257 | in_digital(); |
Naza00 | 0:6c94c5ac5e8c | 258 | vector_respuesta[1]='S'; |
Naza00 | 0:6c94c5ac5e8c | 259 | |
Naza00 | 0:6c94c5ac5e8c | 260 | vector_respuesta[2]=0; |
Naza00 | 0:6c94c5ac5e8c | 261 | vector_respuesta[3]=valor_dig; |
Naza00 | 0:6c94c5ac5e8c | 262 | a=0; |
Naza00 | 0:6c94c5ac5e8c | 263 | j=vector_respuesta[3]; |
Naza00 | 0:6c94c5ac5e8c | 264 | orden='S'; |
Naza00 | 0:6c94c5ac5e8c | 265 | |
Naza00 | 0:6c94c5ac5e8c | 266 | lrc(); |
Naza00 | 0:6c94c5ac5e8c | 267 | wait_ms(250); |
Naza00 | 0:6c94c5ac5e8c | 268 | |
Naza00 | 0:6c94c5ac5e8c | 269 | if(c=='%'){ |
Naza00 | 0:6c94c5ac5e8c | 270 | estado=FIN; |
Naza00 | 0:6c94c5ac5e8c | 271 | } |
Naza00 | 0:6c94c5ac5e8c | 272 | |
Naza00 | 0:6c94c5ac5e8c | 273 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 274 | break; |
Naza00 | 0:6c94c5ac5e8c | 275 | |
Naza00 | 0:6c94c5ac5e8c | 276 | case '@': |
Naza00 | 0:6c94c5ac5e8c | 277 | break; |
Naza00 | 0:6c94c5ac5e8c | 278 | } |
Naza00 | 0:6c94c5ac5e8c | 279 | break; |
Naza00 | 0:6c94c5ac5e8c | 280 | |
Naza00 | 0:6c94c5ac5e8c | 281 | case FIN: |
Naza00 | 0:6c94c5ac5e8c | 282 | vector_respuesta[4]='%'; |
Naza00 | 0:6c94c5ac5e8c | 283 | printf("\r\n%c%c%d%d%x%c",vector_respuesta[0],vector_respuesta[1],vector_respuesta[2],vector_respuesta[3],valor_lrc,vector_respuesta[4]); |
Naza00 | 0:6c94c5ac5e8c | 284 | estado=ESPERA; |
Naza00 | 0:6c94c5ac5e8c | 285 | c = '\0'; |
Naza00 | 0:6c94c5ac5e8c | 286 | break; |
Naza00 | 0:6c94c5ac5e8c | 287 | |
Naza00 | 0:6c94c5ac5e8c | 288 | } //switch |
Naza00 | 0:6c94c5ac5e8c | 289 | }// if newdata |
Naza00 | 0:6c94c5ac5e8c | 290 | } //while |
Naza00 | 0:6c94c5ac5e8c | 291 | } //main |
Naza00 | 0:6c94c5ac5e8c | 292 | |
Naza00 | 0:6c94c5ac5e8c | 293 | |
Naza00 | 0:6c94c5ac5e8c | 294 | int acelerometro_x(){ |
Naza00 | 0:6c94c5ac5e8c | 295 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
Naza00 | 0:6c94c5ac5e8c | 296 | x = abs(acc.getAccX()); |
Naza00 | 0:6c94c5ac5e8c | 297 | wait(0.1f); |
Naza00 | 0:6c94c5ac5e8c | 298 | valor_x=x*100; |
Naza00 | 0:6c94c5ac5e8c | 299 | return valor_x; |
Naza00 | 0:6c94c5ac5e8c | 300 | } |
Naza00 | 0:6c94c5ac5e8c | 301 | |
Naza00 | 0:6c94c5ac5e8c | 302 | int acelerometro_y(){ |
Naza00 | 0:6c94c5ac5e8c | 303 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
Naza00 | 0:6c94c5ac5e8c | 304 | y = abs(acc.getAccY()); |
Naza00 | 0:6c94c5ac5e8c | 305 | wait(0.1f); |
Naza00 | 0:6c94c5ac5e8c | 306 | valor_y=y*100; |
Naza00 | 0:6c94c5ac5e8c | 307 | return valor_y; |
Naza00 | 0:6c94c5ac5e8c | 308 | } |
Naza00 | 0:6c94c5ac5e8c | 309 | |
Naza00 | 0:6c94c5ac5e8c | 310 | int acelerometro_z(){ |
Naza00 | 0:6c94c5ac5e8c | 311 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); |
Naza00 | 0:6c94c5ac5e8c | 312 | z = abs(acc.getAccZ()); |
Naza00 | 0:6c94c5ac5e8c | 313 | wait(0.1f); |
Naza00 | 0:6c94c5ac5e8c | 314 | valor_z=z*100; |
Naza00 | 0:6c94c5ac5e8c | 315 | return valor_z; |
Naza00 | 0:6c94c5ac5e8c | 316 | } |
Naza00 | 0:6c94c5ac5e8c | 317 | |
Naza00 | 0:6c94c5ac5e8c | 318 | int adc(){ |
Naza00 | 0:6c94c5ac5e8c | 319 | valor_adc = voltaje_entrada.read_u16(); |
Naza00 | 0:6c94c5ac5e8c | 320 | in_analog = valor_adc * (3.3f / 65535.0f); |
Naza00 | 0:6c94c5ac5e8c | 321 | valor_analog = in_analog*10; |
Naza00 | 0:6c94c5ac5e8c | 322 | return valor_analog; |
Naza00 | 0:6c94c5ac5e8c | 323 | } |
Naza00 | 0:6c94c5ac5e8c | 324 | |
Naza00 | 0:6c94c5ac5e8c | 325 | int in_digital(){ |
Naza00 | 0:6c94c5ac5e8c | 326 | if(entrada_digital==1)valor_dig=1; |
Naza00 | 0:6c94c5ac5e8c | 327 | else valor_dig=0; |
Naza00 | 0:6c94c5ac5e8c | 328 | |
Naza00 | 0:6c94c5ac5e8c | 329 | return valor_dig; |
Naza00 | 0:6c94c5ac5e8c | 330 | } |
Naza00 | 0:6c94c5ac5e8c | 331 | |
Naza00 | 0:6c94c5ac5e8c | 332 | int lrc(){ |
Naza00 | 0:6c94c5ac5e8c | 333 | int inicio= '@'; |
Naza00 | 0:6c94c5ac5e8c | 334 | valor_lrc=0; |
Naza00 | 0:6c94c5ac5e8c | 335 | valor_lrc ^= inicio; |
Naza00 | 0:6c94c5ac5e8c | 336 | valor_lrc ^= orden; |
Naza00 | 0:6c94c5ac5e8c | 337 | valor_lrc ^= (a + 48); |
Naza00 | 0:6c94c5ac5e8c | 338 | valor_lrc ^= (j + 48); |
Naza00 | 0:6c94c5ac5e8c | 339 | |
Naza00 | 0:6c94c5ac5e8c | 340 | return valor_lrc; |
Naza00 | 1:57b0bfa26afb | 341 | } |
Naza00 | 1:57b0bfa26afb | 342 | |
Naza00 | 1:57b0bfa26afb | 343 | void led_deshabilitado(){ |
Naza00 | 1:57b0bfa26afb | 344 | switch(estado_des){ |
Naza00 | 1:57b0bfa26afb | 345 | case DES_ON: |
Naza00 | 1:57b0bfa26afb | 346 | led=ON; |
Naza00 | 1:57b0bfa26afb | 347 | if(tiempo_des==250){ |
Naza00 | 1:57b0bfa26afb | 348 | tiempo_des=0; |
Naza00 | 1:57b0bfa26afb | 349 | estado_des=DES_OFF; |
Naza00 | 1:57b0bfa26afb | 350 | } |
Naza00 | 1:57b0bfa26afb | 351 | break; |
Naza00 | 1:57b0bfa26afb | 352 | |
Naza00 | 1:57b0bfa26afb | 353 | case DES_OFF: |
Naza00 | 1:57b0bfa26afb | 354 | led=OFF; |
Naza00 | 1:57b0bfa26afb | 355 | if(tiempo_des==250){ |
Naza00 | 1:57b0bfa26afb | 356 | tiempo_des=0; |
Naza00 | 1:57b0bfa26afb | 357 | estado_des=DES_ON; |
Naza00 | 1:57b0bfa26afb | 358 | } |
Naza00 | 1:57b0bfa26afb | 359 | break; |
Naza00 | 1:57b0bfa26afb | 360 | } |
Naza00 | 1:57b0bfa26afb | 361 | } |
Naza00 | 1:57b0bfa26afb | 362 | |
Naza00 | 1:57b0bfa26afb | 363 | void led_habilitado(){ |
Naza00 | 1:57b0bfa26afb | 364 | switch(estado_hab){ |
Naza00 | 1:57b0bfa26afb | 365 | case HAB_ON: |
Naza00 | 1:57b0bfa26afb | 366 | led=ON; |
Naza00 | 1:57b0bfa26afb | 367 | if(tiempo_hab>=150 && cont<=2){ |
Naza00 | 1:57b0bfa26afb | 368 | cont++; |
Naza00 | 1:57b0bfa26afb | 369 | tiempo_hab=0; |
Naza00 | 1:57b0bfa26afb | 370 | estado_hab = HAB_OFF_1; |
Naza00 | 1:57b0bfa26afb | 371 | } |
Naza00 | 1:57b0bfa26afb | 372 | if(tiempo_hab>=150 && cont==3){ |
Naza00 | 1:57b0bfa26afb | 373 | tiempo_hab=0; |
Naza00 | 1:57b0bfa26afb | 374 | estado_hab = HAB_OFF_2; |
Naza00 | 1:57b0bfa26afb | 375 | } |
Naza00 | 1:57b0bfa26afb | 376 | break; |
Naza00 | 1:57b0bfa26afb | 377 | |
Naza00 | 1:57b0bfa26afb | 378 | case HAB_OFF_1: |
Naza00 | 1:57b0bfa26afb | 379 | led=OFF; |
Naza00 | 1:57b0bfa26afb | 380 | if(tiempo_hab==500){ |
Naza00 | 1:57b0bfa26afb | 381 | tiempo_hab=0; |
Naza00 | 1:57b0bfa26afb | 382 | estado_hab = HAB_ON; |
Naza00 | 1:57b0bfa26afb | 383 | } |
Naza00 | 1:57b0bfa26afb | 384 | break; |
Naza00 | 1:57b0bfa26afb | 385 | |
Naza00 | 1:57b0bfa26afb | 386 | case HAB_OFF_2: |
Naza00 | 1:57b0bfa26afb | 387 | led=OFF; |
Naza00 | 1:57b0bfa26afb | 388 | if(tiempo_hab==1000){ |
Naza00 | 1:57b0bfa26afb | 389 | cont=0; |
Naza00 | 1:57b0bfa26afb | 390 | tiempo_hab=0; |
Naza00 | 1:57b0bfa26afb | 391 | estado_hab = HAB_ON; |
Naza00 | 1:57b0bfa26afb | 392 | } |
Naza00 | 1:57b0bfa26afb | 393 | break; |
Naza00 | 1:57b0bfa26afb | 394 | } |
Naza00 | 1:57b0bfa26afb | 395 | } |
Naza00 | 1:57b0bfa26afb | 396 | |
Naza00 | 1:57b0bfa26afb | 397 | void timer(){ |
Naza00 | 1:57b0bfa26afb | 398 | tiempo_rebote++; |
Naza00 | 1:57b0bfa26afb | 399 | tiempo_des++; |
Naza00 | 1:57b0bfa26afb | 400 | tiempo_hab++; |
Naza00 | 0:6c94c5ac5e8c | 401 | } |