![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
En esta tarea se gráfica el voltaje de un potenciometro, en el celular y se cambiará un pwm con botones en el mismo
Diff: main.cpp
- Revision:
- 0:aa7d0f8f7036
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 24 04:47:14 2015 +0000 @@ -0,0 +1,66 @@ +#include "mbed.h" +#include <stdio.h> + +PwmOut led(PTD0); //Salida Pwm +AnalogIn input(PTC2); //Entrada potenciometro +Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem +Serial pc(USBTX,USBRX); //Comunicacion PC + +int med,num,i,j,k,C; +int Lectura +float B=0,ciclo=0,periodo=0; + +int main(void) + { + + GSM.baud(9600); // asigno baudios y configuro puerto serie de la usart + GSM.format(8,Serial::None,1); + + while(1){ + //leer el puerto analógico + wait(0.5); + num = input*1000; //se escala el numero + //pc.printf("num=%d\n", num); + + if(num<256){ //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras) + GSM.putc(0); //si el número es hasta 255 se le ponen dos ceros adelante a la secuencia de bits + GSM.putc(i); //luego la cifra menos significativa + } + if(num>255){ //pero si es mayor a 255 las cifras deben ser convertidas a un hex de dos bytes de la siguiente forma + j=num/256; //calculo la cifra mas significativa + k=num-j*256; //calculo la cifra menos significativa + GSM.putc(j); //las envío a la usart para que se las ponga al modulo bluetooth y la lleve al android + GSM.putc(k); //mas significativa primero, menos después si no no funciona!!! y con la orden PUTC solo asi le envia binarios + + } + //Tomo lo que viene del bluetooth: + // Como no se como hacer para que la freescale sepa cual de los dos sliders le está mandando el dato de bit, + // Entones pongo un slider a mandar bits en un rango de valores y el otro en otro rango y lugo los transformo en número de 0 a 1. + + if (GSM.readable()) + { + + Lectura = GSM.getc(); //Leo el valor del slider; + pc.printf("%i\n\r", Lectura); + + if (Lectura <101) { //condición para mostrar el ciclo de trabajo + + ciclo=Lectura/100.0; //calculo el ciclo de trabajo + led.write(ciclo); + pc.printf("Ciclo de Dureza: %f\n\r", ciclo); + + } + + if (Lectura >101) { //condición para mostrar el periodo + + B=Lectura; + periodo=((B-100.0))/100+0.1; //Calculo el periodo + led.period (periodo); + + pc.printf("Frecuencia: %f\n\r", periodo); + + } + + } +} +} \ No newline at end of file