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
00001 #include "mbed.h" 00002 00003 DigitalOut myled(LED_GREEN); //Parpadear led; 00004 Serial pc(USBTX, USBRX); //Configurar salida serial para PC; 00005 AnalogIn volt(PTB2); //Configirar puerto análogo; 00006 Serial bt(PTE0,PTE1); //puertos del FRDM para el modem bluetooth; 00007 PwmOut PWM1(PTB3); //Configuro una salida PWM; 00008 int main() 00009 { 00010 bt.baud(9600); // asigno baudios y configuro puerto serie de la usart 00011 bt.format(8,Serial::None,1); //8bits - No parity bit - one stop bit 00012 int i = 0; 00013 int lectura =0; //Variable para leer desde el BT 00014 float voltaje=0; //Voltaje como float; 00015 float periodo = 0; //Periodo; 00016 int voltint; //Voltaje como entero 00017 float dutyC =0; //Ciclo de dureza; 00018 //int comando=0; //Variable que usaré para saber qué parámetro está siendo enviado; 00019 pc.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r "); 00020 //bt.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r "); 00021 while (true) 00022 { //Loop... 00023 voltaje = volt*3.3; //Leo el valor de la entrada analógica; 00024 voltint=volt*255;//Convierto a entero; 00025 00026 wait(0.5); // wait a small period of time 00027 pc.printf("Voltage: %f \r\n", voltaje); // print the value of variable i 00028 i++; // increment the variable 00029 myled = !myled; // toggle a led 00030 00031 /*Escribir en el bluetooth para enviar al appInventor*/ 00032 if(voltint<256) 00033 { //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras) 00034 //bt.putc(0); //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits 00035 bt.putc(voltint); //luego la cifra menos significativa 00036 } 00037 00038 //Leer información del bluetooth 00039 if (bt.readable()) 00040 { 00041 00042 lectura = bt.getc(); //Leo el valor del bluetooth; 00043 pc.printf("%i", lectura); 00044 wait(1); 00045 if (lectura <101) 00046 { 00047 dutyC=lectura/100.0; //calculo el ciclo de dureza; 00048 PWM1.write(dutyC); 00049 pc.printf("DC: %f\n\r", dutyC); 00050 wait(1); 00051 } 00052 00053 if (lectura >100) 00054 { 00055 periodo=1.0/lectura; //Calocular periodo del PWM; 00056 PWM1.period (periodo); 00057 00058 pc.printf("Periodo: %f\n\r", periodo); 00059 wait(1); 00060 } 00061 00062 } 00063 00064 00065 00066 } 00067 }
Generated on Mon Jul 18 2022 15:18:54 by 1.7.2