programa para probar recepcion de cadenas por parte de APP INVENTOR, tres suiches en modo toggle controlan encendido y apagado de tres colores

Dependencies:   mbed

Revision:
1:d0a4ddc1bd88
Parent:
0:4676a90107ca
Child:
2:cd043c95f930
--- a/main.cpp	Tue Apr 14 02:05:54 2015 +0000
+++ b/main.cpp	Fri Apr 17 19:58:59 2015 +0000
@@ -1,295 +1,38 @@
-//programa para enviar cadenas de caracters y probarlas con app inventor
-//el programa tambien recibe cadenas
+//programa para enviar valores analogos y probarlos con app inventor
+//el programa en esta oportunidad manda valores provenientes del puero analogico en 
+//enteros HEX (xxxx) entre 0 y 1000
+//se prueba con voltimetro1 .apk APPINVENTOR. cambie GSM A pc si quere probar directo sobre la pc
 
 #include "mbed.h"
-#include "DebouncedIn.h"
-#include "stdio.h"
-#include "string.h"
-Timer t;
+#include <stdio.h>
+//#include <conio.h>
 DigitalOut LedVerde(LED2);
 DigitalOut LedRojo(LED1);
 DigitalOut LedAzul(LED3);
-DebouncedIn button1(PTC12);  
-DebouncedIn button2(PTC13); 
-DebouncedIn button3(PTC16); 
+
 Serial GSM(PTE0,PTE1);  //puertos del FRDM para el modem
 Serial pc(USBTX,USBRX);
-void Rx_interrupt();
-int position=0;
-int lenpack=6;
-int longi=0;
-char tel[10];
-char DE[50];
-char buffer[512];
-char buffermsg[100];
-char buffer1[13];
-char mensaje[100];
-char NUMBER[13];    
-short int index1;
-short int index2;
-short int index3;
-int count;
-int i = 0;
-int c=0;
-int cont=0;
-unsigned char CtrlZ = 0x1A; 
-bool Flag = false; 
-char r[]=""; 
-char msg[256];
-char char1;
-void FlushGSM(void) { 
-char1 = 0;
- while (GSM.readable()){
-     char1 = GSM.getc();}
-     return;}
-
-void callback() {
-   
-    pc.printf("%c\n", GSM.getc());
-    
-}
- 
-int readBuffer(char *buffer,int count)
-{
-    int i=0; 
-    t.start(); 
-    while(1) {
-        while (GSM.readable()) {
-            char c = GSM.getc();
-            if (c == '\r' || c == '\n') c = '$';
-            buffer[i++] = c;
-            if(i > count)break;
-        }
-        if(i > count)break;
-        if(t.read() > 3) {
-            t.stop();
-            t.reset();
-            break;
-        }
-    }
-    wait(0.5);
-    while(GSM.readable()) {  
-        char c = GSM.getc();
-    }
-    return 0;
-}
-
-void cleanBuffer(char *buffer, int count)
-{
-    for(int i=0; i < count; i++) {
-        buffer[i] = '\0';
-    }
-}
-
-void sendCmd(char *cmd)
-{
-    GSM.puts(cmd);
-}
-
-int waitForResp(char *resp, int timeout)
-{
-    int len = strlen(resp);
-    int sum=0;
-    t.start();
-
-    while(1) {
-        if(GSM.readable()) {
-            char c = GSM.getc();
-            sum = (c==resp[sum]) ? sum+1 : 0;
-            if(sum == len)break;  
-        }
-        if(t.read() > timeout) {  
-            t.stop();
-            t.reset();
-            return -1;
-        }
-    }
-    t.stop();                 
-    t.reset();                    
-    while(GSM.readable()) {     
-        char c = GSM.getc();
-    }
-
-    return 0;
-}
-
-int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
-{
-    sendCmd(cmd);
-    return waitForResp(resp,timeout);
-}
-
-int powerCheck(void)
-{
-    return sendCmdAndWaitForResp("AT\r\n", "OK", 2);    
-}
-
-int checkSIMStatus(void)
-{
-    char gprsBuffer[30];
-    int count = 0;
-    cleanBuffer(gprsBuffer,30);
-    while(count < 3) {
-        sendCmd("AT+CPIN?\r\n");
-        readBuffer(gprsBuffer,30);
-        if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
-            break;
-        }
-        count++;
-        wait(1);
-    }
-
-    if(count == 3) {
-        return -1;
-    }
-    return 0;
-}
-
-int checkSignalStrength(void)
-{
-    char gprsBuffer[100];
-    int index,count = 0;
-    cleanBuffer(gprsBuffer,100);
-    while(count < 3) {
-        sendCmd("AT+CSQ\r\n");
-        readBuffer(gprsBuffer,25);
-        if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
-            break;
-        }
-        count++;
-        wait(1);
-    }
-    if(count == 3) {
-        return -1;
-    }
-    return index;
-}
-
-int init()
-{
-    for(int i = 0; i < 3; i++){
-        sendCmdAndWaitForResp("AT\r\n", "OK", 1);
-        wait(0.5);
-    }
-    if(0 != checkSIMStatus()) {
-        return -1;
-    }
-    if(checkSignalStrength()<1) {
-        return -1;
-    }
-   
-    GSM.attach(&Rx_interrupt, Serial::RxIrq);
-    return 0;
-}
-
-int readSMSpdu(char *message, int index)
-{
-    int i = 0;
-    char gprsBuffer[100];
-    char *p,*s;
-    GSM.printf("AT+CMGR=%d\r\n",index);
-    cleanBuffer(gprsBuffer,100);
-    readBuffer(gprsBuffer,100);
-    if(NULL == ( s = strstr(gprsBuffer,"+CMGR"))) {
-        return -1;
-    }
-    if(NULL != ( s = strstr(gprsBuffer,"+32"))) {
-        p = s + 6;
-        while((*p != '$')&&(i < 5)) {
-            message[i++] = *(p++);
-        }
-        message[i] = '\0';
-    }
-    return 0;
-}
-
-int deleteSMS(int index)
-{
-    char cmd[32];
-    snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
-    sendCmd(cmd);
-    return 0;
-}
-
-void Rx_interrupt(){
-     }
-   
+int med,num,i,j,k;
+AnalogIn input(PTC2);
+  
 int main(void)
        { 
-       LedVerde=1;
-       LedRojo=1;
-       LedAzul=1;
-       GSM.baud(9600);
+       GSM.baud(9600);   // asigno baudios y configuro puerto serie de la usart
        GSM.format(8,Serial::None,1); 
-
-                    
+               
        while(1){ 
-       if (button1.falling())
-        { 
-          index1=!index1;
-           if (index1==0){
-           GSM.printf("VERDEON");}
-           else{
-           GSM.printf("VERDEOF");    
-           }
-        }   
-       if (button2.falling())
-        { 
-          index2=!index2;
-           if (index2==0){
-           GSM.printf("ROJOON");}
-           else{
-           GSM.printf("ROJOOF");    
-           }
-        }   
-        
-        if (button3.falling())
-        { 
-          index3=!index3;
-           if (index3==0){
-           GSM.printf("AZULON");}
-           else{
-           GSM.printf("AZULOF");    
-           }
-        }   
-       
-       
-       
-       
-       
-       
-          
-       if (GSM.readable()) {
-            readBuffer(buffer,100);
-            pc.printf("buffer= %s\n\r ",buffer);
-            pc.printf("buffer= %c  %c\n\r ",buffer[10],buffer[11]);
-                if(buffer[67]=='A'){for(i=0;i<86;i++)
-                 {buffermsg[i]=buffer[i];}
-                 pc.printf("mensaje= %s\n\r ",buffermsg); 
-                 pc.printf("mensaje[72]= %c mensaje[73]=%c\n\r ",buffermsg[72],buffermsg[73]);        
-                 buffer[67]='c';
-                 }
-                 
- if(buffer[10]=='S'&& buffer[11]=='M'){
-             for(i=0;i<5;i++)
-             {buffer1[i]=buffer[2+i];}
-             pc.printf("buffer1= %s\n\r ",buffer1);         
-             buffer[10]='c';
-             buffer[11]='c';
-             }
-if(buffer1[3]=='T'){pc.printf("AT+CMGL=0\n\r");
-            wait(0.5);
-            GSM.printf("AT+CMGL=0\r\n");
-            buffer1[3]='p';
-            }
-            
-
-//   CC3219642FCBC965   ESTO SIGNIFICA "Led verde"  si mandan ese mensaje de texto se prende el led azul
-         
-if(buffermsg[70]=='C' && buffermsg[71]=='C' && buffermsg[72]=='3' && buffermsg[73]=='2' && buffermsg[74]=='1' && buffermsg[75]=='9' && buffermsg[76]=='6' && buffermsg[77]=='4' && buffermsg[78]=='2' && buffermsg[79]=='F' && buffermsg[80]=='C' && buffermsg[81]=='B' && buffermsg[82]=='C' && buffermsg[83]=='9' && buffermsg[84]=='6' && buffermsg[85]=='5'){LedAzul=0;}
-if(buffermsg[72]=='7' && buffermsg[73]=='3'){LedAzul=1;}  //apaga con Lgeverde
-               
-         
-    }            
+       med = input.read();   //leo puerto analogico
+       wait(0.5);
+       num = med*1000;      //agrando el numero de cero a mil
+       if(num<256){           //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)    
+           GSM.putc(0);     //si el numero 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 envio a la usart para que se las ponga al modulo bluetooth y la lleve al android
+           GSM.putc(k);   //mas significativa primero, menos despues si no no funciona!!! y con la orden PUTC solo asi le envia binarios
+       }
 }
-}
\ No newline at end of file
+}       
\ No newline at end of file