Modulo Bluetooh controla PWM de un LED

Dependencies:   mbed

Committer:
junmorenodi
Date:
Thu Jul 11 13:31:33 2019 +0000
Revision:
1:ccce94774ade
Parent:
0:9f953d3871c9
HC05 Corregido;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
junmorenodi 0:9f953d3871c9 1 #include "mbed.h"
junmorenodi 1:ccce94774ade 2 #include "vector"
junmorenodi 1:ccce94774ade 3 #include "string"
junmorenodi 1:ccce94774ade 4 #include "list"
junmorenodi 1:ccce94774ade 5 #include "math.h"
junmorenodi 1:ccce94774ade 6
junmorenodi 0:9f953d3871c9 7 Serial pc(USBTX, USBRX);
junmorenodi 0:9f953d3871c9 8 Serial blue(PG_14,PG_9);
junmorenodi 0:9f953d3871c9 9 DigitalOut led2(LED2);
junmorenodi 0:9f953d3871c9 10 DigitalOut led3(LED3);
junmorenodi 1:ccce94774ade 11 PwmOut ledPWM(D13);
junmorenodi 1:ccce94774ade 12 float power(float base,int potencia);
junmorenodi 0:9f953d3871c9 13
junmorenodi 1:ccce94774ade 14 using namespace std;
junmorenodi 0:9f953d3871c9 15
junmorenodi 1:ccce94774ade 16 float power(float base,int potencia){
junmorenodi 1:ccce94774ade 17 float resultado=0;
junmorenodi 1:ccce94774ade 18 if(potencia>1){
junmorenodi 1:ccce94774ade 19 for(int i=1;i<potencia;i++){
junmorenodi 1:ccce94774ade 20 resultado=resultado+base*base;
junmorenodi 1:ccce94774ade 21 }
junmorenodi 1:ccce94774ade 22 }else if(potencia==1){
junmorenodi 1:ccce94774ade 23 resultado=base;
junmorenodi 1:ccce94774ade 24 }else{
junmorenodi 1:ccce94774ade 25 resultado=1;
junmorenodi 1:ccce94774ade 26 }
junmorenodi 1:ccce94774ade 27 return resultado;
junmorenodi 1:ccce94774ade 28 }
junmorenodi 1:ccce94774ade 29
junmorenodi 0:9f953d3871c9 30 int main() {
junmorenodi 0:9f953d3871c9 31 blue.baud(9600);
junmorenodi 0:9f953d3871c9 32 pc.baud(9600);
junmorenodi 0:9f953d3871c9 33 pc.printf("Start \r\n");
junmorenodi 1:ccce94774ade 34 int i=0,cont=0;
junmorenodi 0:9f953d3871c9 35 float data_sent=0;
junmorenodi 0:9f953d3871c9 36 float unid=0;
junmorenodi 0:9f953d3871c9 37 float dec=0;
junmorenodi 0:9f953d3871c9 38 float cent=0;
junmorenodi 0:9f953d3871c9 39 float new_data=0;
junmorenodi 0:9f953d3871c9 40 float period=0.001;
junmorenodi 0:9f953d3871c9 41 float duty=1.0f;
junmorenodi 0:9f953d3871c9 42
junmorenodi 0:9f953d3871c9 43 /*
junmorenodi 0:9f953d3871c9 44 while(1) {
junmorenodi 0:9f953d3871c9 45
junmorenodi 0:9f953d3871c9 46 if(blue.readable())
junmorenodi 0:9f953d3871c9 47 {
junmorenodi 0:9f953d3871c9 48 data_sent=blue.getc();
junmorenodi 0:9f953d3871c9 49 //pc.putc(blue.getc());
junmorenodi 0:9f953d3871c9 50 pc.putc(data_sent);
junmorenodi 0:9f953d3871c9 51 led1=!led1;
junmorenodi 0:9f953d3871c9 52 }
junmorenodi 0:9f953d3871c9 53 if(pc.readable())
junmorenodi 0:9f953d3871c9 54 { data_sent=pc.getc();
junmorenodi 0:9f953d3871c9 55 //blue.putc(pc.getc());
junmorenodi 0:9f953d3871c9 56 blue.putc(data_sent+1);
junmorenodi 0:9f953d3871c9 57 led2=!led2;
junmorenodi 0:9f953d3871c9 58 }
junmorenodi 0:9f953d3871c9 59
junmorenodi 0:9f953d3871c9 60
junmorenodi 0:9f953d3871c9 61 }*/
junmorenodi 0:9f953d3871c9 62 while(1){
junmorenodi 1:ccce94774ade 63 unid=0;
junmorenodi 1:ccce94774ade 64 dec=0;
junmorenodi 1:ccce94774ade 65 cent=0;
junmorenodi 1:ccce94774ade 66 for ( i=0; i<3;i++){
junmorenodi 1:ccce94774ade 67 data_sent=blue.getc();
junmorenodi 1:ccce94774ade 68 if(data_sent==97){
junmorenodi 1:ccce94774ade 69 break;
junmorenodi 1:ccce94774ade 70 }else{
junmorenodi 1:ccce94774ade 71 data_sent=data_sent-'0';
junmorenodi 1:ccce94774ade 72 if (i==0){
junmorenodi 1:ccce94774ade 73 cent=data_sent;
junmorenodi 1:ccce94774ade 74 }
junmorenodi 1:ccce94774ade 75 if (i==1){
junmorenodi 1:ccce94774ade 76 dec=data_sent;
junmorenodi 1:ccce94774ade 77 }
junmorenodi 1:ccce94774ade 78 if (i==2){
junmorenodi 1:ccce94774ade 79 unid=data_sent;
junmorenodi 1:ccce94774ade 80 }
junmorenodi 1:ccce94774ade 81 }
junmorenodi 1:ccce94774ade 82 cont=i;
junmorenodi 0:9f953d3871c9 83 }
junmorenodi 1:ccce94774ade 84 wait(1);
junmorenodi 1:ccce94774ade 85 cent=cent*power(10,cont);
junmorenodi 1:ccce94774ade 86 dec=dec*power(10,cont-1);
junmorenodi 1:ccce94774ade 87 unid=unid*power(10,cont-2);
junmorenodi 1:ccce94774ade 88 pc.printf("Cont %.1i \r\n", cont);
junmorenodi 1:ccce94774ade 89 pc.printf("Centenas %.1f \r\n", cent);
junmorenodi 1:ccce94774ade 90 pc.printf("Decenas %.1f \r\n", dec);
junmorenodi 1:ccce94774ade 91 pc.printf("Unidades %.1f \r\n", unid);
junmorenodi 1:ccce94774ade 92 new_data=unid+dec+cent;
junmorenodi 0:9f953d3871c9 93
junmorenodi 1:ccce94774ade 94 if (new_data==100.0){
junmorenodi 1:ccce94774ade 95 led2=1;
junmorenodi 1:ccce94774ade 96 led3=0;
junmorenodi 0:9f953d3871c9 97 }
junmorenodi 1:ccce94774ade 98 else{
junmorenodi 1:ccce94774ade 99 led3=1;
junmorenodi 1:ccce94774ade 100 led2=0;
junmorenodi 0:9f953d3871c9 101 }
junmorenodi 1:ccce94774ade 102 duty=new_data/100;
junmorenodi 1:ccce94774ade 103 ledPWM.period(period);
junmorenodi 1:ccce94774ade 104 ledPWM.write(duty);
junmorenodi 0:9f953d3871c9 105 pc.printf("Valor Data_Sent: %.1f \r\n", new_data);
junmorenodi 0:9f953d3871c9 106 pc.printf("PWM Duty Cycle: %.2f %\r\n", duty*100);
junmorenodi 1:ccce94774ade 107 }
junmorenodi 1:ccce94774ade 108 }