Código de voltimetro para utilizarlo en App Inventor

Dependencies:   mbed

Committer:
Meli
Date:
Mon Nov 23 07:23:29 2015 +0000
Revision:
1:309a84a464bc
Parent:
0:60ba57e87354
C?digo de voltimetro para utilizarlo en App Inventor;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Meli 0:60ba57e87354 1 #include "mbed.h"
Meli 0:60ba57e87354 2 #include <stdio.h>
Meli 0:60ba57e87354 3
Meli 0:60ba57e87354 4 PwmOut ledazul (LED2); //Salida Pwm
Meli 0:60ba57e87354 5 AnalogIn input(PTC2); //Entrada potenciometro
Meli 0:60ba57e87354 6 Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem
Meli 0:60ba57e87354 7 Serial pc(USBTX,USBRX); //Comunicacion PC
Meli 0:60ba57e87354 8
Meli 0:60ba57e87354 9 int med,num,i,j,k,C,A;
Meli 0:60ba57e87354 10 float B=0,ciclo=0,periodo=0;
Meli 0:60ba57e87354 11
Meli 0:60ba57e87354 12 int main(void)
Meli 0:60ba57e87354 13 {
Meli 0:60ba57e87354 14
Meli 0:60ba57e87354 15 GSM.baud(9600); // asigno baudios y configuro puerto serie de la usart
Meli 0:60ba57e87354 16 GSM.format(8,Serial::None,1);
Meli 0:60ba57e87354 17
Meli 0:60ba57e87354 18 while(1){
Meli 0:60ba57e87354 19 //leer el puerto analógico
Meli 0:60ba57e87354 20 wait(0.5);
Meli 0:60ba57e87354 21 num = input*1000; //se escala el numero
Meli 0:60ba57e87354 22 //pc.printf("num=%d\n", num);
Meli 0:60ba57e87354 23
Meli 0:60ba57e87354 24 if(num<256){ //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)
Meli 0:60ba57e87354 25 GSM.putc(0); //si el número es hasta 255 se le ponen dos ceros adelante a la secuencia de bits
Meli 0:60ba57e87354 26 GSM.putc(i); //luego la cifra menos significativa
Meli 0:60ba57e87354 27 }
Meli 0:60ba57e87354 28 if(num>255){ //pero si es mayor a 255 las cifras deben ser convertidas a un hex de dos bytes de la siguiente forma
Meli 0:60ba57e87354 29 j=num/256; //calculo la cifra mas significativa
Meli 0:60ba57e87354 30 k=num-j*256; //calculo la cifra menos significativa
Meli 0:60ba57e87354 31 GSM.putc(j); //las envío a la usart para que se las ponga al modulo bluetooth y la lleve al android
Meli 0:60ba57e87354 32 GSM.putc(k); //mas significativa primero, menos después si no no funciona!!! y con la orden PUTC solo asi le envia binarios
Meli 0:60ba57e87354 33
Meli 0:60ba57e87354 34 }
Meli 0:60ba57e87354 35 //capturo los datos del cel
Meli 0:60ba57e87354 36 if (GSM.readable())
Meli 0:60ba57e87354 37 {
Meli 0:60ba57e87354 38
Meli 0:60ba57e87354 39 A = GSM.getc(); //Leo el valor del slider;
Meli 0:60ba57e87354 40 pc.printf("%i\n\r", A);
Meli 0:60ba57e87354 41
Meli 1:309a84a464bc 42 if (A <101) { //if para el ciclo de trabajo. Se tiene en cuenta solo hasta 100 puesto que en el App Inventor, el slider del ciclo de trabajo va de 0 a 100
Meli 0:60ba57e87354 43 ciclo=A/100.0; //calculo el ciclo de trabajo
Meli 1:309a84a464bc 44 ledazul.write(ciclo); //ingreso a la salida el ciclo del trabajo
Meli 0:60ba57e87354 45 pc.printf("Ciclo de Dureza: %f\n\r", ciclo);
Meli 0:60ba57e87354 46
Meli 0:60ba57e87354 47 }
Meli 0:60ba57e87354 48
Meli 1:309a84a464bc 49 if (A >101) { //if para el periodo. Es mayor a 100 porque en App Inventor el slider del periodo va de 100 a 200.
Meli 1:309a84a464bc 50 B=A; //Se asigna otra variable para no entrar en conflicto con la anterior
Meli 1:309a84a464bc 51 periodo=((B-100.0))/100; //Calculo el periodo
Meli 1:309a84a464bc 52 ledazul.period (periodo); //ingreso a la salida el periodo
Meli 0:60ba57e87354 53
Meli 0:60ba57e87354 54 pc.printf("Periodo: %f\n\r", periodo);
Meli 0:60ba57e87354 55
Meli 0:60ba57e87354 56 }
Meli 0:60ba57e87354 57
Meli 0:60ba57e87354 58 }
Meli 0:60ba57e87354 59 }
Meli 0:60ba57e87354 60 }