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

main.cpp

Committer:
PabloViana
Date:
2015-10-16
Revision:
0:d4bfe4d34f13

File content as of revision 0:d4bfe4d34f13:

#include "mbed.h"

DigitalOut myled(LED_GREEN); //Parpadear led;
Serial pc(USBTX, USBRX); //Configurar salida serial para PC;
AnalogIn volt(PTB2); //Configirar puerto análogo;
Serial bt(PTE0,PTE1);  //puertos del FRDM para el modem bluetooth;
PwmOut PWM1(PTB3); //Configuro una salida PWM; 
int main()
{
    bt.baud(9600);   // asigno baudios y configuro puerto serie de la usart
    bt.format(8,Serial::None,1); //8bits - No parity bit - one stop bit
    int i = 0;
    int lectura =0; //Variable para leer desde el BT
    float voltaje=0; //Voltaje como float;
    float periodo = 0; //Periodo;
    int voltint; //Voltaje como entero
    float dutyC =0; //Ciclo de dureza;  
    //int comando=0; //Variable que usaré para saber qué parámetro está siendo enviado;
    pc.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r ");
    //bt.printf("Digital voltmeter using KL25z: \n\r Ing. Pablo Viana\n\r ");
    while (true) 
    { //Loop...
        voltaje = volt*3.3; //Leo el valor de la entrada analógica;
        voltint=volt*255;//Convierto a entero;
        
        wait(0.5); // wait a small period of time
        pc.printf("Voltage: %f \r\n", voltaje); // print the value of variable i
        i++; // increment the variable
        myled = !myled; // toggle a led
        
        /*Escribir en el bluetooth para enviar al appInventor*/
         if(voltint<256)
            {           //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)    
           //bt.putc(0);     //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits
           bt.putc(voltint);     //luego la cifra menos significativa
            }
            
            //Leer información del bluetooth
       if (bt.readable())
       {    
            
            lectura = bt.getc(); //Leo el valor del bluetooth;
            pc.printf("%i", lectura);
            wait(1);
            if (lectura <101)
            {
                dutyC=lectura/100.0; //calculo el ciclo de dureza;
                PWM1.write(dutyC);
                pc.printf("DC: %f\n\r", dutyC);
                wait(1);
            }
            
            if (lectura >100)
            {
                periodo=1.0/lectura; //Calocular periodo del PWM;
                PWM1.period (periodo);
                
                pc.printf("Periodo: %f\n\r", periodo);
                wait(1);
            }        

        }
 
        
       
    }
}