Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:141d63840bef, 2019-06-20 (annotated)
- Committer:
- vinibonelli
- Date:
- Thu Jun 20 00:18:28 2019 +0000
- Revision:
- 0:141d63840bef
Projeto Final
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| vinibonelli | 0:141d63840bef | 1 | #include "mbed.h" |
| vinibonelli | 0:141d63840bef | 2 | |
| vinibonelli | 0:141d63840bef | 3 | Serial pc(USBTX,USBRX); |
| vinibonelli | 0:141d63840bef | 4 | |
| vinibonelli | 0:141d63840bef | 5 | InterruptIn Pulso(D11); |
| vinibonelli | 0:141d63840bef | 6 | |
| vinibonelli | 0:141d63840bef | 7 | DigitalOut LED(LED1); |
| vinibonelli | 0:141d63840bef | 8 | |
| vinibonelli | 0:141d63840bef | 9 | DigitalIn botao(PC_13); |
| vinibonelli | 0:141d63840bef | 10 | |
| vinibonelli | 0:141d63840bef | 11 | AnalogIn Sensor_Carga(A0); |
| vinibonelli | 0:141d63840bef | 12 | AnalogIn Sensor_Pedal(A2); |
| vinibonelli | 0:141d63840bef | 13 | |
| vinibonelli | 0:141d63840bef | 14 | DigitalOut T_Vela_1(D2); |
| vinibonelli | 0:141d63840bef | 15 | DigitalOut T_Vela_2(D3); |
| vinibonelli | 0:141d63840bef | 16 | DigitalOut T_Vela_3(D4); |
| vinibonelli | 0:141d63840bef | 17 | DigitalOut T_Vela_4(D6); |
| vinibonelli | 0:141d63840bef | 18 | |
| vinibonelli | 0:141d63840bef | 19 | DigitalOut T_Injecao_1(D7); |
| vinibonelli | 0:141d63840bef | 20 | DigitalOut T_Injecao_2(D8); |
| vinibonelli | 0:141d63840bef | 21 | DigitalOut T_Injecao_3(D9); |
| vinibonelli | 0:141d63840bef | 22 | DigitalOut T_Injecao_4(D10); |
| vinibonelli | 0:141d63840bef | 23 | |
| vinibonelli | 0:141d63840bef | 24 | Timeout Vela; |
| vinibonelli | 0:141d63840bef | 25 | Timeout Injecao; |
| vinibonelli | 0:141d63840bef | 26 | |
| vinibonelli | 0:141d63840bef | 27 | Timer t; |
| vinibonelli | 0:141d63840bef | 28 | Timer inj; |
| vinibonelli | 0:141d63840bef | 29 | float valor = 0.00000000; |
| vinibonelli | 0:141d63840bef | 30 | float valor_old = 0.00000000; |
| vinibonelli | 0:141d63840bef | 31 | int dentes = 0; |
| vinibonelli | 0:141d63840bef | 32 | int dentes_old = 0; |
| vinibonelli | 0:141d63840bef | 33 | int ciclo = 0; |
| vinibonelli | 0:141d63840bef | 34 | float t_ciclo = 0.000; |
| vinibonelli | 0:141d63840bef | 35 | float t_ciclo_inj = 0.000; |
| vinibonelli | 0:141d63840bef | 36 | float avanco_em_graus = 0.000; |
| vinibonelli | 0:141d63840bef | 37 | int avanco = 0; |
| vinibonelli | 0:141d63840bef | 38 | int t_injecao = 0; |
| vinibonelli | 0:141d63840bef | 39 | int trocou = 0; |
| vinibonelli | 0:141d63840bef | 40 | |
| vinibonelli | 0:141d63840bef | 41 | float avanco_float = 0; |
| vinibonelli | 0:141d63840bef | 42 | float freq = 0; |
| vinibonelli | 0:141d63840bef | 43 | float carga = 0; |
| vinibonelli | 0:141d63840bef | 44 | float pedal = 0; |
| vinibonelli | 0:141d63840bef | 45 | float pedal_norm = 0; |
| vinibonelli | 0:141d63840bef | 46 | float carga_norm = 0; |
| vinibonelli | 0:141d63840bef | 47 | |
| vinibonelli | 0:141d63840bef | 48 | void desligainjecao() |
| vinibonelli | 0:141d63840bef | 49 | { |
| vinibonelli | 0:141d63840bef | 50 | T_Injecao_1 = 0; |
| vinibonelli | 0:141d63840bef | 51 | T_Injecao_2 = 0; |
| vinibonelli | 0:141d63840bef | 52 | T_Injecao_3 = 0; |
| vinibonelli | 0:141d63840bef | 53 | T_Injecao_4 = 0; |
| vinibonelli | 0:141d63840bef | 54 | //Injecao.detach(); |
| vinibonelli | 0:141d63840bef | 55 | } |
| vinibonelli | 0:141d63840bef | 56 | |
| vinibonelli | 0:141d63840bef | 57 | void desligavela() |
| vinibonelli | 0:141d63840bef | 58 | { |
| vinibonelli | 0:141d63840bef | 59 | T_Vela_1 = 0; |
| vinibonelli | 0:141d63840bef | 60 | T_Vela_2 = 0; |
| vinibonelli | 0:141d63840bef | 61 | T_Vela_3 = 0; |
| vinibonelli | 0:141d63840bef | 62 | T_Vela_4 = 0; |
| vinibonelli | 0:141d63840bef | 63 | } |
| vinibonelli | 0:141d63840bef | 64 | |
| vinibonelli | 0:141d63840bef | 65 | void tickcount() |
| vinibonelli | 0:141d63840bef | 66 | { |
| vinibonelli | 0:141d63840bef | 67 | |
| vinibonelli | 0:141d63840bef | 68 | t.stop(); |
| vinibonelli | 0:141d63840bef | 69 | valor_old = valor; |
| vinibonelli | 0:141d63840bef | 70 | valor = t.read(); |
| vinibonelli | 0:141d63840bef | 71 | |
| vinibonelli | 0:141d63840bef | 72 | LED=!LED; |
| vinibonelli | 0:141d63840bef | 73 | //dentes_old=dentes; |
| vinibonelli | 0:141d63840bef | 74 | dentes = dentes+1; |
| vinibonelli | 0:141d63840bef | 75 | //printf("dentes: %i \r\n", dentes); |
| vinibonelli | 0:141d63840bef | 76 | t.reset(); |
| vinibonelli | 0:141d63840bef | 77 | t.start(); |
| vinibonelli | 0:141d63840bef | 78 | } |
| vinibonelli | 0:141d63840bef | 79 | |
| vinibonelli | 0:141d63840bef | 80 | void main() |
| vinibonelli | 0:141d63840bef | 81 | { |
| vinibonelli | 0:141d63840bef | 82 | printf("Programa comecando\r\n"); |
| vinibonelli | 0:141d63840bef | 83 | avanco_em_graus = 4; |
| vinibonelli | 0:141d63840bef | 84 | avanco = 0; //30*avanco_em_graus/180; |
| vinibonelli | 0:141d63840bef | 85 | t_injecao = 1; |
| vinibonelli | 0:141d63840bef | 86 | |
| vinibonelli | 0:141d63840bef | 87 | Pulso.rise(&tickcount); |
| vinibonelli | 0:141d63840bef | 88 | |
| vinibonelli | 0:141d63840bef | 89 | while(1) |
| vinibonelli | 0:141d63840bef | 90 | { |
| vinibonelli | 0:141d63840bef | 91 | carga = Sensor_Carga.read(); |
| vinibonelli | 0:141d63840bef | 92 | pedal = Sensor_Pedal.read(); |
| vinibonelli | 0:141d63840bef | 93 | pedal_norm = pedal*73+5; |
| vinibonelli | 0:141d63840bef | 94 | carga_norm = carga*100; |
| vinibonelli | 0:141d63840bef | 95 | |
| vinibonelli | 0:141d63840bef | 96 | avanco_em_graus = 0.0024*freq + 0.7188*carga_norm - 0.42902*pedal_norm; |
| vinibonelli | 0:141d63840bef | 97 | //t_injecao = 0.001*freq + 0.005*carga_norm + 0.007*pedal_norm; |
| vinibonelli | 0:141d63840bef | 98 | //t_injecao=0.0001*(10*carga_norm+10*pedal_norm); |
| vinibonelli | 0:141d63840bef | 99 | |
| vinibonelli | 0:141d63840bef | 100 | avanco_float = avanco_em_graus*60/360; |
| vinibonelli | 0:141d63840bef | 101 | int avanco = avanco_float; |
| vinibonelli | 0:141d63840bef | 102 | |
| vinibonelli | 0:141d63840bef | 103 | if (botao == 0){ |
| vinibonelli | 0:141d63840bef | 104 | printf("rpm: %f \r\n", freq ); |
| vinibonelli | 0:141d63840bef | 105 | printf("carga: %f \r\n", carga_norm); |
| vinibonelli | 0:141d63840bef | 106 | printf("pedal: %f \r\n", pedal_norm); |
| vinibonelli | 0:141d63840bef | 107 | printf("avanco: %i \r\n", avanco); |
| vinibonelli | 0:141d63840bef | 108 | printf("avanco em graus: %f \r\n", avanco_em_graus); |
| vinibonelli | 0:141d63840bef | 109 | } |
| vinibonelli | 0:141d63840bef | 110 | |
| vinibonelli | 0:141d63840bef | 111 | if (dentes != dentes_old) |
| vinibonelli | 0:141d63840bef | 112 | { |
| vinibonelli | 0:141d63840bef | 113 | dentes_old=dentes; |
| vinibonelli | 0:141d63840bef | 114 | freq = 1/(valor); |
| vinibonelli | 0:141d63840bef | 115 | if (valor >= valor_old) |
| vinibonelli | 0:141d63840bef | 116 | { |
| vinibonelli | 0:141d63840bef | 117 | t_ciclo = 30*valor_old; |
| vinibonelli | 0:141d63840bef | 118 | t_ciclo_inj = 0.000001/valor_old; |
| vinibonelli | 0:141d63840bef | 119 | } |
| vinibonelli | 0:141d63840bef | 120 | if (valor_old > valor) |
| vinibonelli | 0:141d63840bef | 121 | { |
| vinibonelli | 0:141d63840bef | 122 | t_ciclo = 30*valor; |
| vinibonelli | 0:141d63840bef | 123 | t_ciclo_inj = 0.000001/valor; |
| vinibonelli | 0:141d63840bef | 124 | } |
| vinibonelli | 0:141d63840bef | 125 | |
| vinibonelli | 0:141d63840bef | 126 | if (valor > 1.5f*valor_old) |
| vinibonelli | 0:141d63840bef | 127 | { |
| vinibonelli | 0:141d63840bef | 128 | dentes = 0; |
| vinibonelli | 0:141d63840bef | 129 | } |
| vinibonelli | 0:141d63840bef | 130 | if (dentes ==61) |
| vinibonelli | 0:141d63840bef | 131 | { |
| vinibonelli | 0:141d63840bef | 132 | dentes = 0; |
| vinibonelli | 0:141d63840bef | 133 | } |
| vinibonelli | 0:141d63840bef | 134 | |
| vinibonelli | 0:141d63840bef | 135 | // IGNICAO |
| vinibonelli | 0:141d63840bef | 136 | if ((dentes == 57-avanco) and (ciclo == 0)) |
| vinibonelli | 0:141d63840bef | 137 | { |
| vinibonelli | 0:141d63840bef | 138 | T_Vela_1 = 1; |
| vinibonelli | 0:141d63840bef | 139 | Vela.attach(&desligavela, 0.1f*t_ciclo); |
| vinibonelli | 0:141d63840bef | 140 | } |
| vinibonelli | 0:141d63840bef | 141 | |
| vinibonelli | 0:141d63840bef | 142 | if ((dentes == 27-avanco) and (ciclo == 0)) |
| vinibonelli | 0:141d63840bef | 143 | { |
| vinibonelli | 0:141d63840bef | 144 | T_Vela_2 = 1; |
| vinibonelli | 0:141d63840bef | 145 | Vela.attach(&desligavela, 0.1f*t_ciclo); |
| vinibonelli | 0:141d63840bef | 146 | |
| vinibonelli | 0:141d63840bef | 147 | if (trocou == 0) |
| vinibonelli | 0:141d63840bef | 148 | { |
| vinibonelli | 0:141d63840bef | 149 | ciclo=1; |
| vinibonelli | 0:141d63840bef | 150 | trocou = 1; |
| vinibonelli | 0:141d63840bef | 151 | } |
| vinibonelli | 0:141d63840bef | 152 | } |
| vinibonelli | 0:141d63840bef | 153 | |
| vinibonelli | 0:141d63840bef | 154 | if ((dentes == 57-avanco) and (ciclo == 1)) |
| vinibonelli | 0:141d63840bef | 155 | { |
| vinibonelli | 0:141d63840bef | 156 | T_Vela_3 = 1; |
| vinibonelli | 0:141d63840bef | 157 | Vela.attach(&desligavela, 0.1f*t_ciclo); |
| vinibonelli | 0:141d63840bef | 158 | } |
| vinibonelli | 0:141d63840bef | 159 | |
| vinibonelli | 0:141d63840bef | 160 | if ((dentes == 27-avanco) and (ciclo == 1) and (trocou == 0)) |
| vinibonelli | 0:141d63840bef | 161 | { |
| vinibonelli | 0:141d63840bef | 162 | T_Vela_4 = 1; |
| vinibonelli | 0:141d63840bef | 163 | Vela.attach(&desligavela, 0.1f*t_ciclo); |
| vinibonelli | 0:141d63840bef | 164 | |
| vinibonelli | 0:141d63840bef | 165 | if (trocou == 0) |
| vinibonelli | 0:141d63840bef | 166 | { |
| vinibonelli | 0:141d63840bef | 167 | ciclo = 0; |
| vinibonelli | 0:141d63840bef | 168 | trocou=1; |
| vinibonelli | 0:141d63840bef | 169 | } |
| vinibonelli | 0:141d63840bef | 170 | } |
| vinibonelli | 0:141d63840bef | 171 | |
| vinibonelli | 0:141d63840bef | 172 | // INJECAO |
| vinibonelli | 0:141d63840bef | 173 | if ((dentes == 26) and (ciclo == 0)) |
| vinibonelli | 0:141d63840bef | 174 | { |
| vinibonelli | 0:141d63840bef | 175 | T_Injecao_1 = 1; |
| vinibonelli | 0:141d63840bef | 176 | //inj.start(); |
| vinibonelli | 0:141d63840bef | 177 | Injecao.attach(&desligainjecao, t_ciclo_inj); |
| vinibonelli | 0:141d63840bef | 178 | } |
| vinibonelli | 0:141d63840bef | 179 | |
| vinibonelli | 0:141d63840bef | 180 | if ((dentes == 56) and (ciclo == 0)) |
| vinibonelli | 0:141d63840bef | 181 | { |
| vinibonelli | 0:141d63840bef | 182 | T_Injecao_2 = 1; |
| vinibonelli | 0:141d63840bef | 183 | //inj.start(); |
| vinibonelli | 0:141d63840bef | 184 | Injecao.attach(&desligainjecao, t_ciclo_inj); |
| vinibonelli | 0:141d63840bef | 185 | } |
| vinibonelli | 0:141d63840bef | 186 | |
| vinibonelli | 0:141d63840bef | 187 | if ((dentes == 26) and (ciclo == 1)) |
| vinibonelli | 0:141d63840bef | 188 | { |
| vinibonelli | 0:141d63840bef | 189 | T_Injecao_3 = 1; |
| vinibonelli | 0:141d63840bef | 190 | //inj.start(); |
| vinibonelli | 0:141d63840bef | 191 | Injecao.attach(&desligainjecao, t_ciclo_inj); |
| vinibonelli | 0:141d63840bef | 192 | } |
| vinibonelli | 0:141d63840bef | 193 | |
| vinibonelli | 0:141d63840bef | 194 | if ((dentes == 56) and (ciclo == 1)) |
| vinibonelli | 0:141d63840bef | 195 | { |
| vinibonelli | 0:141d63840bef | 196 | T_Injecao_4 = 1; |
| vinibonelli | 0:141d63840bef | 197 | //inj.start(); |
| vinibonelli | 0:141d63840bef | 198 | Injecao.attach(&desligainjecao, t_ciclo_inj); |
| vinibonelli | 0:141d63840bef | 199 | } |
| vinibonelli | 0:141d63840bef | 200 | |
| vinibonelli | 0:141d63840bef | 201 | trocou=0; |
| vinibonelli | 0:141d63840bef | 202 | |
| vinibonelli | 0:141d63840bef | 203 | /*if (inj.read() > t_injecao) |
| vinibonelli | 0:141d63840bef | 204 | { |
| vinibonelli | 0:141d63840bef | 205 | T_Injecao_1 = 0; |
| vinibonelli | 0:141d63840bef | 206 | T_Injecao_2 = 0; |
| vinibonelli | 0:141d63840bef | 207 | T_Injecao_3 = 0; |
| vinibonelli | 0:141d63840bef | 208 | T_Injecao_4 = 0; |
| vinibonelli | 0:141d63840bef | 209 | desligainjecao(); |
| vinibonelli | 0:141d63840bef | 210 | inj.stop(); |
| vinibonelli | 0:141d63840bef | 211 | inj.reset(); |
| vinibonelli | 0:141d63840bef | 212 | }*/ |
| vinibonelli | 0:141d63840bef | 213 | } |
| vinibonelli | 0:141d63840bef | 214 | } |
| vinibonelli | 0:141d63840bef | 215 | } |
| vinibonelli | 0:141d63840bef | 216 |