PROGRAMA PARA HACER CONTROL DISCRETO POR BLUETOOTH ACIVA EN MODO TOGGLE, LOS MANDOS TOS ONV, ONR, ONA...QUE HACEN MENCION A ROJO VERDE, AZUL.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //PROGRAMA PARA RECIBIR CARACTERES DESDE EL PC Y ACTIVAR 3 LEDS
00002 //UTIL EN LECTURA DE CADENAS PARA APP INVENTOR
00003 #include "mbed.h"
00004 #include "stdio.h"
00005 #include "string.h"
00006  
00007 Serial GSM(PTE0,PTE1);  //puertos del FRDM para el modem
00008 Serial pc(USBTX,USBRX); //puertos del PC
00009 char buffer[20];// TAMAÑO DEL BUFER
00010 Timer t;   //VALOR DEL TIEMPO
00011 int count;
00012 int i = 0;
00013 int c=0;
00014 char r[]=""; 
00015 char Qr[]="qmAIzQGtSK";
00016 DigitalOut LedRojo(LED1);
00017 DigitalOut LedVerde(LED2);
00018 DigitalOut LedAzul(LED3);
00019  
00020 int readBuffer(char *buffer,int count)   //esta funcion lee un bufer de datos
00021 {
00022     int i=0; 
00023     t.start();    //CUENTA EL TIEMPO DE CONEXION E INICIA
00024     while(1) {
00025         while (GSM.readable()) {
00026             char c = GSM.getc();
00027             if (c == '\r' || c == '\n') c = '$';//si se envia fin de linea o de caracter inserta $
00028             buffer[i++] = c;//mete al bufer el caracter leido
00029             if(i > count)break;//sale del loop si ya detecto terminacion
00030         }
00031         if(i > count)break;
00032         if(t.read() > 1) {  //MAS DE UN SEGUNDO DE ESPERA SE SALE Y REINICA EL RELOJ Y SE SALE
00033             t.stop();
00034             t.reset();
00035             break;
00036         }
00037     }
00038      return 0;
00039 }
00040 
00041 void cleanBuffer(char *buffer, int count)  //esta funcion limpia el bufer
00042 {
00043     for(int i=0; i < count; i++) {
00044         buffer[i] = '\0';
00045     }
00046 }
00047 
00048    
00049 int main(void)
00050        { 
00051        LedVerde=1;
00052        LedRojo=1;
00053        LedAzul=1;
00054        LedVerde=0;
00055        wait(2);   //PRENDE EL LED VERDE POR 2 SEGUNDOS
00056        LedVerde=1;
00057        GSM.baud(9600);
00058        GSM.format(8,Serial::None,1); 
00059                
00060        while(1){ 
00061        if (GSM.readable()) {
00062           readBuffer(buffer,10);
00063           pc.printf("buffer= %s\n\r ",buffer);  //imprime el bufer
00064           pc.printf("buffer= %c  %c\n\r ",buffer[0],buffer[1]);//imprime el cero y el uno
00065           
00066           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='A' ){LedAzul=!LedAzul;}  //PRENDE EL LED AZUL toggle
00067           //if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='A'){LedAzul=1;}  //APAGA EL LED AZUL
00068           
00069           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='V' ){LedVerde=!LedVerde;}//PRENDE EL LED VERDE toggle
00070          //if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='V'){LedVerde=1;}  //APAGA EL LED VERDE
00071           
00072           if(buffer[0]=='O' && buffer[1]=='N' && buffer[2]=='R' ){LedRojo=!LedRojo;}  //PRENDE EL LED ROJO toggle
00073           //if(buffer[0]=='O' && buffer[1]=='F'&& buffer[2]=='R'){LedRojo=1;}  //APAGA EL LED ROJO
00074           
00075           
00076           
00077           } 
00078           cleanBuffer(buffer,10);           
00079 }
00080 }