Cambia intensidad de color del led, recibe valores de los sliders aplicación de app inventor

Dependencies:   mbed

slider.cpp

Committer:
PROCESADORES_2017_2
Date:
2017-11-28
Revision:
0:9575c67ccb2d

File content as of revision 0:9575c67ccb2d:

 
#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(PTB1); //Configuro una salida PWM; 
PwmOut ledR(LED1);
PwmOut ledV(LED2);
PwmOut ledA(LED3);
 
 
 
int main()
{
    ledR=ledV=ledA=1;
    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 val;
    
    char c ; //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())
       {    
            
            c = BT.getc(); //Leo el valor del bluetooth;
            //LED ROJO---------------------------------------------------------
            
            //el primer slider entrega valores entre 0-100
            
            if ((c>0) && (c<=100)){
            
            val= (int)(c);
                        
            float p1= float(val);
            float p2=p1/100;
            if (p2<0.2){
                p2=0;
                }
            ledR=(1-p2);
            
            //pc.printf("val p %.2f\n", p2);
            //wait(0.2);
                
            }
            
            //LED VERDE
            
            //el segundo slider entrega valores entre 100-200
            if ((c>100) && (c<=200)){
                     
             val= (int)(c);
             val=val-100;   //para que quede valor entre 0-100
            
            float p1= float(val);  //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);
                
            }
            
            //LED AZUL
               if ((c>200) && (c<=300)){
                 
                if(c>255){
                    ledA=0;    
                    ledR=1;
                    ledV=1;
                        }
                                               
                        else {
                        
                        val= (int)(c);
                        val=val-200;
                                              
                        //pc.printf("numero %i\n", v);
                        float p1= float(val);
                        
                        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;
                        //pc.printf("val p %.2f\n", p2);
                        //wait(0.2);
                        } 
            } 
        }
    }
}