serial pc-android(bluetooth)+sensor_luz+acelerometro+magnetometro+tsi

Dependencies:   mbed-src tsi_sensor MMA8451Q SLCD MAG3110

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?

UserRevisionLine numberNew 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 */