Programa sem limites de tempo de injecao e rotacao

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Thu Apr 11 13:21:15 2019 +0000
Revision:
7:8575dc24281f
Parent:
6:111a7f1b978f
Programa sem limites de tempo de injecao e rotacao

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:b5a9e0614efd 1 #include "mbed.h"
Marcelocostanzo 5:e04419b1e369 2
Marcelocostanzo 7:8575dc24281f 3 Ticker flipper;
Marcelocostanzo 5:e04419b1e369 4
Marcelocostanzo 7:8575dc24281f 5 DigitalOut controlLED(D13);
Marcelocostanzo 7:8575dc24281f 6 DigitalOut inj_1(D2);
Marcelocostanzo 7:8575dc24281f 7 DigitalOut inj_2(D3);
Marcelocostanzo 7:8575dc24281f 8 DigitalOut inj_3(D4);
Marcelocostanzo 7:8575dc24281f 9 DigitalOut inj_4(D5);
Marcelocostanzo 6:111a7f1b978f 10
Marcelocostanzo 6:111a7f1b978f 11 //Timer t1;
Marcelocostanzo 7:8575dc24281f 12 Timer t2;
Marcelocostanzo 4:9da4a46f38bc 13
Marcelocostanzo 6:111a7f1b978f 14 Serial device(USBTX, USBRX); // tx, rx
Marcelocostanzo 6:111a7f1b978f 15
Marcelocostanzo 7:8575dc24281f 16 bool flag;
Marcelocostanzo 7:8575dc24281f 17 float RPS = 0;
Marcelocostanzo 7:8575dc24281f 18 int inj_time = 10000;
Marcelocostanzo 6:111a7f1b978f 19
Marcelocostanzo 6:111a7f1b978f 20 void flip()
Marcelocostanzo 2:3c69c0772709 21 {
Marcelocostanzo 6:111a7f1b978f 22 flag=!flag;
Marcelocostanzo 6:111a7f1b978f 23 controlLED=!controlLED;
Marcelocostanzo 5:e04419b1e369 24 }
Marcelocostanzo 5:e04419b1e369 25
Marcelocostanzo 7:8575dc24281f 26 void set_parameters()
Marcelocostanzo 6:111a7f1b978f 27 {
Marcelocostanzo 7:8575dc24281f 28 char c[8];
Marcelocostanzo 7:8575dc24281f 29 char parameter = 0x00;
Marcelocostanzo 7:8575dc24281f 30 int i = 0;
Marcelocostanzo 7:8575dc24281f 31 int value;
Marcelocostanzo 7:8575dc24281f 32 int RPM;
Marcelocostanzo 7:8575dc24281f 33
Marcelocostanzo 7:8575dc24281f 34 parameter = device.getc();
Marcelocostanzo 7:8575dc24281f 35
Marcelocostanzo 7:8575dc24281f 36 if((parameter == 'T') || (parameter == 'R')) //T or R
Marcelocostanzo 7:8575dc24281f 37 {
Marcelocostanzo 7:8575dc24281f 38 while(c[i-1] != '\n')
Marcelocostanzo 7:8575dc24281f 39 {
Marcelocostanzo 7:8575dc24281f 40 c[i] = device.getc();
Marcelocostanzo 7:8575dc24281f 41 i++;
Marcelocostanzo 7:8575dc24281f 42 }
Marcelocostanzo 7:8575dc24281f 43 }
Marcelocostanzo 7:8575dc24281f 44
Marcelocostanzo 7:8575dc24281f 45 else
Marcelocostanzo 7:8575dc24281f 46 {
Marcelocostanzo 7:8575dc24281f 47 device.printf("Invalid command. Txxxxx to set injection time, Rxxxxx to set RPM\n\r");
Marcelocostanzo 7:8575dc24281f 48 device.fsync();
Marcelocostanzo 7:8575dc24281f 49 }
Marcelocostanzo 7:8575dc24281f 50
Marcelocostanzo 7:8575dc24281f 51 if(parameter == 'T')
Marcelocostanzo 7:8575dc24281f 52 {
Marcelocostanzo 7:8575dc24281f 53 value = atoi(c);
Marcelocostanzo 7:8575dc24281f 54 inj_time = value;
Marcelocostanzo 7:8575dc24281f 55
Marcelocostanzo 7:8575dc24281f 56 device.printf("Inj Time %i uS\n\r",inj_time);
Marcelocostanzo 7:8575dc24281f 57 }
Marcelocostanzo 7:8575dc24281f 58
Marcelocostanzo 7:8575dc24281f 59 if(parameter == 'R')
Marcelocostanzo 7:8575dc24281f 60 {
Marcelocostanzo 7:8575dc24281f 61 value = atoi(c);
Marcelocostanzo 7:8575dc24281f 62
Marcelocostanzo 7:8575dc24281f 63 RPM = value;
Marcelocostanzo 7:8575dc24281f 64
Marcelocostanzo 7:8575dc24281f 65 RPS = RPM / 60.0f;
Marcelocostanzo 7:8575dc24281f 66
Marcelocostanzo 7:8575dc24281f 67 RPS = RPS * 2; //multiplicador por 2 pois um ciclo otto são 2 voltas
Marcelocostanzo 7:8575dc24281f 68
Marcelocostanzo 7:8575dc24281f 69 RPS = 1.0f / RPS;
Marcelocostanzo 7:8575dc24281f 70
Marcelocostanzo 7:8575dc24281f 71 flipper.attach(&flip, RPS);
Marcelocostanzo 7:8575dc24281f 72
Marcelocostanzo 7:8575dc24281f 73 device.printf("%f S\n\r",RPS);
Marcelocostanzo 7:8575dc24281f 74 }
Marcelocostanzo 5:e04419b1e369 75 }
Marcelocostanzo 6:111a7f1b978f 76
Marcelocostanzo 6:111a7f1b978f 77 int main()
Marcelocostanzo 6:111a7f1b978f 78 {
Marcelocostanzo 7:8575dc24281f 79 bool valid_pulse;
Marcelocostanzo 7:8575dc24281f 80 int inj_counter = 1;
Marcelocostanzo 5:e04419b1e369 81
Marcelocostanzo 7:8575dc24281f 82 RPS = 1.0f;
Marcelocostanzo 7:8575dc24281f 83 flipper.attach(&flip, RPS);
Marcelocostanzo 2:3c69c0772709 84
Marcelocostanzo 7:8575dc24281f 85 device.printf("Start\n\r");
Marcelocostanzo 7:8575dc24281f 86
Marcelocostanzo 7:8575dc24281f 87 while(1)
Marcelocostanzo 6:111a7f1b978f 88 {
Marcelocostanzo 6:111a7f1b978f 89
Marcelocostanzo 6:111a7f1b978f 90 //t1.reset();
Marcelocostanzo 7:8575dc24281f 91 //t1.start();
Marcelocostanzo 7:8575dc24281f 92
Marcelocostanzo 7:8575dc24281f 93 if(device.readable())
Marcelocostanzo 7:8575dc24281f 94 {
Marcelocostanzo 7:8575dc24281f 95 set_parameters();
Marcelocostanzo 7:8575dc24281f 96 }
Marcelocostanzo 6:111a7f1b978f 97
Marcelocostanzo 6:111a7f1b978f 98
Marcelocostanzo 7:8575dc24281f 99 if(inj_counter > 4)
Marcelocostanzo 5:e04419b1e369 100 {
Marcelocostanzo 7:8575dc24281f 101 inj_counter = 1;
Marcelocostanzo 2:3c69c0772709 102 }
Marcelocostanzo 2:3c69c0772709 103
Marcelocostanzo 7:8575dc24281f 104 if(t2.read_us() > inj_time)
Marcelocostanzo 7:8575dc24281f 105 {
Marcelocostanzo 7:8575dc24281f 106 t2.stop();
Marcelocostanzo 7:8575dc24281f 107 inj_1 = 0;
Marcelocostanzo 7:8575dc24281f 108 inj_2 = 0;
Marcelocostanzo 7:8575dc24281f 109 inj_3 = 0;
Marcelocostanzo 7:8575dc24281f 110 inj_4 = 0;
Marcelocostanzo 7:8575dc24281f 111 }
Marcelocostanzo 7:8575dc24281f 112 if((inj_counter == 1) && (valid_pulse == 1))
Marcelocostanzo 2:3c69c0772709 113 {
Marcelocostanzo 7:8575dc24281f 114 valid_pulse = 0;
Marcelocostanzo 7:8575dc24281f 115 inj_1 = 1;
Marcelocostanzo 7:8575dc24281f 116 inj_2 = 0;
Marcelocostanzo 7:8575dc24281f 117 inj_3 = 0;
Marcelocostanzo 7:8575dc24281f 118 inj_4 = 0;
Marcelocostanzo 7:8575dc24281f 119 t2.reset();
Marcelocostanzo 7:8575dc24281f 120 t2.start();
Marcelocostanzo 6:111a7f1b978f 121 }
Marcelocostanzo 7:8575dc24281f 122
Marcelocostanzo 7:8575dc24281f 123 if((inj_counter == 2) && (valid_pulse == 1))
Marcelocostanzo 6:111a7f1b978f 124 {
Marcelocostanzo 7:8575dc24281f 125 valid_pulse = 0;
Marcelocostanzo 7:8575dc24281f 126 inj_1 = 0;
Marcelocostanzo 7:8575dc24281f 127 inj_2 = 0;
Marcelocostanzo 7:8575dc24281f 128 inj_3 = 1;
Marcelocostanzo 7:8575dc24281f 129 inj_4 = 0;
Marcelocostanzo 7:8575dc24281f 130 t2.reset();
Marcelocostanzo 7:8575dc24281f 131 t2.start();
Marcelocostanzo 2:3c69c0772709 132 }
Marcelocostanzo 5:e04419b1e369 133
Marcelocostanzo 7:8575dc24281f 134 if((inj_counter == 3) && (valid_pulse == 1))
Marcelocostanzo 6:111a7f1b978f 135 {
Marcelocostanzo 7:8575dc24281f 136 valid_pulse = 0;
Marcelocostanzo 7:8575dc24281f 137 inj_1 = 0;
Marcelocostanzo 7:8575dc24281f 138 inj_2 = 0;
Marcelocostanzo 7:8575dc24281f 139 inj_3 = 0;
Marcelocostanzo 7:8575dc24281f 140 inj_4 = 1;
Marcelocostanzo 7:8575dc24281f 141 t2.reset();
Marcelocostanzo 7:8575dc24281f 142 t2.start();
Marcelocostanzo 6:111a7f1b978f 143 }
Marcelocostanzo 6:111a7f1b978f 144
Marcelocostanzo 7:8575dc24281f 145 if((inj_counter == 4) && (valid_pulse == 1))
Marcelocostanzo 7:8575dc24281f 146 {
Marcelocostanzo 7:8575dc24281f 147 valid_pulse = 0;
Marcelocostanzo 7:8575dc24281f 148 inj_1 = 0;
Marcelocostanzo 7:8575dc24281f 149 inj_2 = 1;
Marcelocostanzo 7:8575dc24281f 150 inj_3 = 0;
Marcelocostanzo 7:8575dc24281f 151 inj_4 = 0;
Marcelocostanzo 7:8575dc24281f 152 t2.reset();
Marcelocostanzo 7:8575dc24281f 153 t2.start();
Marcelocostanzo 7:8575dc24281f 154 }
Marcelocostanzo 6:111a7f1b978f 155
Marcelocostanzo 6:111a7f1b978f 156
Marcelocostanzo 6:111a7f1b978f 157 if(flag==1)
Marcelocostanzo 6:111a7f1b978f 158 {
Marcelocostanzo 7:8575dc24281f 159 inj_counter++;
Marcelocostanzo 6:111a7f1b978f 160 flag=0;
Marcelocostanzo 7:8575dc24281f 161 valid_pulse = 1;
Marcelocostanzo 6:111a7f1b978f 162 }
Marcelocostanzo 6:111a7f1b978f 163
Marcelocostanzo 6:111a7f1b978f 164 //t1.stop();
Marcelocostanzo 6:111a7f1b978f 165 //printf("O ciclo levou: %i uS \n\r", t1.read_us());
mbed_official 0:b5a9e0614efd 166 }
Marcelocostanzo 2:3c69c0772709 167 }