serial pc-android(bluetooth)+sensor_luz+acelerometro+magnetometro+tsi
Dependencies: mbed-src tsi_sensor MMA8451Q SLCD MAG3110
main.cpp@1:3ff96af5400f, 2019-06-03 (annotated)
- Committer:
- blasterdaxx2208
- Date:
- Mon Jun 03 23:56:39 2019 +0000
- Revision:
- 1:3ff96af5400f
- Parent:
- 0:a4c1f76c9564
serialbluetooth+sensores
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
blasterdaxx2208 | 1:3ff96af5400f | 1 | /*########################################################################### |
blasterdaxx2208 | 1:3ff96af5400f | 2 | ** Archivo : main.c |
blasterdaxx2208 | 1:3ff96af5400f | 3 | ** Proyecto : FRDM-KL46Z_Plantilla |
blasterdaxx2208 | 1:3ff96af5400f | 4 | ** Procesador : MKL46Z256VLL4 |
blasterdaxx2208 | 1:3ff96af5400f | 5 | ** Herramienta : Mbed |
blasterdaxx2208 | 1:3ff96af5400f | 6 | ** Version : Driver 01.01 |
blasterdaxx2208 | 1:3ff96af5400f | 7 | ** Compilador : GNU C Compiler |
blasterdaxx2208 | 1:3ff96af5400f | 8 | ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 |
blasterdaxx2208 | 1:3ff96af5400f | 9 | ** Descripción : |
blasterdaxx2208 | 1:3ff96af5400f | 10 | ** Este proyecto utiliza el magnometro, el acelerometro, el touch slider y el sensor de luz, asi como el uso del puerto serial para comunicar un celular con la pc atraves de un modulo HC-5 bluetooth. |
blasterdaxx2208 | 1:3ff96af5400f | 11 | ** This module contains user's application code. |
blasterdaxx2208 | 1:3ff96af5400f | 12 | ** Componentes : GPIO, AnalogIn,mag,acc,sl.tsi |
blasterdaxx2208 | 1:3ff96af5400f | 13 | ** Configuraciones : Includes, Stacks y Drivers externos |
blasterdaxx2208 | 1:3ff96af5400f | 14 | ** Autores :Carlos Daniel Yerena Mercado |
blasterdaxx2208 | 1:3ff96af5400f | 15 | ** ATEAM Development Group: |
blasterdaxx2208 | 1:3ff96af5400f | 16 | ** - Antulio Morgado Valle |
blasterdaxx2208 | 1:3ff96af5400f | 17 | ** |
blasterdaxx2208 | 1:3ff96af5400f | 18 | ** Versión : Beta |
blasterdaxx2208 | 1:3ff96af5400f | 19 | ** Revisión : A |
blasterdaxx2208 | 1:3ff96af5400f | 20 | ** Release : 0 |
blasterdaxx2208 | 1:3ff96af5400f | 21 | ** Bugs & Fixes : |
blasterdaxx2208 | 1:3ff96af5400f | 22 | ** Date : 24/10/2019 |
blasterdaxx2208 | 1:3ff96af5400f | 23 | ** Added support for Led_RGB |
blasterdaxx2208 | 1:3ff96af5400f | 24 | ** 22/09/2018 |
blasterdaxx2208 | 1:3ff96af5400f | 25 | ** Added LCD Menu, Beta version (with bugs) |
blasterdaxx2208 | 1:3ff96af5400f | 26 | ** |
blasterdaxx2208 | 1:3ff96af5400f | 27 | ** ########################################################################### |
blasterdaxx2208 | 1:3ff96af5400f | 28 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 29 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 30 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
blasterdaxx2208 | 1:3ff96af5400f | 31 | : Includes |
blasterdaxx2208 | 1:3ff96af5400f | 32 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
blasterdaxx2208 | 1:3ff96af5400f | 33 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 34 | #include "mbed.h" |
blasterdaxx2208 | 1:3ff96af5400f | 35 | #include "tsi_sensor.h" |
blasterdaxx2208 | 1:3ff96af5400f | 36 | #include "MMA8451Q.h" |
blasterdaxx2208 | 1:3ff96af5400f | 37 | #include "MAG3110.h" |
blasterdaxx2208 | 1:3ff96af5400f | 38 | #include "SLCD.h" |
justinkim | 0:a4c1f76c9564 | 39 | |
blasterdaxx2208 | 1:3ff96af5400f | 40 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 41 | :............................................................................... |
blasterdaxx2208 | 1:3ff96af5400f | 42 | : Definiciones |
blasterdaxx2208 | 1:3ff96af5400f | 43 | :............................................................................... |
blasterdaxx2208 | 1:3ff96af5400f | 44 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 45 | #define LED_ON 0 |
blasterdaxx2208 | 1:3ff96af5400f | 46 | #define LED_OFF 1 |
blasterdaxx2208 | 1:3ff96af5400f | 47 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
blasterdaxx2208 | 1:3ff96af5400f | 48 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 49 | +------------------------------------------------------------------------------- |
blasterdaxx2208 | 1:3ff96af5400f | 50 | | Configuración de Puertos |
blasterdaxx2208 | 1:3ff96af5400f | 51 | +------------------------------------------------------------------------------- |
blasterdaxx2208 | 1:3ff96af5400f | 52 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 53 | DigitalOut greenLED(LED_GREEN); |
blasterdaxx2208 | 1:3ff96af5400f | 54 | DigitalOut redLED(LED_RED); |
blasterdaxx2208 | 1:3ff96af5400f | 55 | DigitalIn sw1(PTC3); |
blasterdaxx2208 | 1:3ff96af5400f | 56 | DigitalIn sw3(PTC12); |
blasterdaxx2208 | 1:3ff96af5400f | 57 | TSIAnalogSlider slider(PTB16, PTB17, 100); |
blasterdaxx2208 | 1:3ff96af5400f | 58 | AnalogIn lightSense(PTE22); |
blasterdaxx2208 | 1:3ff96af5400f | 59 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
blasterdaxx2208 | 1:3ff96af5400f | 60 | MAG3110 mag(PTE25, PTE24); |
blasterdaxx2208 | 1:3ff96af5400f | 61 | Ticker heartBeat; |
justinkim | 0:a4c1f76c9564 | 62 | Serial pc(USBTX, USBRX); |
blasterdaxx2208 | 1:3ff96af5400f | 63 | Serial blu(PTE0, PTE1); |
blasterdaxx2208 | 1:3ff96af5400f | 64 | SLCD slcd; |
blasterdaxx2208 | 1:3ff96af5400f | 65 | |
justinkim | 0:a4c1f76c9564 | 66 | |
blasterdaxx2208 | 1:3ff96af5400f | 67 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 68 | +------------------------------------------------------------------------------- |
blasterdaxx2208 | 1:3ff96af5400f | 69 | | Variables Globales de Usuario |
blasterdaxx2208 | 1:3ff96af5400f | 70 | +------------------------------------------------------------------------------- |
blasterdaxx2208 | 1:3ff96af5400f | 71 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 72 | struct KL46_SENSOR_DATO { |
blasterdaxx2208 | 1:3ff96af5400f | 73 | int sw1State; |
blasterdaxx2208 | 1:3ff96af5400f | 74 | int sw3State; |
blasterdaxx2208 | 1:3ff96af5400f | 75 | |
blasterdaxx2208 | 1:3ff96af5400f | 76 | float sliderPosition; |
blasterdaxx2208 | 1:3ff96af5400f | 77 | |
blasterdaxx2208 | 1:3ff96af5400f | 78 | float lightSensor; |
blasterdaxx2208 | 1:3ff96af5400f | 79 | |
blasterdaxx2208 | 1:3ff96af5400f | 80 | int magXVal; |
blasterdaxx2208 | 1:3ff96af5400f | 81 | int magYVal; |
blasterdaxx2208 | 1:3ff96af5400f | 82 | float magHeading; |
blasterdaxx2208 | 1:3ff96af5400f | 83 | |
blasterdaxx2208 | 1:3ff96af5400f | 84 | float accXVal; |
blasterdaxx2208 | 1:3ff96af5400f | 85 | float accYVal; |
blasterdaxx2208 | 1:3ff96af5400f | 86 | float accZVal; |
blasterdaxx2208 | 1:3ff96af5400f | 87 | |
blasterdaxx2208 | 1:3ff96af5400f | 88 | } sensorDato; |
justinkim | 0:a4c1f76c9564 | 89 | |
blasterdaxx2208 | 1:3ff96af5400f | 90 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 91 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
blasterdaxx2208 | 1:3ff96af5400f | 92 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
blasterdaxx2208 | 1:3ff96af5400f | 93 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
blasterdaxx2208 | 1:3ff96af5400f | 94 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 95 | void serialSensorDato(void); |
blasterdaxx2208 | 1:3ff96af5400f | 96 | void ledFlashTick(void); |
blasterdaxx2208 | 1:3ff96af5400f | 97 | |
blasterdaxx2208 | 1:3ff96af5400f | 98 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 99 | #=============================================================================== |
blasterdaxx2208 | 1:3ff96af5400f | 100 | | |
blasterdaxx2208 | 1:3ff96af5400f | 101 | | P R O G R A M A P R I N C I P A L |
blasterdaxx2208 | 1:3ff96af5400f | 102 | | |
blasterdaxx2208 | 1:3ff96af5400f | 103 | #=============================================================================== |
blasterdaxx2208 | 1:3ff96af5400f | 104 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 105 | |
blasterdaxx2208 | 1:3ff96af5400f | 106 | int main() |
justinkim | 0:a4c1f76c9564 | 107 | { |
blasterdaxx2208 | 1:3ff96af5400f | 108 | |
blasterdaxx2208 | 1:3ff96af5400f | 109 | greenLED = LED_OFF; |
blasterdaxx2208 | 1:3ff96af5400f | 110 | redLED = LED_OFF; |
blasterdaxx2208 | 1:3ff96af5400f | 111 | |
blasterdaxx2208 | 1:3ff96af5400f | 112 | |
blasterdaxx2208 | 1:3ff96af5400f | 113 | heartBeat.attach(&ledFlashTick, 1.0); |
blasterdaxx2208 | 1:3ff96af5400f | 114 | |
blasterdaxx2208 | 1:3ff96af5400f | 115 | |
justinkim | 0:a4c1f76c9564 | 116 | |
blasterdaxx2208 | 1:3ff96af5400f | 117 | pc.baud( 115200); |
blasterdaxx2208 | 1:3ff96af5400f | 118 | blu.baud( 115200); |
blasterdaxx2208 | 1:3ff96af5400f | 119 | pc.printf("Hello World\r\n"); |
blasterdaxx2208 | 1:3ff96af5400f | 120 | |
blasterdaxx2208 | 1:3ff96af5400f | 121 | |
blasterdaxx2208 | 1:3ff96af5400f | 122 | sw1.mode(PullUp); |
blasterdaxx2208 | 1:3ff96af5400f | 123 | sw3.mode(PullUp); |
blasterdaxx2208 | 1:3ff96af5400f | 124 | |
blasterdaxx2208 | 1:3ff96af5400f | 125 | |
blasterdaxx2208 | 1:3ff96af5400f | 126 | |
blasterdaxx2208 | 1:3ff96af5400f | 127 | |
blasterdaxx2208 | 1:3ff96af5400f | 128 | |
blasterdaxx2208 | 1:3ff96af5400f | 129 | |
justinkim | 0:a4c1f76c9564 | 130 | while(1) |
justinkim | 0:a4c1f76c9564 | 131 | { |
blasterdaxx2208 | 1:3ff96af5400f | 132 | sensorDato.sw1State = sw1; |
blasterdaxx2208 | 1:3ff96af5400f | 133 | sensorDato.sw3State = sw3; |
blasterdaxx2208 | 1:3ff96af5400f | 134 | |
blasterdaxx2208 | 1:3ff96af5400f | 135 | sensorDato.sliderPosition = slider.readPercentage() * 100; |
blasterdaxx2208 | 1:3ff96af5400f | 136 | |
blasterdaxx2208 | 1:3ff96af5400f | 137 | sensorDato.lightSensor = lightSense; |
blasterdaxx2208 | 1:3ff96af5400f | 138 | sensorDato.accXVal = acc.getAccX(); |
blasterdaxx2208 | 1:3ff96af5400f | 139 | sensorDato.accYVal = acc.getAccY(); |
blasterdaxx2208 | 1:3ff96af5400f | 140 | sensorDato.accZVal = acc.getAccZ(); |
blasterdaxx2208 | 1:3ff96af5400f | 141 | |
blasterdaxx2208 | 1:3ff96af5400f | 142 | sensorDato.magXVal = mag.readVal(MAG_OUT_X_MSB); |
blasterdaxx2208 | 1:3ff96af5400f | 143 | sensorDato.magYVal = mag.readVal(MAG_OUT_Y_MSB); |
blasterdaxx2208 | 1:3ff96af5400f | 144 | sensorDato.magHeading = mag.getHeading(); |
blasterdaxx2208 | 1:3ff96af5400f | 145 | |
blasterdaxx2208 | 1:3ff96af5400f | 146 | serialSensorDato(); |
blasterdaxx2208 | 1:3ff96af5400f | 147 | |
justinkim | 0:a4c1f76c9564 | 148 | |
blasterdaxx2208 | 1:3ff96af5400f | 149 | redLED = LED_ON; |
blasterdaxx2208 | 1:3ff96af5400f | 150 | wait(.03); |
blasterdaxx2208 | 1:3ff96af5400f | 151 | redLED = LED_OFF; |
blasterdaxx2208 | 1:3ff96af5400f | 152 | |
blasterdaxx2208 | 1:3ff96af5400f | 153 | wait(1); |
blasterdaxx2208 | 1:3ff96af5400f | 154 | } |
blasterdaxx2208 | 1:3ff96af5400f | 155 | } |
blasterdaxx2208 | 1:3ff96af5400f | 156 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 157 | ................................................................................ |
blasterdaxx2208 | 1:3ff96af5400f | 158 | : Rutinas de los Vectores de Interrupción |
blasterdaxx2208 | 1:3ff96af5400f | 159 | ................................................................................ |
blasterdaxx2208 | 1:3ff96af5400f | 160 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 161 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 162 | void Barrido_OnInterrupt() // Rutina de Atención al Ticker |
blasterdaxx2208 | 1:3ff96af5400f | 163 | { |
blasterdaxx2208 | 1:3ff96af5400f | 164 | counter--; // Aquí va la Rutina de Servicio ! |
blasterdaxx2208 | 1:3ff96af5400f | 165 | if (!counter) |
blasterdaxx2208 | 1:3ff96af5400f | 166 | { |
blasterdaxx2208 | 1:3ff96af5400f | 167 | terminal.printf("Counter Finish! \r\n"); |
blasterdaxx2208 | 1:3ff96af5400f | 168 | led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (Toggle the LED) |
blasterdaxx2208 | 1:3ff96af5400f | 169 | counter = Rate; // Restablece el contador |
blasterdaxx2208 | 1:3ff96af5400f | 170 | } |
blasterdaxx2208 | 1:3ff96af5400f | 171 | } |
blasterdaxx2208 | 1:3ff96af5400f | 172 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 173 | /* END Events */ |
blasterdaxx2208 | 1:3ff96af5400f | 174 | /* |
blasterdaxx2208 | 1:3ff96af5400f | 175 | ______________________________________________________________________________ |
blasterdaxx2208 | 1:3ff96af5400f | 176 | | |
blasterdaxx2208 | 1:3ff96af5400f | 177 | | Funciones Prototipo |
blasterdaxx2208 | 1:3ff96af5400f | 178 | |_______________________________________________________________________________ |
blasterdaxx2208 | 1:3ff96af5400f | 179 | */ |
blasterdaxx2208 | 1:3ff96af5400f | 180 | void serialSensorDato(void) |
blasterdaxx2208 | 1:3ff96af5400f | 181 | { |
blasterdaxx2208 | 1:3ff96af5400f | 182 | if(blu.readable()) |
blasterdaxx2208 | 1:3ff96af5400f | 183 | { |
blasterdaxx2208 | 1:3ff96af5400f | 184 | pc.printf("%c",blu.getc()); |
blasterdaxx2208 | 1:3ff96af5400f | 185 | pc.printf("Switches:\r\n SW1 = %d\r\n SW3 = %d\r\n\r\n", sensorDato.sw1State, sensorDato.sw3State); |
blasterdaxx2208 | 1:3ff96af5400f | 186 | pc.printf("Slider:\r\n %2.0f %% \r\n\r\n", sensorDato.sliderPosition); |
blasterdaxx2208 | 1:3ff96af5400f | 187 | pc.printf("Sensor de luz:\r\n %1.3f \r\n\r\n", sensorDato.lightSensor); |
blasterdaxx2208 | 1:3ff96af5400f | 188 | pc.printf("Accelerometro:\r\n X = %1.3f\r\n Y = %1.3f\r\n Z = %1.3f\r\n\r\n", sensorDato.accXVal, sensorDato.accYVal, sensorDato.accZVal); |
blasterdaxx2208 | 1:3ff96af5400f | 189 | pc.printf("Magnetometro:\r\n X = %d\r\n Y = %d\r\n Heading = %.2f \r\n\r\n", sensorDato.magXVal, sensorDato.magYVal, sensorDato.magHeading); |
blasterdaxx2208 | 1:3ff96af5400f | 190 | |
blasterdaxx2208 | 1:3ff96af5400f | 191 | pc.printf("\r\n"); |
blasterdaxx2208 | 1:3ff96af5400f | 192 | } |
blasterdaxx2208 | 1:3ff96af5400f | 193 | else |
blasterdaxx2208 | 1:3ff96af5400f | 194 | { if(pc.readable()) |
justinkim | 0:a4c1f76c9564 | 195 | { |
blasterdaxx2208 | 1:3ff96af5400f | 196 | pc.getc(); |
blasterdaxx2208 | 1:3ff96af5400f | 197 | |
blasterdaxx2208 | 1:3ff96af5400f | 198 | blu.printf("%c",pc.getc()); |
blasterdaxx2208 | 1:3ff96af5400f | 199 | slcd.printf("%c",pc.getc()); |
blasterdaxx2208 | 1:3ff96af5400f | 200 | |
blasterdaxx2208 | 1:3ff96af5400f | 201 | |
blasterdaxx2208 | 1:3ff96af5400f | 202 | |
blasterdaxx2208 | 1:3ff96af5400f | 203 | } } |
blasterdaxx2208 | 1:3ff96af5400f | 204 | |
blasterdaxx2208 | 1:3ff96af5400f | 205 | } |
blasterdaxx2208 | 1:3ff96af5400f | 206 | |
blasterdaxx2208 | 1:3ff96af5400f | 207 | |
blasterdaxx2208 | 1:3ff96af5400f | 208 | void ledFlashTick(void) |
blasterdaxx2208 | 1:3ff96af5400f | 209 | { |
blasterdaxx2208 | 1:3ff96af5400f | 210 | greenLED = !greenLED; |
justinkim | 0:a4c1f76c9564 | 211 | } |
blasterdaxx2208 | 1:3ff96af5400f | 212 | |
blasterdaxx2208 | 1:3ff96af5400f | 213 | /* END Program */ |
blasterdaxx2208 | 1:3ff96af5400f | 214 | |
blasterdaxx2208 | 1:3ff96af5400f | 215 | /* END Mbed */ |