![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
main.cpp@0:d4bfe4d34f13, 2015-10-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |