En esta tarea se gráfica el voltaje de un potenciometro, en el celular y se cambiará un pwm con botones en el mismo

Dependencies:   mbed

Committer:
GermanD
Date:
Tue Nov 24 04:47:14 2015 +0000
Revision:
0:aa7d0f8f7036
tarea de APP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GermanD 0:aa7d0f8f7036 1 #include "mbed.h"
GermanD 0:aa7d0f8f7036 2 #include <stdio.h>
GermanD 0:aa7d0f8f7036 3
GermanD 0:aa7d0f8f7036 4 PwmOut led(PTD0); //Salida Pwm
GermanD 0:aa7d0f8f7036 5 AnalogIn input(PTC2); //Entrada potenciometro
GermanD 0:aa7d0f8f7036 6 Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem
GermanD 0:aa7d0f8f7036 7 Serial pc(USBTX,USBRX); //Comunicacion PC
GermanD 0:aa7d0f8f7036 8
GermanD 0:aa7d0f8f7036 9 int med,num,i,j,k,C;
GermanD 0:aa7d0f8f7036 10 int Lectura
GermanD 0:aa7d0f8f7036 11 float B=0,ciclo=0,periodo=0;
GermanD 0:aa7d0f8f7036 12
GermanD 0:aa7d0f8f7036 13 int main(void)
GermanD 0:aa7d0f8f7036 14 {
GermanD 0:aa7d0f8f7036 15
GermanD 0:aa7d0f8f7036 16 GSM.baud(9600); // asigno baudios y configuro puerto serie de la usart
GermanD 0:aa7d0f8f7036 17 GSM.format(8,Serial::None,1);
GermanD 0:aa7d0f8f7036 18
GermanD 0:aa7d0f8f7036 19 while(1){
GermanD 0:aa7d0f8f7036 20 //leer el puerto analógico
GermanD 0:aa7d0f8f7036 21 wait(0.5);
GermanD 0:aa7d0f8f7036 22 num = input*1000; //se escala el numero
GermanD 0:aa7d0f8f7036 23 //pc.printf("num=%d\n", num);
GermanD 0:aa7d0f8f7036 24
GermanD 0:aa7d0f8f7036 25 if(num<256){ //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)
GermanD 0:aa7d0f8f7036 26 GSM.putc(0); //si el número es hasta 255 se le ponen dos ceros adelante a la secuencia de bits
GermanD 0:aa7d0f8f7036 27 GSM.putc(i); //luego la cifra menos significativa
GermanD 0:aa7d0f8f7036 28 }
GermanD 0:aa7d0f8f7036 29 if(num>255){ //pero si es mayor a 255 las cifras deben ser convertidas a un hex de dos bytes de la siguiente forma
GermanD 0:aa7d0f8f7036 30 j=num/256; //calculo la cifra mas significativa
GermanD 0:aa7d0f8f7036 31 k=num-j*256; //calculo la cifra menos significativa
GermanD 0:aa7d0f8f7036 32 GSM.putc(j); //las envío a la usart para que se las ponga al modulo bluetooth y la lleve al android
GermanD 0:aa7d0f8f7036 33 GSM.putc(k); //mas significativa primero, menos después si no no funciona!!! y con la orden PUTC solo asi le envia binarios
GermanD 0:aa7d0f8f7036 34
GermanD 0:aa7d0f8f7036 35 }
GermanD 0:aa7d0f8f7036 36 //Tomo lo que viene del bluetooth:
GermanD 0:aa7d0f8f7036 37 // Como no se como hacer para que la freescale sepa cual de los dos sliders le está mandando el dato de bit,
GermanD 0:aa7d0f8f7036 38 // 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.
GermanD 0:aa7d0f8f7036 39
GermanD 0:aa7d0f8f7036 40 if (GSM.readable())
GermanD 0:aa7d0f8f7036 41 {
GermanD 0:aa7d0f8f7036 42
GermanD 0:aa7d0f8f7036 43 Lectura = GSM.getc(); //Leo el valor del slider;
GermanD 0:aa7d0f8f7036 44 pc.printf("%i\n\r", Lectura);
GermanD 0:aa7d0f8f7036 45
GermanD 0:aa7d0f8f7036 46 if (Lectura <101) { //condición para mostrar el ciclo de trabajo
GermanD 0:aa7d0f8f7036 47
GermanD 0:aa7d0f8f7036 48 ciclo=Lectura/100.0; //calculo el ciclo de trabajo
GermanD 0:aa7d0f8f7036 49 led.write(ciclo);
GermanD 0:aa7d0f8f7036 50 pc.printf("Ciclo de Dureza: %f\n\r", ciclo);
GermanD 0:aa7d0f8f7036 51
GermanD 0:aa7d0f8f7036 52 }
GermanD 0:aa7d0f8f7036 53
GermanD 0:aa7d0f8f7036 54 if (Lectura >101) { //condición para mostrar el periodo
GermanD 0:aa7d0f8f7036 55
GermanD 0:aa7d0f8f7036 56 B=Lectura;
GermanD 0:aa7d0f8f7036 57 periodo=((B-100.0))/100+0.1; //Calculo el periodo
GermanD 0:aa7d0f8f7036 58 led.period (periodo);
GermanD 0:aa7d0f8f7036 59
GermanD 0:aa7d0f8f7036 60 pc.printf("Frecuencia: %f\n\r", periodo);
GermanD 0:aa7d0f8f7036 61
GermanD 0:aa7d0f8f7036 62 }
GermanD 0:aa7d0f8f7036 63
GermanD 0:aa7d0f8f7036 64 }
GermanD 0:aa7d0f8f7036 65 }
GermanD 0:aa7d0f8f7036 66 }