![](/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
main.cpp@0:aa7d0f8f7036, 2015-11-24 (annotated)
- Committer:
- GermanD
- Date:
- Tue Nov 24 04:47:14 2015 +0000
- Revision:
- 0:aa7d0f8f7036
tarea de APP
Who changed what in which revision?
User | Revision | Line number | New 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 | } |