Tarea encender un led variar su intensidad con slider, utilizando appinventor.

Dependencies:   mbed

Committer:
caapalacioto
Date:
Sun Nov 26 22:47:35 2017 +0000
Revision:
0:224b47265962
Child:
1:802d25cbc918
led con sleider y app inventor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caapalacioto 0:224b47265962 1 #include "mbed.h"
caapalacioto 0:224b47265962 2 #include "string.h"
caapalacioto 0:224b47265962 3
caapalacioto 0:224b47265962 4 Serial device(PTE0, PTE1); // tx, rx
caapalacioto 0:224b47265962 5 Serial pc(USBTX,USBRX); // pc
caapalacioto 0:224b47265962 6 PwmOut rojo(LED1);
caapalacioto 0:224b47265962 7 PwmOut verde(LED2);
caapalacioto 0:224b47265962 8 PwmOut azul(LED3);
caapalacioto 0:224b47265962 9 int periodo;
caapalacioto 0:224b47265962 10 char buffer[10], led[0], d[0];// TAMAÑO DEL BUFER
caapalacioto 0:224b47265962 11 Timer t; //VALOR DEL TIEMPO
caapalacioto 0:224b47265962 12 int i = 0, j;
caapalacioto 0:224b47265962 13 int c=0;
caapalacioto 0:224b47265962 14 float r;
caapalacioto 0:224b47265962 15
caapalacioto 0:224b47265962 16
caapalacioto 0:224b47265962 17 int readBuffer(char *buffer,int count) //esta funcion lee un bufer de datos
caapalacioto 0:224b47265962 18 {
caapalacioto 0:224b47265962 19 int i=0;
caapalacioto 0:224b47265962 20 t.start(); //CUENTA EL TIEMPO DE CONEXION E INICIA
caapalacioto 0:224b47265962 21 while(1) {
caapalacioto 0:224b47265962 22 while (device.readable()) {
caapalacioto 0:224b47265962 23 char c = device.getc();
caapalacioto 0:224b47265962 24 if (c == '\r' || c == '\n') c = '$';//si se envia fin de linea o de caracter inserta $
caapalacioto 0:224b47265962 25 buffer[i++] = c;//mete al bufer el caracter leido
caapalacioto 0:224b47265962 26 if(i > count)break;//sale del loop si ya detecto terminacion
caapalacioto 0:224b47265962 27 }
caapalacioto 0:224b47265962 28 if(i > count)break;
caapalacioto 0:224b47265962 29 if(t.read() > 1) { //MAS DE UN SEGUNDO DE ESPERA SE SALE Y REINICA EL RELOJ Y SE SALE
caapalacioto 0:224b47265962 30 t.stop();
caapalacioto 0:224b47265962 31 t.reset();
caapalacioto 0:224b47265962 32 break;
caapalacioto 0:224b47265962 33 }
caapalacioto 0:224b47265962 34 }
caapalacioto 0:224b47265962 35 return 0;
caapalacioto 0:224b47265962 36 }
caapalacioto 0:224b47265962 37
caapalacioto 0:224b47265962 38 void cleanBuffer(char *buffer, int count) //esta funcion limpia el bufer
caapalacioto 0:224b47265962 39 {
caapalacioto 0:224b47265962 40 for(int i=0; i < count; i++) {
caapalacioto 0:224b47265962 41 buffer[i] = '\0';
caapalacioto 0:224b47265962 42 }
caapalacioto 0:224b47265962 43 }
caapalacioto 0:224b47265962 44
caapalacioto 0:224b47265962 45
caapalacioto 0:224b47265962 46
caapalacioto 0:224b47265962 47 int main()
caapalacioto 0:224b47265962 48 {
caapalacioto 0:224b47265962 49 device.baud(9600);
caapalacioto 0:224b47265962 50 device.format(8,Serial::None,1);
caapalacioto 0:224b47265962 51 pc.baud(9600); // asigno baudios y configuro puerto serie de la PC
caapalacioto 0:224b47265962 52 pc.format(8,Serial::None,1);
caapalacioto 0:224b47265962 53 periodo=90; // Periodo del pulso
caapalacioto 0:224b47265962 54
caapalacioto 0:224b47265962 55 // apago los led
caapalacioto 0:224b47265962 56 verde=1;
caapalacioto 0:224b47265962 57 rojo=1;
caapalacioto 0:224b47265962 58 azul=1;
caapalacioto 0:224b47265962 59
caapalacioto 0:224b47265962 60 // Asignamos el periodo del pulso a los leds
caapalacioto 0:224b47265962 61 azul.period_ms(periodo);
caapalacioto 0:224b47265962 62 rojo.period_ms(periodo);
caapalacioto 0:224b47265962 63 verde.period_ms(periodo);
caapalacioto 0:224b47265962 64 verde= 0;
caapalacioto 0:224b47265962 65 wait(1.5);
caapalacioto 0:224b47265962 66 verde=1;
caapalacioto 0:224b47265962 67 while (1) {
caapalacioto 0:224b47265962 68
caapalacioto 0:224b47265962 69 if (device.readable()) {
caapalacioto 0:224b47265962 70 readBuffer(buffer,10);
caapalacioto 0:224b47265962 71 wait(0.1);
caapalacioto 0:224b47265962 72 sscanf(buffer,"%c %s",d,led); //la informacion llega con una letra que indica el color y un numero que indica el valor
caapalacioto 0:224b47265962 73 r=atof(d);
caapalacioto 0:224b47265962 74 if (led[0]=='R') //rojo
caapalacioto 0:224b47265962 75 {
caapalacioto 0:224b47265962 76 rojo=(1-r*0.01);
caapalacioto 0:224b47265962 77 pc.putc(r);
caapalacioto 0:224b47265962 78 }
caapalacioto 0:224b47265962 79 if (led[0]=='A') //amarillo
caapalacioto 0:224b47265962 80 {
caapalacioto 0:224b47265962 81 azul=(1-r*0.01);
caapalacioto 0:224b47265962 82 pc.putc(r);
caapalacioto 0:224b47265962 83 }
caapalacioto 0:224b47265962 84 if (led[0]=='V') //verde
caapalacioto 0:224b47265962 85 {
caapalacioto 0:224b47265962 86 verde=(1-r*0.01);
caapalacioto 0:224b47265962 87 pc.putc(r);
caapalacioto 0:224b47265962 88 }
caapalacioto 0:224b47265962 89 }
caapalacioto 0:224b47265962 90 cleanBuffer(buffer,1); // limpiamos buffer
caapalacioto 0:224b47265962 91 }
caapalacioto 0:224b47265962 92 }
caapalacioto 0:224b47265962 93