Aplicación para envío de mediciones analógicas a través de bluetooth y serial. Recepción de parámetros de configuración de PWM enviados desde aplicación Android

Dependencies:   mbed

Committer:
PabloViana
Date:
Fri Oct 16 03:49:32 2015 +0000
Revision:
0:d4bfe4d34f13
Comunicaci?n mediante m?dulo bluetooth y serial PC para env?o de mediciones anal?gicas con una resoluci?n de un Byte y recepci?n de par?metros desde aplicaci?n con APP Inventor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PabloViana 0:d4bfe4d34f13 1 #include "mbed.h"
PabloViana 0:d4bfe4d34f13 2
PabloViana 0:d4bfe4d34f13 3 DigitalOut myled(LED_GREEN); //Parpadear led;
PabloViana 0:d4bfe4d34f13 4 Serial pc(USBTX, USBRX); //Configurar salida serial para PC;
PabloViana 0:d4bfe4d34f13 5 AnalogIn volt(PTB2); //Configirar puerto análogo;
PabloViana 0:d4bfe4d34f13 6 Serial bt(PTE0,PTE1); //puertos del FRDM para el modem bluetooth;
PabloViana 0:d4bfe4d34f13 7 PwmOut PWM1(PTB3); //Configuro una salida PWM;
PabloViana 0:d4bfe4d34f13 8 int main()
PabloViana 0:d4bfe4d34f13 9 {
PabloViana 0:d4bfe4d34f13 10 bt.baud(9600); // asigno baudios y configuro puerto serie de la usart
PabloViana 0:d4bfe4d34f13 11 bt.format(8,Serial::None,1); //8bits - No parity bit - one stop bit
PabloViana 0:d4bfe4d34f13 12 int i = 0;
PabloViana 0:d4bfe4d34f13 13 int lectura =0; //Variable para leer desde el BT
PabloViana 0:d4bfe4d34f13 14 float voltaje=0; //Voltaje como float;
PabloViana 0:d4bfe4d34f13 15 float periodo = 0; //Periodo;
PabloViana 0:d4bfe4d34f13 16 int voltint; //Voltaje como entero
PabloViana 0:d4bfe4d34f13 17 float dutyC =0; //Ciclo de dureza;
PabloViana 0:d4bfe4d34f13 18 //int comando=0; //Variable que usaré para saber qué parámetro está siendo enviado;
PabloViana 0:d4bfe4d34f13 19 pc.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r ");
PabloViana 0:d4bfe4d34f13 20 //bt.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r ");
PabloViana 0:d4bfe4d34f13 21 while (true)
PabloViana 0:d4bfe4d34f13 22 { //Loop...
PabloViana 0:d4bfe4d34f13 23 voltaje = volt*3.3; //Leo el valor de la entrada analógica;
PabloViana 0:d4bfe4d34f13 24 voltint=volt*255;//Convierto a entero;
PabloViana 0:d4bfe4d34f13 25
PabloViana 0:d4bfe4d34f13 26 wait(0.5); // wait a small period of time
PabloViana 0:d4bfe4d34f13 27 pc.printf("Voltage: %f \r\n", voltaje); // print the value of variable i
PabloViana 0:d4bfe4d34f13 28 i++; // increment the variable
PabloViana 0:d4bfe4d34f13 29 myled = !myled; // toggle a led
PabloViana 0:d4bfe4d34f13 30
PabloViana 0:d4bfe4d34f13 31 /*Escribir en el bluetooth para enviar al appInventor*/
PabloViana 0:d4bfe4d34f13 32 if(voltint<256)
PabloViana 0:d4bfe4d34f13 33 { //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)
PabloViana 0:d4bfe4d34f13 34 //bt.putc(0); //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits
PabloViana 0:d4bfe4d34f13 35 bt.putc(voltint); //luego la cifra menos significativa
PabloViana 0:d4bfe4d34f13 36 }
PabloViana 0:d4bfe4d34f13 37
PabloViana 0:d4bfe4d34f13 38 //Leer información del bluetooth
PabloViana 0:d4bfe4d34f13 39 if (bt.readable())
PabloViana 0:d4bfe4d34f13 40 {
PabloViana 0:d4bfe4d34f13 41
PabloViana 0:d4bfe4d34f13 42 lectura = bt.getc(); //Leo el valor del bluetooth;
PabloViana 0:d4bfe4d34f13 43 pc.printf("%i", lectura);
PabloViana 0:d4bfe4d34f13 44 wait(1);
PabloViana 0:d4bfe4d34f13 45 if (lectura <101)
PabloViana 0:d4bfe4d34f13 46 {
PabloViana 0:d4bfe4d34f13 47 dutyC=lectura/100.0; //calculo el ciclo de dureza;
PabloViana 0:d4bfe4d34f13 48 PWM1.write(dutyC);
PabloViana 0:d4bfe4d34f13 49 pc.printf("DC: %f\n\r", dutyC);
PabloViana 0:d4bfe4d34f13 50 wait(1);
PabloViana 0:d4bfe4d34f13 51 }
PabloViana 0:d4bfe4d34f13 52
PabloViana 0:d4bfe4d34f13 53 if (lectura >100)
PabloViana 0:d4bfe4d34f13 54 {
PabloViana 0:d4bfe4d34f13 55 periodo=1.0/lectura; //Calocular periodo del PWM;
PabloViana 0:d4bfe4d34f13 56 PWM1.period (periodo);
PabloViana 0:d4bfe4d34f13 57
PabloViana 0:d4bfe4d34f13 58 pc.printf("Periodo: %f\n\r", periodo);
PabloViana 0:d4bfe4d34f13 59 wait(1);
PabloViana 0:d4bfe4d34f13 60 }
PabloViana 0:d4bfe4d34f13 61
PabloViana 0:d4bfe4d34f13 62 }
PabloViana 0:d4bfe4d34f13 63
PabloViana 0:d4bfe4d34f13 64
PabloViana 0:d4bfe4d34f13 65
PabloViana 0:d4bfe4d34f13 66 }
PabloViana 0:d4bfe4d34f13 67 }