Recibe codigo ascii desde app inventor y enciende 3 leds proporcional a la posicion cada slider

Dependencies:   mbed

main.cpp

Committer:
Christianh
Date:
2017-11-21
Revision:
0:940609834a0a

File content as of revision 0:940609834a0a:


//Christian Hernandez 
//Jorge Montero
//Fernando Suarez


#include "mbed.h"
 

Serial pc(USBTX, USBRX); //Configurar salida serial para PC;
Serial bt(PTE22,PTE23);  //RX-TX  puertos del FRDM para el modem bluetooth;
PwmOut PWM1(PTB3); //Configuro una salida PWM; 
PwmOut ledR(LED1);
PwmOut ledV(LED2);
PwmOut ledA(LED3);



int main()
{
    bt.baud(9600);   // asigno baudios y configuro puerto serie de la usart
    bt.format(8,Serial::None,1); //8bits - No parity bit - one stop bit
    //int nu ;
    int v;
    
    char lectura ; //Variable para leer desde el BT

    
    
    //int comando=0; //Variable que usaré para saber qué parámetro está siendo enviado;
    pc.printf("Slider y led RGB: \n\r   Procesadores 2017\n\r ");
    
    while (1) 
    { //Loop...
        
       
            
            //Leer información del bluetooth
       if (bt.readable())
       {    
            
            lectura = bt.getc(); //Leo el valor del bluetooth;
            
            
            //pc.printf("caracter %c\n", lectura);
            
            //aca comienza condicional
            //el primer slider entrega valores entre 0-100
            if ((lectura>0) && (lectura<=100)){
            
            v= (int)(lectura);
            
            
            pc.printf("numero %i\n", v);
            float p1= float(v);
            
            float p2=p1/100;
            if (p2<0.2){
                p2=0;
                }
            ledR=(1-p2);
            
            pc.printf("val p %.2f\n", p2);
            wait(0.2);
                
            }//aca termina condicional
            
            
            
            //aca comienza segundo condicional
            //el segundo slider entrega valores entre 100-200
            if ((lectura>100) && (lectura<=200)){
            
            
            //pc.printf("segundo %c\n", lectura);
            v= (int)(lectura);
            v=v-100;   //para que quede valor entre 0-100
            
            //pc.printf("numero %i\n", v);
            float p1= float(v);  //el entero v se convierte en flotante para dividir
            
            float p2=p1/100;
            if (p2<0.2){   //apaga en valores cercanos a 0
                p2=0;
                }
            ledV=(1-p2);  //el pwm se enciende entre 0-1
            
            pc.printf("val p %.2f\n", p2);
            wait(0.2);
                
            }//aca termina condicional
            
            
            //aca comienza tercer condicional
            if ((lectura>200) && (lectura<=300)){
                        //version 100
                        //limitacion 8bit  
                        if(lectura>255){
                        ledA=0;    
                        ledR=1;
                        ledV=1;
                        }
                        
                        / 
                        else {
                        
                        //pc.printf("tercero %c\n", lectura);
                        v= (int)(lectura);
                        
                        v=v-200;
                        
                        
                        pc.printf("numero %i\n", v);
                        float p1= float(v);
                        
                        float p3=p1/100;  //lleva a rango [0-1]
                        if (p3<0.2){      //en valores pequeños apaga
                            p3=0;
                            }
                            
                        
                        
                        
                        ledA=(1-p3);
                        ledR=1;
                        ledV=1;
                        
                        
                        //fin limitacion
                        
                        //pc.printf("val p %.2f\n", p2);
                        //wait(0.2);
                        }
                        
                        
                        
                        
            }//aca termina condicional
            
            
            
            
            
             
        }
        
 
        
       
    }
}