Recibe codigo ascii desde app inventor y enciende 3 leds proporcional a la posicion cada slider
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
}
}
}